Model.cpp 1.6 KB

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