mirror of
https://github.com/minetest/irrlicht.git
synced 2025-01-12 02:50:18 +01:00
Minor improvements and cleanup for example 24.CursorControl
- ESC now also makes cursor visible again (probably first key users press in panic usually) - Bunch of spelling fixes - Let all words in UI elements start with upper-case git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6317 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
parent
60538c3646
commit
f0c890d3ff
@ -1,6 +1,6 @@
|
|||||||
/** Example 024 CursorControl
|
/** Example 024 CursorControl
|
||||||
|
|
||||||
Show how to modify cursors and offer some useful tool-functions for creating cursors.
|
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.
|
It can also be used for experiments with the mouse in general.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ void PrintMouseEventName(const SEvent& event, stringw &result)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Helper function to print all the state information which get from a mouse-event into a stringw
|
Helper function to print all the state information from a mouse event into a stringw
|
||||||
*/
|
*/
|
||||||
void PrintMouseState(const SEvent& event, stringw &result)
|
void PrintMouseState(const SEvent& event, stringw &result)
|
||||||
{
|
{
|
||||||
@ -295,6 +295,17 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( event.EventType == EET_KEY_INPUT_EVENT)
|
||||||
|
{
|
||||||
|
// Allow invisible cursor to show up again when users presses ESC
|
||||||
|
if ( !event.KeyInput.PressedDown && event.KeyInput.Key == irr::KEY_ESCAPE )
|
||||||
|
{
|
||||||
|
TimerAction action;
|
||||||
|
action.Action = ETA_MOUSE_VISIBLE;
|
||||||
|
Context.runTimerAction(action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,7 +314,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Use several imagefiles as animation frames for a sprite which can be used as cursor icon.
|
Use several image files as animation frames for a sprite which can then be used as a cursor icon.
|
||||||
The images in those files all need to have the same size.
|
The images in those files all need to have the same size.
|
||||||
Return sprite index on success or -1 on failure
|
Return sprite index on success or -1 on failure
|
||||||
*/
|
*/
|
||||||
@ -345,7 +356,7 @@ s32 AddAnimatedIconToSpriteBank( gui::IGUISpriteBank * spriteBank, video::IVideo
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Use several images within one imagefile as animation frames for a sprite which can be used as cursor icon
|
Use several images within one image file as animation frames for a sprite which can then be used as a cursor icon
|
||||||
The sizes of the icons within that file all need to have the same size
|
The sizes of the icons within that file all need to have the same size
|
||||||
Return sprite index on success or -1 on failure
|
Return sprite index on success or -1 on failure
|
||||||
*/
|
*/
|
||||||
@ -433,8 +444,6 @@ int main()
|
|||||||
video::IVideoDriver* driver = device->getVideoDriver();
|
video::IVideoDriver* driver = device->getVideoDriver();
|
||||||
IGUIEnvironment* env = device->getGUIEnvironment();
|
IGUIEnvironment* env = device->getGUIEnvironment();
|
||||||
|
|
||||||
gui::IGUISpriteBank * SpriteBankIcons;
|
|
||||||
|
|
||||||
SAppContext context;
|
SAppContext context;
|
||||||
context.Device = device;
|
context.Device = device;
|
||||||
|
|
||||||
@ -443,23 +452,24 @@ int main()
|
|||||||
rectInfoStatic.UpperLeftCorner += dimension2di(0, 15);
|
rectInfoStatic.UpperLeftCorner += dimension2di(0, 15);
|
||||||
context.InfoStatic = env->addStaticText (L"", rectInfoStatic, true, true);
|
context.InfoStatic = env->addStaticText (L"", rectInfoStatic, true, true);
|
||||||
rect< s32 > rectEventBox(10,210, 200, 400);
|
rect< s32 > rectEventBox(10,210, 200, 400);
|
||||||
env->addStaticText (L"click events (new on top)", rectEventBox, true, true);
|
env->addStaticText (L"Click events (new on top)", rectEventBox, true, true);
|
||||||
rectEventBox.UpperLeftCorner += dimension2di(0, 15);
|
rectEventBox.UpperLeftCorner += dimension2di(0, 15);
|
||||||
context.EventBox = env->addListBox(rectEventBox);
|
context.EventBox = env->addListBox(rectEventBox);
|
||||||
rect< s32 > rectCursorBox(210,10, 400, 250);
|
rect< s32 > rectCursorBox(210,10, 400, 250);
|
||||||
env->addStaticText (L"cursors, click to set the active one", rectCursorBox, true, true);
|
env->addStaticText (L"Cursors, click to set the active one", rectCursorBox, true, true);
|
||||||
rectCursorBox.UpperLeftCorner += dimension2di(0, 15);
|
rectCursorBox.UpperLeftCorner += dimension2di(0, 15);
|
||||||
context.CursorBox = env->addListBox(rectCursorBox);
|
context.CursorBox = env->addListBox(rectCursorBox);
|
||||||
rect< s32 > rectSpriteBox(210,260, 400, 400);
|
rect< s32 > rectSpriteBox(210,260, 400, 400);
|
||||||
env->addStaticText (L"sprites", rectSpriteBox, true, true);
|
env->addStaticText (L"Sprites", rectSpriteBox, true, true);
|
||||||
rectSpriteBox.UpperLeftCorner += dimension2di(0, 15);
|
rectSpriteBox.UpperLeftCorner += dimension2di(0, 15);
|
||||||
context.SpriteBox = env->addListBox(rectSpriteBox);
|
context.SpriteBox = env->addListBox(rectSpriteBox);
|
||||||
|
|
||||||
context.ButtonSetVisible = env->addButton( rect<s32>( 410, 20, 560, 40 ), 0, -1, L"set visible (delayed)" );
|
context.ButtonSetVisible = env->addButton( rect<s32>( 410, 20, 560, 40 ), 0, -1, L"Set visible (delayed)" );
|
||||||
context.ButtonSetInvisible = env->addButton( rect<s32>( 410, 50, 560, 70 ), 0, -1, L"set invisible (delayed)" );
|
context.ButtonSetInvisible = env->addButton( rect<s32>( 410, 50, 560, 70 ), 0, -1, L"Set invisible (delayed)" );
|
||||||
context.ButtonSimulateBadFps = env->addButton( rect<s32>( 410, 80, 560, 100 ), 0, -1, L"simulate bad FPS" );
|
context.ButtonSimulateBadFps = env->addButton( rect<s32>( 410, 80, 560, 100 ), 0, -1, L"Simulate bad FPS" );
|
||||||
context.ButtonSimulateBadFps->setIsPushButton(true);
|
context.ButtonSimulateBadFps->setIsPushButton(true);
|
||||||
context.ButtonChangeIcon = env->addButton( rect<s32>( 410, 140, 560, 160 ), 0, -1, L"replace cursor icon\n(cursor+sprite must be selected)" );
|
s32 t = context.SpriteBox->getAbsolutePosition().UpperLeftCorner.Y;
|
||||||
|
context.ButtonChangeIcon = env->addButton( rect<s32>( 410, t, 560, t+20), 0, -1, L"Replace cursor icon\n(cursor+sprite must be selected)" );
|
||||||
|
|
||||||
// set the names for all the system cursors
|
// set the names for all the system cursors
|
||||||
for ( int i=0; i < (int)gui::ECI_COUNT; ++i )
|
for ( int i=0; i < (int)gui::ECI_COUNT; ++i )
|
||||||
@ -470,7 +480,7 @@ int main()
|
|||||||
/*
|
/*
|
||||||
Create sprites which then can be used as cursor icons.
|
Create sprites which then can be used as cursor icons.
|
||||||
*/
|
*/
|
||||||
SpriteBankIcons = env->addEmptySpriteBank(io::path("cursor_icons"));
|
gui::IGUISpriteBank * SpriteBankIcons = env->addEmptySpriteBank(io::path("cursor_icons"));
|
||||||
context.SpriteBox->setSpriteBank(SpriteBankIcons);
|
context.SpriteBox->setSpriteBank(SpriteBankIcons);
|
||||||
|
|
||||||
const io::path mediaPath = getExampleMediaPath();
|
const io::path mediaPath = getExampleMediaPath();
|
||||||
@ -546,7 +556,8 @@ int main()
|
|||||||
driver->endScene();
|
driver->endScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
// By simulating bad fps we can find out if hardware-support for cursors works or not. If it works the cursor will move as usual,while it otherwise will just update with 2 fps now.
|
// By simulating a bad frame rate we can find out if hardware support for cursors works or not.
|
||||||
|
// If it works the cursor will move as usual, otherwise it will update with only 2 fps when SimulateBadFps is true.
|
||||||
if ( context.SimulateBadFps )
|
if ( context.SimulateBadFps )
|
||||||
{
|
{
|
||||||
device->sleep(500); // 2 fps
|
device->sleep(500); // 2 fps
|
||||||
|
Loading…
Reference in New Issue
Block a user