BabylonMesh.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #pragma once
  2. #include "BabylonAbstractMesh.h"
  3. #include <vector>
  4. #include <cstdint>
  5. #include "BabylonAnimation.h"
  6. #include "SkinInfo.h"
  7. struct BabylonSubmesh{
  8. int materialIndex;
  9. int verticesStart;
  10. int verticesCount;
  11. int indexStart;
  12. int indexCount;
  13. web::json::value toJson();
  14. };
  15. class BabylonMesh :
  16. public BabylonAbstractMesh
  17. {
  18. private:
  19. std::wstring _id;
  20. std::wstring _parentId;
  21. std::wstring _materialId;
  22. bool _isEnabled;
  23. bool _isVisible;
  24. bool _pickable;
  25. std::vector<babylon_vector3> _positions;
  26. std::vector<babylon_vector3> _normals;
  27. std::vector<babylon_vector2> _uvs;
  28. std::vector<babylon_vector2> _uvs2;
  29. std::vector<babylon_vector2> _uvs3;
  30. std::vector<babylon_vector2> _uvs4;
  31. std::vector<babylon_vector2> _uvs5;
  32. std::vector<babylon_vector2> _uvs6;
  33. std::vector<babylon_color> _colors;
  34. bool _hasVertexAlpha;
  35. std::vector<std::uint32_t> _boneIndices;
  36. std::vector<babylon_vector4> _boneWeights;
  37. std::vector<std::uint32_t> _indices;
  38. bool _checkCollision;
  39. bool _receiveShadows;
  40. bool _infiniteDistance;
  41. int _billboardMode;
  42. float _visibility;
  43. std::vector<BabylonSubmesh> _submeshes;
  44. std::vector<BabylonAbstractMesh> _instances;
  45. int _skeletonId;
  46. bool _autoAnimate;
  47. int _autoAnimateFrom;
  48. int _autoAnimateTo;
  49. bool _autoAnimateLoop;
  50. bool _showBoundingBox;
  51. bool _showSubMeshesBoundingBox;
  52. bool _applyFog;
  53. int _alphaIndex;
  54. public:
  55. std::shared_ptr<BabylonSkeleton> associatedSkeleton;
  56. std::vector<std::shared_ptr < BabylonAnimationBase>> animations;
  57. FbxMatrix pivotMatrix;
  58. std::vector<std::string> uvsets;
  59. const std::wstring& id(){ return _id; }
  60. const std::wstring& parentId(){ return _parentId; }
  61. const std::wstring& materialId(){ return _materialId; }
  62. bool isEnabled(){ return _isEnabled; }
  63. bool isVisible(){ return _isVisible; }
  64. bool pickable(){ return _pickable; }
  65. std::vector<babylon_vector3>& positions(){ return _positions; }
  66. std::vector<babylon_vector3>& normals(){ return _normals; }
  67. std::vector<babylon_vector2>& uvs(){ return _uvs; }
  68. std::vector<babylon_vector2>& uvs2(){ return _uvs2; }
  69. std::vector<babylon_color>& colors(){ return _colors; }
  70. bool hasVertexAlpha(){ return _hasVertexAlpha; }
  71. std::vector<std::uint32_t>& boneIndices(){ return _boneIndices; }
  72. std::vector<babylon_vector4>& boneWeights(){ return _boneWeights; }
  73. std::vector<std::uint32_t>& indices(){ return _indices; }
  74. bool checkCollision(){ return _checkCollision; }
  75. bool receiveShadows(){ return _receiveShadows; }
  76. bool infiniteDistance(){ return _infiniteDistance; }
  77. int billboardMode(){ return _billboardMode; }
  78. float visibility(){ return _visibility; }
  79. std::vector<BabylonSubmesh>& submeshes(){ return _submeshes; }
  80. std::vector<BabylonAbstractMesh>& instances(){ return _instances; }
  81. int skeletonId(){ return _skeletonId; }
  82. bool autoAnimate(){ return _autoAnimate; }
  83. int autoAnimateFrom(){ return _autoAnimateFrom; }
  84. int autoAnimateTo(){ return _autoAnimateTo; }
  85. bool autoAnimateLoop(){ return _autoAnimateLoop; }
  86. bool showBoundingBox(){ return _showBoundingBox; }
  87. bool showSubMeshesBoundingBox(){ return _showSubMeshesBoundingBox; }
  88. bool applyFog(){ return _applyFog; }
  89. int alphaIndex(){ return _alphaIndex; }
  90. void id(const std::wstring& value){ _id = value; }
  91. void parentId(const std::wstring& value){ _parentId = value; }
  92. void materialId(const std::wstring& value){ _materialId = value; }
  93. void isEnabled(bool value){ _isEnabled = value; }
  94. void isVisible(bool value){ _isVisible = value; }
  95. void pickable(bool value){ _pickable = value; }
  96. void hasVertexAlpha(bool value){ _hasVertexAlpha = value; }
  97. void checkCollision(bool value){ _checkCollision = value; }
  98. void receiveShadows(bool value){ _receiveShadows = value; }
  99. void infiniteDistance(bool value){ _infiniteDistance = value; }
  100. void billboardMode(int value){ _billboardMode = value; }
  101. void visibility(float value){ _visibility = value; }
  102. void skeletonId(int value){ _skeletonId = value; }
  103. void autoAnimate(bool value){ _autoAnimate = value; }
  104. void autoAnimateFrom(int value){ _autoAnimateFrom = value; }
  105. void autoAnimateTo(int value){ _autoAnimateTo = value; }
  106. void autoAnimateLoop(bool value){ _autoAnimateLoop = value; }
  107. void showBoundingBox(bool value){ _showBoundingBox = value; }
  108. void showSubMeshesBoundingBox(bool value){ _showSubMeshesBoundingBox = value; }
  109. void applyFog(bool value){ _applyFog = value; }
  110. void alphaIndex(int value){ _alphaIndex = value; }
  111. virtual web::json::value toJson() override;
  112. BabylonMesh();
  113. BabylonMesh(BabylonNode* node);
  114. BabylonMesh(const BabylonMesh&) = default;
  115. BabylonMesh(BabylonMesh&& moved);
  116. void addInstance(BabylonNode* node);
  117. virtual ~BabylonMesh();
  118. };