2021-03-18 21:33:59 +01:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/xhtml;charset=UTF-8" / >
< meta http-equiv = "X-UA-Compatible" content = "IE=9" / >
< meta name = "generator" content = "Doxygen 1.8.13" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > Tutorial 24: CursorControl< / title >
< html xmlns = "http://www.w3.org/1999/xhtml" >
<!-- Wanted to avoid copying .css to each folder, so copied default .css from doxyen in here, kicked out most stuff we don't need for examples and modified some a little bit.
Target was having a single html in each example folder which is created from the main.cpp files and needs no files besides some images below media folder.
Feel free to improve :)
-->
< style >
body, table, div, p, dl {
font: 400 14px/22px;
}
body {
background-color: #F0F0F0;
color: black;
margin-left: 5%;
margin-right: 5%;
}
p.reference, p.definition {
font: 400 14px/22px;
}
.title {
font: 400 14px/28px;
font-size: 150%;
font-weight: bold;
margin: 10px 2px;
}
h1, h2, h3, h4, h5, h6 {
-webkit-transition: text-shadow 0.5s linear;
-moz-transition: text-shadow 0.5s linear;
-ms-transition: text-shadow 0.5s linear;
-o-transition: text-shadow 0.5s linear;
transition: text-shadow 0.5s linear;
margin-right: 15px;
}
caption {
font-weight: bold;
}
h3.version {
font-size: 90%;
text-align: center;
}
a {
color: #3D578C;
font-weight: normal;
text-decoration: none;
}
.contents a:visited {
color: #4665A2;
}
a:hover {
text-decoration: underline;
}
a.el {
font-weight: bold;
}
a.code, a.code:visited, a.line, a.line:visited {
color: #4665A2;
}
a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
color: #4665A2;
}
pre.fragment {
border: 1px solid #C4CFE5;
background-color: #FBFCFD;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
overflow: auto;
word-wrap: break-word;
font-size: 9pt;
line-height: 125%;
font-family: monospace, fixed;
font-size: 105%;
}
div.fragment {
padding: 0px;
margin: 4px 8px 4px 2px;
background-color: #FBFCFD;
border: 1px solid #C4CFE5;
}
div.line {
font-family: monospace, fixed;
font-size: 13px;
min-height: 13px;
line-height: 1.0;
text-wrap: unrestricted;
white-space: -moz-pre-wrap; /* Moz */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: pre-wrap; /* CSS3 */
word-wrap: break-word; /* IE 5.5+ */
text-indent: -53px;
padding-left: 53px;
padding-bottom: 0px;
margin: 0px;
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
div.contents {
margin-top: 10px;
margin-left: 12px;
margin-right: 8px;
}
div.center {
text-align: center;
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
div.center img {
border: 0px;
}
span.keyword {
color: #008000
}
span.keywordtype {
color: #604020
}
span.keywordflow {
color: #e08000
}
span.comment {
color: #800000
}
span.preprocessor {
color: #806020
}
span.stringliteral {
color: #002080
}
span.charliteral {
color: #008080
}
blockquote {
background-color: #F7F8FB;
border-left: 2px solid #9CAFD4;
margin: 0 24px 0 4px;
padding: 0 12px 0 16px;
}
hr {
height: 0px;
border: none;
border-top: 1px solid #4A6AAA;
}
address {
font-style: normal;
color: #2A3D61;
}
div.header {
background-image:url('nav_h.png');
background-repeat:repeat-x;
background-color: #F9FAFC;
margin: 0px;
border-bottom: 1px solid #C4CFE5;
}
div.headertitle {
padding: 5px 5px 5px 10px;
}
.image {
text-align: center;
}
.caption {
font-weight: bold;
}
div.zoom {
border: 1px solid #90A5CE;
}
tr.heading h2 {
margin-top: 12px;
margin-bottom: 4px;
}
< / style >
< / head >
< div id = "top" > <!-- do not remove this div, it is closed by doxygen! -->
<!-- END TITLEAREA -->
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
< / div > <!-- top -->
< div class = "header" >
< div class = "headertitle" >
< div class = "title" > Tutorial 24: CursorControl < / div > < / div >
< / div > <!-- header -->
< div class = "contents" >
< div class = "textblock" > < div class = "image" >
2021-03-18 22:50:11 +01:00
< img src = "../../media/example_screenshots/024shot.jpg" alt = "024shot.jpg" / >
2021-03-18 21:33:59 +01:00
< / div >
2021-03-18 22:50:11 +01:00
< p > Show how to modify cursors and offer some useful tool-functions for creating cursors. It can also be used for experiments with the mouse in general. < / p > < div class = "fragment" > < div class = "line" > < span class = "preprocessor" > #include < irrlicht.h> < / span > < / div > < div class = "line" > < span class = "preprocessor" > #include " driverChoice.h" < / span > < / div > < div class = "line" > < span class = "preprocessor" > #include " exampleHelper.h" < / span > < / div > < div class = "line" > < / div > < div class = "line" > < span class = "keyword" > using namespace < / span > irr;< / div > < div class = "line" > < span class = "keyword" > using namespace < / span > core;< / div > < div class = "line" > < span class = "keyword" > using namespace < / span > scene;< / div > < div class = "line" > < span class = "keyword" > using namespace < / span > video;< / div > < div class = "line" > < span class = "keyword" > using namespace < / span > io;< / div > < div class = "line" > < span class = "keyword" > using namespace < / span > gui;< / div > < div class = "line" > < / div > < div class = "line" > < span class = "preprocessor" > #ifdef _MSC_VER< / span > < / div > < div class = "line" > < span class = "preprocessor" > #pragma comment(lib, " Irrlicht.lib" )< / span > < / div > < div class = "line" > < span class = "preprocessor" > #endif< / span > < / div > < div class = "line" > < / div > < div class = "line" > < span class = "keyword" > const< / span > < span class = "keywordtype" > int< / span > DELAY_TIME = 3000;< / div > < div class = "line" > < / div > < div class = "line" > < span class = "keyword" > enum< / span > ETimerAction< / div > < div class = "line" > {< / div > < div class = "line" > ETA_MOUSE_VISIBLE,< / div > < div class = "line" > ETA_MOUSE_INVISIBLE,< / div > < div class = "line" > };< / div > < / div > <!-- fragment --> < p > Structure to allow delayed execution of some actions. < / p > < div class = "fragment" > < div class = "line" > < span class = "keyword" > struct < / span > TimerAction< / div > < div class = "line" > {< / div > < div class = "line" > u32 TargetTime;< / div > < div class = "line" > ETimerAction Action;< / div > < div class = "line" > };< / div > < / div > <!-- fragment --> < div class = "fragment" > < div class = "line" > < span class = "keyword" > struct < / span > SAppContext< / div > < div class = "line" > {< / div > < div class = "line" > SAppContext()< / div > < div class = "line" > : Device(0), InfoStatic(0), EventBox(0), CursorBox(0), SpriteBox(0)< / div > < div class = "line" > , ButtonSetVisible(0), ButtonSetInvisible(0), ButtonSimulateBadFps(0)< / div > < div class = "line" > , ButtonChangeIcon(0)< / div > < div class = "line" > , SimulateBadFps(false)< / div > < div class = "line" > {< / div > < div class = "line" > }< / div > < div class = "line" > < / div > < div class = "line" > < span class = "keywordtype" > void< / span > update()< / div > < div class = "line" > {< / div > < div class = "line" > < span class = "keywordflow" > if< / span > (!Device)< / div > < div class = "line" > < span class = "keywordflow" > return< / span > ;< / div > < div class = "line" > u32 timeNow = Device-> getTimer()-> getTime();< / div > < div class = "line" > < span class = "keywordflow" > for< / span > ( u32 i=0; i < TimerActions.size(); ++i )< / div > < div class = "line" > {< / div > < div class = "line" > < span class = "keywordflow" > if< / span > ( timeNow > = TimerActions[i].TargetTime )< / div > < div class = "line" > {< / div > < div class = "line" > runTimerAction(TimerActions[i]);< / div > < div class = "line" > TimerActions.erase(i);< / div > < div class = "line" > }< / div > < div class = "line" > < span class = "keywordflow" > else< / span > < / div > < div class = "line" > {< / div > < div class = "line" > ++i;< / div > < div class = "line" > }< / div > < div class = "line" > }< / div > < div class = "line" > }< / div > < div class = "line" > < / div > < div class = "line" > < span class = "keywordtype" > void< / span > runTimerAction(< span class = "keyword" > const< / span > TimerAction& action)< / div > < div class = "line" > {< / div > < div class = "line" > < span class = "keywordflow" > if< / span > (ETA_MOUSE_VISIBLE == action.Action)< / div > < div class = "line" > {< / div > < div class = "line" > Device-> getCursorControl()-> setVisible(< span class = "keyword" > true< / span > );< / div > < div class = "line" > ButtonSetVisible-> setEnabled(< span class = "keyword" > true< / span > );< / div > < div class = "line" > }< / div > < div class = "line
2021-03-18 21:33:59 +01:00
<!-- HTML footer for doxygen 1.8.13 -->
<!-- start footer part -->
< p > < / p >
< / body >
< / html >