FPS camera doesn't move

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.
Post Reply
garwen
Posts: 3
Joined: Thu Mar 31, 2005 6:24 pm
Location: Poland

FPS camera doesn't move

Post by garwen »

I am writing simple car racing game. There are two cameras on the scene one connected with car and one FPS. From some time the FPS camera stoped responding to cursor keys. I think it is since i made a keymap table for moving a car. Anybody got this problem?


--
thx
garwen
bal
Posts: 829
Joined: Fri Jun 18, 2004 5:19 pm
Location: Geluwe, Belgium

Post by bal »

Could you post your EventReceiver (sub)class please? Or your onEvent() function, don't know how you implemented it :).
General Tools List
General FAQ
System: AMD Barton 2600+, 512MB, 9600XT 256MB, WinXP + FC3
Guest

Post by Guest »

Ok here is my Event receiver class. javascript:emoticon(':)')
Smile

class MyEventReceiver : public IEventReceiver
{
public:
float angle; // stering wheel angle
bool m_key_buf[256];
bool m_key_buf_old[256];
bool m_mouse_button_buf[3];
bool m_mouse_button_buf_old[3];

MyEventReceiver () {
memset(m_key_buf, 0, 256);
memset(m_key_buf_old, 0, 256);
memset(m_mouse_button_buf, 0, 3);
memset(m_mouse_button_buf_old, 0, 3);
}

virtual bool OnEvent(SEvent event)
{
switch(event.EventType)
{
case EET_KEY_INPUT_EVENT: // key event
m_key_buf_old[event.KeyInput.Key] = m_key_buf[event.KeyInput.Key];
m_key_buf[event.KeyInput.Key] = event.KeyInput.PressedDown;
break;
case EET_MOUSE_INPUT_EVENT: // mouse event
if (event.MouseInput.Event < EMIE_MOUSE_MOVED)
{
m_mouse_button_buf_old[event.MouseInput.Event%3] = m_mouse_button_buf[event.MouseInput.Event%3];
m_mouse_button_buf[event.MouseInput.Event%3] = ((event.MouseInput.Event/3)?false:true);
}
break;
}

return true;
}
// functions that return bool value of given key
bool IsKeyDown(int index)
{
return m_key_buf[index];
}

bool IsKeyUpDown(int index)
{
return (m_key_buf[index] && !m_key_buf_old[index]);
}

bool IsKeyDownUp(int index)
{
return (!m_key_buf[index] && m_key_buf_old[index]);
}

bool IsMouseButtonDown(int index)
{
return m_mouse_button_buf[index];
}

bool IsMouseButtonUpDown(int index)
{
return (m_mouse_button_buf[index] && !m_mouse_button_buf_old[index]);
}

bool IsMouseButtonDownUp(int index)
{
return (!m_mouse_button_buf[index] && m_mouse_button_buf_old[index]);
}
void ProcessEvent() {
if (IsKeyDown(KEY_KEY_U)) { // go forward
// rotate node if angle!=0
matrix4 mat;
mat.setRotationDegrees(node->getRotation());
vector3df rp = vector3df(0,angle,0);
matrix4 mp;
mp.setRotationDegrees(rp);
mat *= mp;
node->setRotation(mat.getRotationDegrees());
//now move node forward
vector3df v = node->getPosition();
vector3df Target(0,0,1);
matrix4 mat1;
mat1.setRotationDegrees(node->getRotation());
mat1.transformVect(Target);
Target.normalize();
v+=Target;
node->setPosition(v);
}
if (IsKeyDown(KEY_KEY_G)) { // turn left
angle-=0.01;;
}
if (IsKeyDown(KEY_KEY_J)) { // turn right
angle+=0.01;;
}
if (IsKeyDown(KEY_KEY_B)) { // go back
// rotation if angle!=0
matrix4 mat;
mat.setRotationDegrees(node->getRotation());
vector3df rp = vector3df(0,-angle,0); //turn
matrix4 mp;
mp.setRotationDegrees(rp);
mat *= mp;
node->setRotation(mat.getRotationDegrees()); //rotate node
// now move node backward
vector3df v = node->getPosition();
vector3df Target(0,0,-1);
matrix4 mat1;
mat1.setRotationDegrees(node->getRotation());
mat1.transformVect(Target);
Target.normalize();
v+=Target;
node->setPosition(v);
}
}

}; :D :) :) :) :) :) :) :)
garwen
Posts: 3
Joined: Thu Mar 31, 2005 6:24 pm
Location: Poland

Post by garwen »

Sorry for all those emots and postnig as a guest i am not familiar with phpBB
forums.
Post Reply