*/
// EXTERNAL INCLUDES
+#include <dali/devel-api/common/map-wrapper.h>
#include <dali/public-api/actors/custom-actor-impl.h>
#include <dali/public-api/common/dali-common.h>
#include <memory> // for std::unique_ptr
+#include <string>
// INTERNAL INCLUDES
#include <dali-scene3d/internal/model-components/model-primitive-modify-observer.h>
+#include <dali-scene3d/public-api/light/light.h>
#include <dali-scene3d/public-api/loader/mesh-definition.h>
#include <dali-scene3d/public-api/loader/skinning-details.h>
#include <dali-scene3d/public-api/model-components/model-node.h>
public:
using ModelPrimitiveContainer = std::vector<Scene3D::ModelPrimitive>;
using BoneDataContainer = std::vector<Dali::Scene3D::Loader::Skinning::BoneData>;
+ using BlendShapeIndexMap = std::map<std::string, Loader::BlendShapes::Index>;
// Creation & Destruction
/**
Scene3D::ModelNode FindChildModelNodeByName(std::string_view nodeName);
/**
+ * @copydoc Dali::Scene3D::ModelNode::RetrieveBlendShapeNames()
+ */
+ void RetrieveBlendShapeNames(std::vector<std::string>& blendShapeNames) const;
+
+ /**
+ * @copydoc Dali::Scene3D::ModelNode::GetBlendShapeIndexByName()
+ */
+ Loader::BlendShapes::Index GetBlendShapeIndexByName(std::string_view blendShapeName) const;
+
+ /**
* @brief Sets the diffuse and specular image-based lighting textures for a ModelPrimitive.
*
* @param[in] diffuseTexture The diffuse texture.
*/
void SetImageBasedLightScaleFactor(float iblScaleFactor);
+ void AddLight(Scene3D::Light light, uint32_t lightIndex);
+ void RemoveLight(uint32_t lightIndex);
+
/**
* @brief Sets the blend shape data for a ModelPrimitive.
*
/// @cond internal
// Not copyable or movable
- DALI_INTERNAL ModelNode(const ModelNode&) = delete; ///< Deleted copy constructor.
- DALI_INTERNAL ModelNode(ModelNode&&) = delete; ///< Deleted move constructor.
+ DALI_INTERNAL ModelNode(const ModelNode&) = delete; ///< Deleted copy constructor.
+ DALI_INTERNAL ModelNode(ModelNode&&) = delete; ///< Deleted move constructor.
DALI_INTERNAL ModelNode& operator=(const ModelNode&) = delete; ///< Deleted copy assignment operator.
- DALI_INTERNAL ModelNode& operator=(ModelNode&&) = delete; ///< Deleted move assignment operator.
+ DALI_INTERNAL ModelNode& operator=(ModelNode&&) = delete; ///< Deleted move assignment operator.
private:
ModelPrimitiveContainer mModelPrimitiveContainer; ///< List of model primitives
BoneDataContainer mBoneDataContainer;
+ BlendShapeIndexMap mBlendShapeIndexMap; ///< Index of blend shape by name
Dali::Texture mSpecularTexture;
Dali::Texture mDiffuseTexture;
float mIblScaleFactor{1.0f};
uint32_t mSpecularMipmapLevels{1u};
+
+ // Light
+ std::vector<Scene3D::Light> mLights;
/// @endcond
};