Page 1 of 1

KeyMapping doesn't work! in Irrlicht 1.4

Posted: Mon Dec 24, 2007 9:28 pm
by konrad
Why the KeyMapping doesn't work? :(

Code: Select all

//! Class Player  -------------------------------------------
class CPlayer
{
private:
   // KeyArrays
   SKeyMap keyMap[5];
   keyMap[0].Action=EKA_MOVE_FORWARD;     keyMap[0].KeyCode=KEY_KEY_W;
   keyMap[1].Action=EKA_MOVE_BACKWARD;    keyMap[1].KeyCode=KEY_KEY_S;
   keyMap[2].Action=EKA_STRAFE_LEFT;      keyMap[2].KeyCode=KEY_KEY_A;
   keyMap[3].Action=EKA_STRAFE_RIGHT;     keyMap[3].KeyCode=KEY_KEY_D;
   keyMap[4].Action=EKA_JUMP_UP;          keyMap[4].KeyCode=KEY_SPACE;
public:
   // Node Create
   scene::ICameraSceneNode* Node;
   scene::ISceneNodeAnimator* Anim;
   // Object Create
   CPlayer(unsigned _id,string _name,core::vector3df _pos,float _rotspd,float _movspd,float _jumpspd)
   {
      Node=smgr->addCameraSceneNodeFPS(0,_rotspd,_movspd,_id,keyMap,5,true,_jumpspd);
      Node->setPosition(_pos);
      Node->setName(_name.c_str());
   }
   // Add Collision to Scene
   int addCollision(scene::ITriangleSelector* _world,core::vector3df _elipse,core::vector3df _elipse2,float _gravity)
   {
      Anim=smgr->createCollisionResponseAnimator(_world,Node,
               _elipse,
               core::vector3df(0,_gravity,0),
               _elipse2);
      Node->addAnimator(Anim);
      Anim->drop();
   }
};
I using irrlicht 1.4 :)
Thanks for any helps ;p

Posted: Mon Dec 24, 2007 9:35 pm
by christianclavet
Hi,

Could you try putting the assignation of the variable inside CPLAYER?
I'm not used to assign values inside a variable definition (PRIVATE). I don't know if it's ok.

But I've used the keymaps and compiled with 1.4 and it worked.
I'm used to declare the content in a function like below.

Like this

Code: Select all

//! Class Player  ------------------------------------------- 
class CPlayer 
{ 
private: 
   // KeyArrays 
   SKeyMap keyMap[5]; 
  public: 
   // Node Create 
   scene::ICameraSceneNode* Node; 
   scene::ISceneNodeAnimator* Anim; 
   // Object Create 
   CPlayer(unsigned _id,string _name,core::vector3df _pos,float _rotspd,float _movspd,float _jumpspd) 
   { 
      keyMap[0].Action=EKA_MOVE_FORWARD;     keyMap[0].KeyCode=KEY_KEY_W; 
      keyMap[1].Action=EKA_MOVE_BACKWARD;    keyMap[1].KeyCode=KEY_KEY_S; 
      keyMap[2].Action=EKA_STRAFE_LEFT;      keyMap[2].KeyCode=KEY_KEY_A; 
      keyMap[3].Action=EKA_STRAFE_RIGHT;     keyMap[3].KeyCode=KEY_KEY_D; 
      keyMap[4].Action=EKA_JUMP_UP;          keyMap[4].KeyCode=KEY_SPACE; 
      Node=smgr->addCameraSceneNodeFPS(0,_rotspd,_movspd,_id,keyMap,5,true,_jumpspd); 
      Node->setPosition(_pos); 
      Node->setName(_name.c_str()); 
   } 
   // Add Collision to Scene 
   int addCollision(scene::ITriangleSelector* _world,core::vector3df _elipse,core::vector3df _elipse2,float _gravity) 
   { 
      Anim=smgr->createCollisionResponseAnimator(_world,Node, 
               _elipse, 
               core::vector3df(0,_gravity,0), 
               _elipse2); 
      Node->addAnimator(Anim); 
      Anim->drop(); 
   } 
};

Posted: Mon Dec 24, 2007 9:49 pm
by konrad
Thanks for fast reply and help for me ;p

Posted: Tue Dec 25, 2007 9:48 pm
by rogerborg
I don't have a compiler handy, so I was wondering: did your original code even compile?