Open Source Tomb Raider Engine
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

Entity.cpp 2.4KB

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