Open Source Tomb Raider Engine
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

SkeletalModel.h 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*!
  2. * \file include/SkeletalModel.h
  3. * \brief This is the factored out skeletal model class
  4. *
  5. * \author Mongoose
  6. * \author xythobuz
  7. */
  8. #ifndef _SKELETALMODEL_H_
  9. #define _SKELETALMODEL_H_
  10. #include <vector>
  11. #include "math/math.h"
  12. #include "TombRaider.h"
  13. class BoneTag {
  14. public:
  15. BoneTag();
  16. private:
  17. int mesh;
  18. vec3_t off;
  19. vec3_t rot;
  20. char flag;
  21. };
  22. class BoneFrame {
  23. public:
  24. BoneFrame();
  25. ~BoneFrame();
  26. unsigned int size();
  27. BoneTag &get(unsigned int i);
  28. void add(BoneTag &b);
  29. private:
  30. vec3_t pos;
  31. vec_t yaw;
  32. std::vector<BoneTag *> tag;
  33. };
  34. class AnimationFrame {
  35. public:
  36. AnimationFrame();
  37. ~AnimationFrame();
  38. unsigned int size();
  39. BoneFrame &get(unsigned int i);
  40. void add(BoneFrame &b);
  41. private:
  42. char rate;
  43. std::vector<BoneFrame *> frame;
  44. };
  45. class SkeletalModel {
  46. public:
  47. SkeletalModel(TombRaider &tr, unsigned int index, unsigned int i, int objectId);
  48. ~SkeletalModel();
  49. int getId();
  50. void setPigTail(bool b);
  51. void setPonyPos(vec_t x, vec_t y, vec_t z, vec_t angle);
  52. unsigned int size();
  53. AnimationFrame &get(unsigned int i);
  54. private:
  55. int id;
  56. bool tr4Overlay;
  57. bool pigtails;
  58. int ponytailId;
  59. vec3_t ponytail;
  60. int ponytailMeshId;
  61. unsigned int ponytailNumMeshes;
  62. vec_t ponytailAngle;
  63. vec_t ponyOff;
  64. vec_t ponyOff2;
  65. std::vector<AnimationFrame *> animation;
  66. };
  67. #endif