started adding bullets physics
[ltanks.git] / player.h
blob4538f570d3ea398ba5dc9b0f6f558d72a777a381
1 #ifndef PLAYER_H_DEFINED
2 #define PLAYER_H_DEFINED
4 #include <Ogre.h>
5 #include <OIS.h>
6 #include <vector>
8 #include <btBulletDynamicsCommon.h>
10 const unsigned int WALL_QUERY_MASK = 0x00000001;
11 const unsigned int PLAYER_QUERY_MASK = 0x00000010;
12 const unsigned int BULLET_QUERY_MASK = 0x00000100;
14 #define MAX_BULLETS 50
16 using namespace Ogre;
18 typedef struct bullet {
19 SceneNode *node;
20 btRigidBody *body;
21 unsigned int ttl;
22 } Bullet;
24 class Player {
25 private:
26 const Vector3 cube_size, bullet_size;
28 SceneManager *sceneMgr;
29 Entity *tmp_ent; //tmp debug
31 unsigned int fired;
32 std::vector<Bullet> bullets;
33 AxisAlignedBoxSceneQuery *bullet_query;
35 SceneNode *node;
36 btRigidBody *body;
37 SceneNode *bullet_node;
38 float speed;
39 float turn_speed;
40 float angle;
41 Vector3 aim_to;
43 OIS::KeyCode key_up,key_down,key_left,key_right,key_fire;
45 Bullet *getBulletByNode(SceneNode *node);
47 public:
48 Player();
49 ~Player();
51 void init(SceneManager *sm, const std::string &name);
53 void setKeys(OIS::KeyCode up, OIS::KeyCode down, OIS::KeyCode left, OIS::KeyCode right, OIS::KeyCode fire);
54 OIS::KeyCode getKeyUp() {return key_up;};
55 OIS::KeyCode getKeyDown() {return key_down;};
56 OIS::KeyCode getKeyLeft() {return key_left;};
57 OIS::KeyCode getKeyRight() {return key_right;};
58 OIS::KeyCode getKeyFire() {return key_fire;};
60 const float getSpeed() {return speed;};
61 const float getTurnSpeed() {return turn_speed;};
63 void setPos(Vector3 p);
64 void setDir(Vector3 d);
65 const Vector3& getPos();
66 Vector3 getDir();
68 void moveForward();
69 void moveBack();
70 void turnLeft();
71 void turnRight();
72 void fire(btDynamicsWorld *col_world);
73 void aim(const Vector3 &p); // aim at point
75 void preupdate(float dt);
76 void postupdate(float dt);
78 btRigidBody* getBody() {return body;};
81 #endif