#pragma once #include "BabylonVertex.h" #include #include "BabylonNode.h" #include "BabylonAnimation.h" #include #include #undef max class BabylonShadowGenerator { public: int mapSize; float bias; std::wstring lightId; bool useVarianceShadowMap; bool usePoissonSampling; bool useBlurVarianceShadowMap; float blurScale; float blurBoxOffset; std::vector renderList; BabylonShadowGenerator(FbxNode* lightNode); BabylonShadowGenerator(const BabylonShadowGenerator&) = default; BabylonShadowGenerator(BabylonShadowGenerator&& moved); web::json::value toJson(); }; class BabylonLight { public: const int type_omni = 0; const int type_Spot = 2; const int type_direct = 1; const int type_ambient = 3; std::wstring name; std::wstring id; std::wstring parentId; babylon_vector3 position; babylon_vector3 direction; int type = 0; babylon_vector3 diffuse; babylon_vector3 specular; float intensity = 1; float range = std::numeric_limits::max(); float exponent = 0; float angle = 0; babylon_vector3 groundColor; bool castShadows; std::vector includedOnlyMeshesIds; std::vector excludedMeshesIds; std::shared_ptr shadowGenerator; std::vector>> animations; web::json::value toJson() const; BabylonLight(); BabylonLight(BabylonNode& babnode); BabylonLight(const BabylonLight&) = default; BabylonLight(BabylonLight&& moved); ~BabylonLight(); };