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.cpp 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /*!
  2. * \file src/Entity.cpp
  3. * \brief World Entities
  4. *
  5. * \author xythobuz
  6. */
  7. #include <glm/glm.hpp>
  8. #include "global.h"
  9. #include "Log.h"
  10. #include "World.h"
  11. #include "Entity.h"
  12. Entity::Entity(float p[3], float a[3], int id, long r, unsigned int model) {
  13. for (int i = 0; i < 3; i++) {
  14. pos[i] = p[i];
  15. angles[i] = a[i];
  16. }
  17. objectId = id;
  18. moveType = MoveTypeWalk;
  19. room = r;
  20. skeletalModel = model;
  21. boneFrame = 0;
  22. animationFrame = 0;
  23. idleAnimation = 0;
  24. state = 0;
  25. }
  26. void Entity::display() {
  27. /*
  28. glPushMatrix();
  29. glTranslatef(pos[0], pos[1], pos[2]);
  30. glRotatef(glm::degrees(angles[1]), 0, 1, 0);
  31. glRotatef(glm::degrees(angles[0]), 1, 0, 0);
  32. //glRotatef(glm::degrees(angles[2]), 0, 0, 1);
  33. getWorld().getSkeletalModel(skeletalModel).display(animationFrame, boneFrame);
  34. glPopMatrix();
  35. */
  36. }
  37. void Entity::move(char movement) {
  38. }
  39. void Entity::print() {
  40. getLog() << "Entity " << objectId << ":" << Log::endl
  41. << " Room " << room << " (" << getWorld().getRoom(room).getFlags()
  42. << ")" << Log::endl
  43. << " " << pos[0] << "x " << pos[1] << "y " << pos[2] << "z"
  44. << Log::endl
  45. << " " << glm::degrees(angles[1]) << " Yaw" << Log::endl;
  46. }
  47. SkeletalModel& Entity::getModel() {
  48. return getWorld().getSkeletalModel(skeletalModel);
  49. }
  50. void Entity::setSkeletalModel(unsigned int model) {
  51. skeletalModel = model;
  52. animationFrame = 0;
  53. boneFrame = 0;
  54. idleAnimation = 0;
  55. }
  56. Entity::MoveType Entity::getMoveType() {
  57. return moveType;
  58. }
  59. void Entity::setMoveType(MoveType m) {
  60. moveType = m;
  61. }
  62. int Entity::getObjectId() {
  63. return objectId;
  64. }
  65. void Entity::setAngles(float a[3]) {
  66. for (unsigned int i = 0; i < 3; i++)
  67. angles[i] = a[i];
  68. }
  69. float Entity::getPos(unsigned int i) {
  70. return pos[i];
  71. }
  72. float Entity::getAngle(unsigned int i) {
  73. return angles[i];
  74. }
  75. long Entity::getRoom() {
  76. return room;
  77. }
  78. unsigned long Entity::getAnimation() {
  79. return animationFrame;
  80. }
  81. void Entity::setAnimation(unsigned long index) {
  82. animationFrame = index;
  83. boneFrame = 0;
  84. }
  85. unsigned long Entity::getBoneFrame() {
  86. return boneFrame;
  87. }
  88. void Entity::setBoneFrame(unsigned long index) {
  89. boneFrame = index;
  90. }
  91. unsigned long Entity::getIdleAnimation() {
  92. return idleAnimation;
  93. }
  94. void Entity::setIdleAnimation(unsigned long index) {
  95. idleAnimation = index;
  96. }