added mousebutton_{up/down} and mouse_motion events, renamed "pressed" to "down" and "released" to "up" in event names
git-svn-id: svn://anubis/anaglym/trunk@112 99a6e188-d820-4881-8870-2d33a10e2619
This commit is contained in:
parent
bd4eab495c
commit
66e8b9c015
56
Engine.cc
56
Engine.cc
@ -51,10 +51,10 @@ Engine::Engine(const string & path)
|
|||||||
userEvent.user.code = 0;
|
userEvent.user.code = 0;
|
||||||
|
|
||||||
m_event_update_present = false;
|
m_event_update_present = false;
|
||||||
m_event_key_pressed_present = false;
|
m_event_key_down_present = false;
|
||||||
m_event_key_released_present = false;
|
m_event_key_up_present = false;
|
||||||
m_event_mousebutton_pressed_present = false;
|
m_event_mousebutton_down_present = false;
|
||||||
m_event_mousebutton_released_present = false;
|
m_event_mousebutton_up_present = false;
|
||||||
m_event_mouse_motion_present = false;
|
m_event_mouse_motion_present = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,10 +102,10 @@ bool Engine::load(const char * program)
|
|||||||
}
|
}
|
||||||
|
|
||||||
checkForFunction("update_event", update);
|
checkForFunction("update_event", update);
|
||||||
checkForFunction("key_pressed_event", key_pressed);
|
checkForFunction("key_down_event", key_down);
|
||||||
checkForFunction("key_released_event", key_released);
|
checkForFunction("key_up_event", key_up);
|
||||||
checkForFunction("mousebutton_pressed_event", mousebutton_pressed);
|
checkForFunction("mousebutton_down_event", mousebutton_down);
|
||||||
checkForFunction("mousebutton_released_event", mousebutton_released);
|
checkForFunction("mousebutton_up_event", mousebutton_up);
|
||||||
checkForFunction("mouse_motion_event", mouse_motion);
|
checkForFunction("mouse_motion_event", mouse_motion);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -316,17 +316,17 @@ void Engine::run()
|
|||||||
{
|
{
|
||||||
goto RET;
|
goto RET;
|
||||||
}
|
}
|
||||||
key_pressed_event(event.key.keysym.sym);
|
key_down_event(event.key.keysym.sym);
|
||||||
break;
|
break;
|
||||||
case SDL_KEYUP:
|
case SDL_KEYUP:
|
||||||
key_released_event(event.key.keysym.sym);
|
key_up_event(event.key.keysym.sym);
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
mousebutton_pressed_event(event.button.button,
|
mousebutton_down_event(event.button.button,
|
||||||
event.button.x, event.button.y);
|
event.button.x, event.button.y);
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEBUTTONUP:
|
case SDL_MOUSEBUTTONUP:
|
||||||
mousebutton_released_event(event.button.button,
|
mousebutton_up_event(event.button.button,
|
||||||
event.button.x, event.button.y);
|
event.button.x, event.button.y);
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEMOTION:
|
case SDL_MOUSEMOTION:
|
||||||
@ -370,62 +370,62 @@ void Engine::update_event()
|
|||||||
m_drawing = false;
|
m_drawing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Engine::key_pressed_event(int keysym)
|
void Engine::key_down_event(int keysym)
|
||||||
{
|
{
|
||||||
m_keysDown[sdl_keymap[keysym]] = true;
|
m_keysDown[sdl_keymap[keysym]] = true;
|
||||||
if (m_event_key_pressed_present)
|
if (m_event_key_down_present)
|
||||||
{
|
{
|
||||||
lua_getfield(m_luaState, LUA_GLOBALSINDEX,
|
lua_getfield(m_luaState, LUA_GLOBALSINDEX,
|
||||||
AG_EVENT_PREFIX "key_pressed");
|
AG_EVENT_PREFIX "key_down");
|
||||||
lua_pushstring(m_luaState, sdl_keymap[keysym]);
|
lua_pushstring(m_luaState, sdl_keymap[keysym]);
|
||||||
/* call the key pressed event function
|
/* call the key down event function
|
||||||
* This pops the function ref and arguments from the stack */
|
* This pops the function ref and arguments from the stack */
|
||||||
int s = lua_pcall(m_luaState, 1, LUA_MULTRET, 0);
|
int s = lua_pcall(m_luaState, 1, LUA_MULTRET, 0);
|
||||||
reportErrors(s);
|
reportErrors(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Engine::key_released_event(int keysym)
|
void Engine::key_up_event(int keysym)
|
||||||
{
|
{
|
||||||
m_keysDown.erase(sdl_keymap[keysym]);
|
m_keysDown.erase(sdl_keymap[keysym]);
|
||||||
if (m_event_key_pressed_present)
|
if (m_event_key_up_present)
|
||||||
{
|
{
|
||||||
lua_getfield(m_luaState, LUA_GLOBALSINDEX,
|
lua_getfield(m_luaState, LUA_GLOBALSINDEX,
|
||||||
AG_EVENT_PREFIX "key_released");
|
AG_EVENT_PREFIX "key_up");
|
||||||
lua_pushstring(m_luaState, sdl_keymap[keysym]);
|
lua_pushstring(m_luaState, sdl_keymap[keysym]);
|
||||||
/* call the key released event function
|
/* call the key up event function
|
||||||
* This pops the function ref and arguments from the stack */
|
* This pops the function ref and arguments from the stack */
|
||||||
int s = lua_pcall(m_luaState, 1, LUA_MULTRET, 0);
|
int s = lua_pcall(m_luaState, 1, LUA_MULTRET, 0);
|
||||||
reportErrors(s);
|
reportErrors(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Engine::mousebutton_pressed_event(int button, int x, int y)
|
void Engine::mousebutton_down_event(int button, int x, int y)
|
||||||
{
|
{
|
||||||
if (m_event_mousebutton_pressed_present)
|
if (m_event_mousebutton_down_present)
|
||||||
{
|
{
|
||||||
lua_getfield(m_luaState, LUA_GLOBALSINDEX,
|
lua_getfield(m_luaState, LUA_GLOBALSINDEX,
|
||||||
AG_EVENT_PREFIX "mousebutton_pressed");
|
AG_EVENT_PREFIX "mousebutton_down");
|
||||||
lua_pushinteger(m_luaState, button);
|
lua_pushinteger(m_luaState, button);
|
||||||
lua_pushnumber(m_luaState, x);
|
lua_pushnumber(m_luaState, x);
|
||||||
lua_pushnumber(m_luaState, y);
|
lua_pushnumber(m_luaState, y);
|
||||||
/* call the mouse button pressed event function
|
/* call the mouse button down event function
|
||||||
* This pops the function ref and arguments from the stack */
|
* This pops the function ref and arguments from the stack */
|
||||||
int s = lua_pcall(m_luaState, 3, LUA_MULTRET, 0);
|
int s = lua_pcall(m_luaState, 3, LUA_MULTRET, 0);
|
||||||
reportErrors(s);
|
reportErrors(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Engine::mousebutton_released_event(int button, int x, int y)
|
void Engine::mousebutton_up_event(int button, int x, int y)
|
||||||
{
|
{
|
||||||
if (m_event_mousebutton_released_present)
|
if (m_event_mousebutton_up_present)
|
||||||
{
|
{
|
||||||
lua_getfield(m_luaState, LUA_GLOBALSINDEX,
|
lua_getfield(m_luaState, LUA_GLOBALSINDEX,
|
||||||
AG_EVENT_PREFIX "mousebutton_released");
|
AG_EVENT_PREFIX "mousebutton_up");
|
||||||
lua_pushinteger(m_luaState, button);
|
lua_pushinteger(m_luaState, button);
|
||||||
lua_pushnumber(m_luaState, x);
|
lua_pushnumber(m_luaState, x);
|
||||||
lua_pushnumber(m_luaState, y);
|
lua_pushnumber(m_luaState, y);
|
||||||
/* call the mouse button released event function
|
/* call the mouse button up event function
|
||||||
* This pops the function ref and arguments from the stack */
|
* This pops the function ref and arguments from the stack */
|
||||||
int s = lua_pcall(m_luaState, 3, LUA_MULTRET, 0);
|
int s = lua_pcall(m_luaState, 3, LUA_MULTRET, 0);
|
||||||
reportErrors(s);
|
reportErrors(s);
|
||||||
|
16
Engine.h
16
Engine.h
@ -117,10 +117,10 @@ class Engine
|
|||||||
void registerLibraries();
|
void registerLibraries();
|
||||||
bool fileExists(const std::string & path);
|
bool fileExists(const std::string & path);
|
||||||
void update_event();
|
void update_event();
|
||||||
void key_pressed_event(int keysym);
|
void key_down_event(int keysym);
|
||||||
void key_released_event(int keysym);
|
void key_up_event(int keysym);
|
||||||
void mousebutton_pressed_event(int button, int x, int y);
|
void mousebutton_down_event(int button, int x, int y);
|
||||||
void mousebutton_released_event(int button, int x, int y);
|
void mousebutton_up_event(int button, int x, int y);
|
||||||
void mouse_motion_event(int x, int y, int xrel, int yrel);
|
void mouse_motion_event(int x, int y, int xrel, int yrel);
|
||||||
Object * createObject(bool is_static, GLuint display_list,
|
Object * createObject(bool is_static, GLuint display_list,
|
||||||
float scale = 1.0f)
|
float scale = 1.0f)
|
||||||
@ -149,10 +149,10 @@ class Engine
|
|||||||
std::map<std::string, bool> m_keysDown;
|
std::map<std::string, bool> m_keysDown;
|
||||||
|
|
||||||
bool m_event_update_present;
|
bool m_event_update_present;
|
||||||
bool m_event_key_pressed_present;
|
bool m_event_key_down_present;
|
||||||
bool m_event_key_released_present;
|
bool m_event_key_up_present;
|
||||||
bool m_event_mousebutton_pressed_present;
|
bool m_event_mousebutton_down_present;
|
||||||
bool m_event_mousebutton_released_present;
|
bool m_event_mousebutton_up_present;
|
||||||
bool m_event_mouse_motion_present;
|
bool m_event_mouse_motion_present;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ function update_event()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function key_pressed_event(key)
|
function key_down_event(key)
|
||||||
if (key == "d") then
|
if (key == "d") then
|
||||||
ball2:destroy()
|
ball2:destroy()
|
||||||
elseif (key == "p") then
|
elseif (key == "p") then
|
||||||
|
@ -21,7 +21,7 @@ ground = ag.loadStaticModel("crate", 10)
|
|||||||
ground:setPosition(0, 0, -10)
|
ground:setPosition(0, 0, -10)
|
||||||
ag.setCamera(2, -12, 8, 0, 0, 2, 0, 0, 1)
|
ag.setCamera(2, -12, 8, 0, 0, 2, 0, 0, 1)
|
||||||
|
|
||||||
function key_pressed_event(key)
|
function key_down_event(key)
|
||||||
if (key == "d") then
|
if (key == "d") then
|
||||||
if (cratenum >= 1) then
|
if (cratenum >= 1) then
|
||||||
local idx = math.random(cratenum)
|
local idx = math.random(cratenum)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user