Open Source Tomb Raider Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Entity.h 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*!
  2. * \file include/Entity.h
  3. * \brief World Entities
  4. *
  5. * \author xythobuz
  6. */
  7. #ifndef _ENTITY_H_
  8. #define _ENTITY_H_
  9. #include "SkeletalModel.h"
  10. #include "TombRaider.h"
  11. class Entity {
  12. public:
  13. typedef enum {
  14. MoveTypeWalkNoSwim = -1,
  15. MoveTypeWalk = 0,
  16. MoveTypeNoClipping = 1,
  17. MoveTypeFly = 2,
  18. MoveTypeSwim = 3
  19. } MoveType;
  20. Entity(TombRaider &tr, unsigned int index, unsigned int i, unsigned int model);
  21. bool operator<(Entity &o);
  22. static bool compare(Entity *a, Entity *b);
  23. void display();
  24. void move(char movement);
  25. void print();
  26. SkeletalModel &getModel();
  27. void setSkeletalModel(unsigned int model);
  28. MoveType getMoveType();
  29. void setMoveType(MoveType m);
  30. int getObjectId();
  31. void setAngles(float a[3]);
  32. float getPos(unsigned int i);
  33. float getAngle(unsigned int i);
  34. long getRoom();
  35. // Animation State
  36. unsigned long getAnimation();
  37. void setAnimation(unsigned long index);
  38. unsigned long getBoneFrame();
  39. void setBoneFrame(unsigned long index);
  40. unsigned long getIdleAnimation();
  41. void setIdleAnimation(unsigned long index);
  42. private:
  43. float pos[3];
  44. float angles[3];
  45. long room;
  46. unsigned int skeletalModel;
  47. MoveType moveType;
  48. int state;
  49. int objectId;
  50. // Animation State
  51. unsigned long boneFrame;
  52. unsigned long animationFrame;
  53. unsigned long idleAnimation;
  54. };
  55. #endif