#ifndef DALI_SCENE3D_LOADER_NODE_DEFINITION_H_
#define DALI_SCENE3D_LOADER_NODE_DEFINITION_H_
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
*/
-// INTERNAL INCLUDES
-#include "dali-scene3d/public-api/loader/customization.h"
-#include "dali-scene3d/public-api/loader/matrix-stack.h"
-#include "dali-scene3d/public-api/loader/resource-bundle.h"
-
// EXTERNAL INCLUDES
+#include <dali/public-api/actors/actor.h>
+#include <dali/public-api/math/matrix.h>
+#include <dali/public-api/math/quaternion.h>
+#include <dali/public-api/math/vector4.h>
#include <functional>
#include <memory>
#include <string>
-#include "dali/public-api/actors/actor.h"
-#include "dali/public-api/math/matrix.h"
-#include "dali/public-api/math/quaternion.h"
-#include "dali/public-api/math/vector4.h"
+
+// INTERNAL INCLUDES
+#include <dali-scene3d/public-api/loader/customization.h>
+#include <dali-scene3d/public-api/loader/matrix-stack.h>
+#include <dali-scene3d/public-api/loader/resource-bundle.h>
+#include <dali-scene3d/public-api/model-components/model-node.h>
namespace Dali
{
*/
struct DALI_SCENE3D_API SkinningShaderConfigurationRequest
{
- Index mSkeletonIdx;
- Shader mShader;
+ Index mSkeletonIdx;
+ Shader mShader;
+ ModelPrimitive mPrimitive;
bool operator<(const SkinningShaderConfigurationRequest& other) const
{
- return mShader < other.mShader;
+ return mShader < other.mShader || (mShader == other.mShader && mPrimitive < other.mPrimitive);
}
};
*/
struct DALI_SCENE3D_API BlendshapeShaderConfigurationRequest
{
- std::string mNodeName;
- Index mMeshIdx;
- Shader mShader;
+ std::string mNodeName;
+ Index mMeshIdx;
+ Shader mShader;
+ ModelPrimitive mPrimitive;
bool operator<(const BlendshapeShaderConfigurationRequest& other) const
{
- return mShader < other.mShader;
+ return mShader < other.mShader || (mShader == other.mShader && mPrimitive < other.mPrimitive);
}
};
struct CreateParams
{
public: // input
- const ResourceBundle& mResources;
- Transforms& mXforms;
+ ResourceBundle& mResources;
+ Transforms& mXforms;
public: // output
std::vector<ConstraintRequest> mConstrainables;
virtual bool GetExtents(const ResourceBundle& resources, Vector3& min, Vector3& max) const;
virtual void RegisterResources(IResourceReceiver& receiver) const;
virtual void ReflectResources(IResourceReflector& reflector);
- virtual void OnCreate(const NodeDefinition& node, CreateParams& params, Actor& actor) const;
+ virtual void OnCreate(const NodeDefinition& nodeDefinition, CreateParams& params, ModelNode& node) const;
};
struct CustomizationDefinition
public: // METHODS
/**
- * @brief Creates a DALi Actor from this definition only.
+ * @brief Creates a ModelNode from this definition only.
* @note Not recursive.
*/
- Actor CreateActor(CreateParams& params);
+ ModelNode CreateModelNode(CreateParams& params);
/**
* @brief Gets local space matrix of this node
*/
static std::string_view GetIblYDirectionUniformName();
+ /**
+ * @brief Retrieves ibl MaxLod uniform name.
+ * This uniform name can be used to set max lod of ibl in shader.
+ * @return std::string_view of the Max Lod uniform name.
+ */
+ static std::string_view GetIblMaxLodUniformName();
+
public: // DATA
- static const std::string ORIGINAL_MATRIX_PROPERTY_NAME;
+ static const char* ORIGINAL_MATRIX_PROPERTY_NAME;
std::string mName;
uint32_t mNodeId = INVALID_INDEX;
bool GetExtents(const ResourceBundle& resources, Vector3& min, Vector3& max) const override;
void RegisterResources(IResourceReceiver& receiver) const override;
void ReflectResources(IResourceReflector& reflector) override;
- void OnCreate(const NodeDefinition& node, NodeDefinition::CreateParams& params, Actor& actor) const override;
+ void OnCreate(const NodeDefinition& nodeDefinition, NodeDefinition::CreateParams& params, ModelNode& node) const override;
};
/**
public: // METHODS
static void GetEndVectorWithDiffAngle(float startAngle, float endAngle, Vector2& endVector);
- void OnCreate(const NodeDefinition& node, NodeDefinition::CreateParams& params, Actor& actor) const override;
+ void OnCreate(const NodeDefinition& nodeDefinition, NodeDefinition::CreateParams& params, ModelNode& node) const override;
};
} // namespace Loader