BabylonScene.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #pragma once
  2. #include <cpprest\json.h>
  3. #include "BabylonVertex.h"
  4. #include "BabylonMesh.h"
  5. #include "BabylonMaterial.h"
  6. #include "BabylonCamera.h"
  7. #include "BabylonLight.h"
  8. #include "BabylonSkeleton.h"
  9. #include <memory>
  10. #include "BabylonNode.h"
  11. class BabylonScene
  12. {
  13. private:
  14. bool _autoClear;
  15. babylon_vector3 _clearColor;
  16. babylon_vector3 _ambientColor;
  17. int _fogMode;
  18. babylon_vector3 _fogColor;
  19. float _fogStart;
  20. float _fogEnd;
  21. float _fogDensity;
  22. babylon_vector3 _gravity;
  23. std::vector<BabylonCamera> _cameras;
  24. std::wstring _activeCameraID;
  25. std::vector<BabylonMesh> _meshes;
  26. std::vector<BabylonMaterial> _materials;
  27. std::vector<BabylonMultiMaterial> _multiMaterials;
  28. std::vector<BabylonLight> _lights;
  29. std::vector<std::shared_ptr<BabylonShadowGenerator>> _shadowGenerators;
  30. std::vector<std::shared_ptr<BabylonSkeleton>> _skeletons;
  31. // particleSystems
  32. // lensFlareSystems
  33. // shadowGenerators
  34. // skeletons
  35. public:
  36. bool autoClear(){ return _autoClear; }
  37. babylon_vector3 clearColor(){ return _clearColor; }
  38. babylon_vector3 ambientColor(){ return _ambientColor; }
  39. int fogMode(){ return _fogMode; }
  40. babylon_vector3 fogColor(){ return _fogColor; }
  41. float fogStart(){ return _fogStart; }
  42. float fogEnd(){ return _fogEnd; }
  43. float fogDensity(){ return _fogDensity; }
  44. babylon_vector3 gravity(){ return _gravity; }
  45. std::vector<BabylonCamera>& cameras() { return _cameras; }
  46. const std::wstring& activeCameraID() { return _activeCameraID; }
  47. // lights
  48. std::vector<BabylonMesh>& meshes() { return _meshes; }
  49. std::vector<BabylonMaterial>& materials(){ return _materials; }
  50. std::vector<BabylonMultiMaterial>& multiMaterials(){ return _multiMaterials; }
  51. std::vector<BabylonLight>& lights() { return _lights; }
  52. std::vector<std::shared_ptr<BabylonShadowGenerator>>& shadowGenerators() { return _shadowGenerators; }
  53. std::vector<std::shared_ptr<BabylonSkeleton>>& skeletons() { return _skeletons; }
  54. // particleSystems
  55. // lensFlareSystems
  56. // shadowGenerators
  57. // skeletons
  58. void autoClear(bool value){ _autoClear = value; }
  59. void clearColor(babylon_vector3 value){ _clearColor = value; }
  60. void ambientColor(babylon_vector3 value){ _ambientColor = value; }
  61. void fogMode(int value){ _fogMode = value; }
  62. void fogColor(babylon_vector3 value){ _fogColor = value; }
  63. void fogStart(float value){ _fogStart = value; }
  64. void fogEnd(float value){ _fogEnd = value; }
  65. void fogDensity(float value){ _fogDensity = value; }
  66. void gravity(babylon_vector3 value){ _gravity = value; }
  67. void activeCameraID(const std::wstring& value) { _activeCameraID = value; }
  68. // lights
  69. // materials
  70. // multiMaterials
  71. // particleSystems
  72. // lensFlareSystems
  73. // shadowGenerators
  74. // skeletons
  75. web::json::value toJson() ;
  76. BabylonScene();
  77. BabylonScene(BabylonNode& rootNode, bool skipEmptyNodes);
  78. BabylonScene(const BabylonScene&) = default;
  79. BabylonScene(BabylonScene&& moved);
  80. ~BabylonScene();
  81. private:
  82. void exploreNodes(BabylonNode& node, bool skipEmptyNodes, std::map<FbxMesh*, size_t>& meshInstanceMap);
  83. };