#pragma once #include #include "BabylonVertex.h" #include "BabylonMesh.h" #include "BabylonMaterial.h" #include "BabylonCamera.h" #include "BabylonLight.h" #include "BabylonSkeleton.h" #include #include "BabylonNode.h" class BabylonScene { private: bool _autoClear; babylon_vector3 _clearColor; babylon_vector3 _ambientColor; int _fogMode; babylon_vector3 _fogColor; float _fogStart; float _fogEnd; float _fogDensity; babylon_vector3 _gravity; std::vector _cameras; std::wstring _activeCameraID; std::vector _meshes; std::vector _materials; std::vector _multiMaterials; std::vector _lights; std::vector> _shadowGenerators; std::vector> _skeletons; // particleSystems // lensFlareSystems // shadowGenerators // skeletons public: bool autoClear(){ return _autoClear; } babylon_vector3 clearColor(){ return _clearColor; } babylon_vector3 ambientColor(){ return _ambientColor; } int fogMode(){ return _fogMode; } babylon_vector3 fogColor(){ return _fogColor; } float fogStart(){ return _fogStart; } float fogEnd(){ return _fogEnd; } float fogDensity(){ return _fogDensity; } babylon_vector3 gravity(){ return _gravity; } std::vector& cameras() { return _cameras; } const std::wstring& activeCameraID() { return _activeCameraID; } // lights std::vector& meshes() { return _meshes; } std::vector& materials(){ return _materials; } std::vector& multiMaterials(){ return _multiMaterials; } std::vector& lights() { return _lights; } std::vector>& shadowGenerators() { return _shadowGenerators; } std::vector>& skeletons() { return _skeletons; } // particleSystems // lensFlareSystems // shadowGenerators // skeletons void autoClear(bool value){ _autoClear = value; } void clearColor(babylon_vector3 value){ _clearColor = value; } void ambientColor(babylon_vector3 value){ _ambientColor = value; } void fogMode(int value){ _fogMode = value; } void fogColor(babylon_vector3 value){ _fogColor = value; } void fogStart(float value){ _fogStart = value; } void fogEnd(float value){ _fogEnd = value; } void fogDensity(float value){ _fogDensity = value; } void gravity(babylon_vector3 value){ _gravity = value; } void activeCameraID(const std::wstring& value) { _activeCameraID = value; } // lights // materials // multiMaterials // particleSystems // lensFlareSystems // shadowGenerators // skeletons web::json::value toJson() ; BabylonScene(); BabylonScene(BabylonNode& rootNode, bool skipEmptyNodes); BabylonScene(const BabylonScene&) = default; BabylonScene(BabylonScene&& moved); ~BabylonScene(); private: void exploreNodes(BabylonNode& node, bool skipEmptyNodes, std::map& meshInstanceMap); };