Model.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "Model.h"
  2. namespace gameplay
  3. {
  4. Model::Model(void) :
  5. _ref(NULL),
  6. _meshSkin(NULL)
  7. {
  8. }
  9. Model::~Model(void)
  10. {
  11. }
  12. unsigned int Model::getTypeId(void) const
  13. {
  14. return MODEL_ID;
  15. }
  16. const char* Model::getElementName(void) const
  17. {
  18. return "Model";
  19. }
  20. void Model::writeBinary(FILE* file)
  21. {
  22. Object::writeBinary(file);
  23. // xref:Mesh
  24. if (_ref != NULL)
  25. {
  26. _ref->writeBinaryXref(file);
  27. }
  28. else
  29. {
  30. write((unsigned int)0, file);
  31. }
  32. // _meshSkin
  33. // Write one unsigned char to indicate if this model has a skin
  34. if (_meshSkin != NULL)
  35. {
  36. write((bool)true, file); // has a skin
  37. _meshSkin->writeBinary(file);
  38. }
  39. else
  40. {
  41. write((bool)false, file); // doesn't have a skin
  42. }
  43. // materials[]
  44. writeBinaryObjects(_materials, file);
  45. }
  46. void Model::writeText(FILE* file)
  47. {
  48. // Compute mesh bounds before writing
  49. fprintElementStart(file);
  50. if (_ref != NULL)
  51. {
  52. fprintfElement(file, "ref", _ref->getId());
  53. }
  54. if (_meshSkin != NULL)
  55. {
  56. _meshSkin->writeText(file);
  57. }
  58. fprintElementEnd(file);
  59. }
  60. MeshSkin* Model::getSkin()
  61. {
  62. return _meshSkin;
  63. }
  64. void Model::setMesh(Mesh* mesh)
  65. {
  66. _ref = mesh;
  67. if (mesh)
  68. {
  69. mesh->model = this;
  70. }
  71. if (_ref && _meshSkin)
  72. {
  73. _meshSkin->_mesh = _ref;
  74. }
  75. }
  76. void Model::setSkin(MeshSkin* skin)
  77. {
  78. _meshSkin = skin;
  79. if (_meshSkin)
  80. {
  81. _meshSkin->_mesh = _ref;
  82. }
  83. }
  84. }