Binder for ModelNode, ModelPrimitive, Material 71/290671/9
authorseungho baek <sbsh.baek@samsung.com>
Thu, 30 Mar 2023 10:59:06 +0000 (19:59 +0900)
committerseungho baek <sbsh.baek@samsung.com>
Tue, 4 Apr 2023 12:00:04 +0000 (21:00 +0900)
Change-Id: Iea6f62b3f54c89506d533c9a1f109004cecb420a
Signed-off-by: seungho baek <sbsh.baek@samsung.com>
dali-csharp-binder/file.list
dali-csharp-binder/src/material-wrap.cpp [new file with mode: 0644]
dali-csharp-binder/src/model-node-wrap.cpp [new file with mode: 0644]
dali-csharp-binder/src/model-primitive-wrap.cpp [new file with mode: 0644]
dali-csharp-binder/src/model-wrap.cpp

index 2e28c8d..0ef04cc 100755 (executable)
@@ -96,6 +96,9 @@ SET( dali_csharp_binder_tizen_wearable_src_files
 
 # module: scene3d
 SET( dali_csharp_binder_scene3d_src_files
+  ${dali_csharp_binder_dir}/src/material-wrap.cpp
+  ${dali_csharp_binder_dir}/src/model-primitive-wrap.cpp
+  ${dali_csharp_binder_dir}/src/model-node-wrap.cpp
   ${dali_csharp_binder_dir}/src/model-wrap.cpp
   ${dali_csharp_binder_dir}/src/scene-view-wrap.cpp
 )
diff --git a/dali-csharp-binder/src/material-wrap.cpp b/dali-csharp-binder/src/material-wrap.cpp
new file mode 100644 (file)
index 0000000..6fab1e3
--- /dev/null
@@ -0,0 +1,358 @@
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali-scene3d/public-api/model-components/material.h>
+
+// INTERNAL INCLUDES
+#include "common.h"
+
+extern SWIG_CSharpStringHelperCallback SWIG_csharp_string_callback;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Material_New_SWIG_0()
+{
+  Dali::Scene3D::Material result;
+
+  {
+    try
+    {
+      result = Dali::Scene3D::Material::New();
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return new Dali::Scene3D::Material((const Dali::Scene3D::Material&)result);
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_Material_SWIG_0()
+{
+  Dali::Scene3D::Material* result = 0;
+
+  {
+    try
+    {
+      result = (Dali::Scene3D::Material*)new Dali::Scene3D::Material();
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return (void*)result;
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_Material_SWIG_1(void* csModel)
+{
+  Dali::Scene3D::Material* model  = (Dali::Scene3D::Material*)csModel;
+  Dali::Scene3D::Material* result = 0;
+
+  if(!model)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Dali::Scene3D::Material const & type is null", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      result = (Dali::Scene3D::Material*)new Dali::Scene3D::Material((Dali::Scene3D::Material const&)*model);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return (void*)result;
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_delete_Material(void* csModel)
+{
+  Dali::Scene3D::Material* model = (Dali::Scene3D::Material*)csModel;
+  {
+    try
+    {
+      delete model;
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Material_Assign(void* csDestination, void* csSource)
+{
+  Dali::Scene3D::Material* destination = (Dali::Scene3D::Material*)csDestination;
+  Dali::Scene3D::Material* source      = (Dali::Scene3D::Material*)csSource;
+  Dali::Scene3D::Material* result      = 0;
+
+  if(!source)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Dali::Scene3D::Material const & type is null", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      result = (Dali::Scene3D::Material*)&(destination)->operator=((Dali::Scene3D::Material const&)*source);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return (void*)result;
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Material_DownCast(void* csHandle)
+{
+  Dali::BaseHandle*       handle = (Dali::BaseHandle*)csHandle;
+  Dali::Scene3D::Material result;
+
+  if(!handle)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Material", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      result = Dali::Scene3D::Material::DownCast(*handle);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return new Dali::Scene3D::Material((const Dali::Scene3D::Material&)result);
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_NAME_get()
+{
+  return (int)Dali::Scene3D::Material::Property::NAME;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_BASE_COLOR_URL_get()
+{
+  return (int)Dali::Scene3D::Material::Property::BASE_COLOR_URL;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_BASE_COLOR_FACTOR_get()
+{
+  return (int)Dali::Scene3D::Material::Property::BASE_COLOR_FACTOR;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_METALLIC_ROUGHNESS_URL_get()
+{
+  return (int)Dali::Scene3D::Material::Property::METALLIC_ROUGHNESS_URL;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_METALLIC_FACTOR_get()
+{
+  return (int)Dali::Scene3D::Material::Property::METALLIC_FACTOR;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_ROUGHNESS_FACTOR_get()
+{
+  return (int)Dali::Scene3D::Material::Property::ROUGHNESS_FACTOR;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_NORMAL_URL_get()
+{
+  return (int)Dali::Scene3D::Material::Property::NORMAL_URL;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_NORMAL_SCALE_get()
+{
+  return (int)Dali::Scene3D::Material::Property::NORMAL_SCALE;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_OCCLUSION_URL_get()
+{
+  return (int)Dali::Scene3D::Material::Property::OCCLUSION_URL;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_OCCLUSION_STRENGTH_get()
+{
+  return (int)Dali::Scene3D::Material::Property::OCCLUSION_STRENGTH;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_EMISSIVE_URL_get()
+{
+  return (int)Dali::Scene3D::Material::Property::EMISSIVE_URL;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_EMISSIVE_FACTOR_get()
+{
+  return (int)Dali::Scene3D::Material::Property::EMISSIVE_FACTOR;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_ALPHA_MODE_get()
+{
+  return (int)Dali::Scene3D::Material::Property::ALPHA_MODE;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_ALPHA_CUTOFF_get()
+{
+  return (int)Dali::Scene3D::Material::Property::ALPHA_CUTOFF;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_DOUBLE_SIDED_get()
+{
+  return (int)Dali::Scene3D::Material::Property::DOUBLE_SIDED;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_IOR_get()
+{
+  return (int)Dali::Scene3D::Material::Property::IOR;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_SPECULAR_URL_get()
+{
+  return (int)Dali::Scene3D::Material::Property::SPECULAR_URL;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_SPECULAR_FACTOR_get()
+{
+  return (int)Dali::Scene3D::Material::Property::SPECULAR_FACTOR;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_SPECULAR_COLOR_URL_get()
+{
+  return (int)Dali::Scene3D::Material::Property::SPECULAR_COLOR_URL;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_Material_property_SPECULAR_COLOR_FACTOR_get()
+{
+  return (int)Dali::Scene3D::Material::Property::SPECULAR_COLOR_FACTOR;
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Material_SetProperty(void* csMaterial, int index, void* csPropertyValue)
+{
+  Dali::Scene3D::Material* material      = (Dali::Scene3D::Material*)csMaterial;
+  Dali::Property::Value*   propertyValue = (Dali::Property::Value*)csPropertyValue;
+
+  if(!material)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Material", 0);
+    return;
+  }
+  {
+    try
+    {
+      material->SetProperty((Dali::Property::Index)index, *propertyValue);
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Material_GetProperty(void* csMaterial, int index)
+{
+  Dali::Scene3D::Material* material = (Dali::Scene3D::Material*)csMaterial;
+  Dali::Property::Value    result;
+
+  if(!material)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Material", 0);
+    return nullptr;
+  }
+  {
+    try
+    {
+      result = material->GetProperty((Dali::Property::Index)index);
+    }
+    CALL_CATCH_EXCEPTION(nullptr);
+  }
+  return new Dali::Property::Value((const Dali::Property::Value&)result);
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Material_SetTexture(void* csMaterial, unsigned int index, void* csTexture)
+{
+  Dali::Scene3D::Material* material = (Dali::Scene3D::Material*)csMaterial;
+  Dali::Texture*           texture  = (Dali::Texture*)csTexture;
+
+  if(!material)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Material", 0);
+    return;
+  }
+
+  if(!texture)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Texture", 0);
+    return;
+  }
+
+  try
+  {
+    material->SetTexture((Dali::Scene3D::Material::TextureType)index, *texture);
+  }
+  CALL_CATCH_EXCEPTION();
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Material_GetTexture(void* csMaterial, unsigned int index)
+{
+  Dali::Scene3D::Material* material = (Dali::Scene3D::Material*)csMaterial;
+  Dali::Texture            result;
+
+  if(!material)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Material", 0);
+    return nullptr;
+  }
+
+  try
+  {
+    result = material->GetTexture((Dali::Scene3D::Material::TextureType)index);
+  }
+  CALL_CATCH_EXCEPTION(nullptr);
+
+  return new Dali::Texture((const Dali::Texture&)result);
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Material_SetSampler(void* csMaterial, unsigned int index, void* csSampler)
+{
+  Dali::Scene3D::Material* material = (Dali::Scene3D::Material*)csMaterial;
+  Dali::Sampler*           sampler  = (Dali::Sampler*)csSampler;
+
+  if(!material)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Material", 0);
+    return;
+  }
+
+  try
+  {
+    material->SetSampler((Dali::Scene3D::Material::TextureType)index, *sampler);
+  }
+  CALL_CATCH_EXCEPTION();
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Material_GetSampler(void* csMaterial, unsigned int index)
+{
+  Dali::Scene3D::Material* material = (Dali::Scene3D::Material*)csMaterial;
+  Dali::Sampler            result;
+
+  if(!material)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Material", 0);
+    return nullptr;
+  }
+
+  try
+  {
+    result = material->GetSampler((Dali::Scene3D::Material::TextureType)index);
+  }
+  CALL_CATCH_EXCEPTION(nullptr);
+  return new Dali::Sampler((const Dali::Sampler&)result);
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/dali-csharp-binder/src/model-node-wrap.cpp b/dali-csharp-binder/src/model-node-wrap.cpp
new file mode 100644 (file)
index 0000000..fb289a6
--- /dev/null
@@ -0,0 +1,259 @@
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali-scene3d/public-api/model-components/model-node.h>
+
+// INTERNAL INCLUDES
+#include "common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_New_SWIG_0()
+{
+  Dali::Scene3D::ModelNode result;
+  {
+    try
+    {
+      result = Dali::Scene3D::ModelNode::New();
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_Model_Node_SWIG_0()
+{
+  Dali::Scene3D::ModelNode* result = 0;
+
+  {
+    try
+    {
+      result = (Dali::Scene3D::ModelNode*)new Dali::Scene3D::ModelNode();
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return (void*)result;
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_Model_Node_SWIG_1(void* csModel)
+{
+  Dali::Scene3D::ModelNode* model  = (Dali::Scene3D::ModelNode*)csModel;
+  Dali::Scene3D::ModelNode* result = 0;
+
+  if(!model)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Dali::Scene3D::ModelNode const & type is null", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      result = (Dali::Scene3D::ModelNode*)new Dali::Scene3D::ModelNode((Dali::Scene3D::ModelNode const&)*model);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return (void*)result;
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_delete_Model_Node(void* csModel)
+{
+  Dali::Scene3D::ModelNode* model = (Dali::Scene3D::ModelNode*)csModel;
+  {
+    try
+    {
+      delete model;
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_Assign(void* csDestination, void* csSource)
+{
+  Dali::Scene3D::ModelNode* destination = (Dali::Scene3D::ModelNode*)csDestination;
+  Dali::Scene3D::ModelNode* source      = (Dali::Scene3D::ModelNode*)csSource;
+  Dali::Scene3D::ModelNode* result      = 0;
+
+  if(!source)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Dali::Scene3D::ModelNode const & type is null", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      result = (Dali::Scene3D::ModelNode*)&(destination)->operator=((Dali::Scene3D::ModelNode const&)*source);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return (void*)result;
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_DownCast(void* csHandle)
+{
+  Dali::BaseHandle*    handle = (Dali::BaseHandle*)csHandle;
+  Dali::Scene3D::ModelNode result;
+
+  if(!handle)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      result = Dali::Scene3D::ModelNode::DownCast(*handle);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
+}
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Dali_Model_Node_GetModelPrimitiveCount(void* csModelNode)
+{
+  Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
+
+  if(!modelNode)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      return modelNode->GetModelPrimitiveCount();
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_Node_AddModelPrimitive(void* csModelNode, void* csModelPrimitive)
+{
+  Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
+  Dali::Scene3D::ModelPrimitive* modelPrimitive = (Dali::Scene3D::ModelPrimitive*)csModelPrimitive;
+
+  if(!modelNode)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
+    return;
+  }
+  if(!modelPrimitive)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelPrimitive", 0);
+    return;
+  }
+  {
+    try
+    {
+      modelNode->AddModelPrimitive(*modelPrimitive);
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_Node_RemoveModelPrimitive1(void* csModelNode, void* csModelPrimitive)
+{
+  Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
+  Dali::Scene3D::ModelPrimitive* modelPrimitive = (Dali::Scene3D::ModelPrimitive*)csModelPrimitive;
+
+  if(!modelNode)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
+    return;
+  }
+  if(!modelPrimitive)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelPrimitive", 0);
+    return;
+  }
+  {
+    try
+    {
+      modelNode->RemoveModelPrimitive(*modelPrimitive);
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_Node_RemoveModelPrimitive2(void* csModelNode, unsigned int index)
+{
+  Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
+
+  if(!modelNode)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
+    return;
+  }
+  {
+    try
+    {
+      modelNode->RemoveModelPrimitive(index);
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_GetModelPrimitive(void* csModelNode, unsigned int index)
+{
+  Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
+  Dali::Scene3D::ModelPrimitive       result;
+
+  if(!modelNode)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
+    return nullptr;
+  }
+  {
+    try
+    {
+      result = modelNode->GetModelPrimitive(index);
+    }
+    CALL_CATCH_EXCEPTION(nullptr);
+  }
+  return new Dali::Scene3D::ModelPrimitive((const Dali::Scene3D::ModelPrimitive&)result);
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_FindChildModelNodeByName(void* csModelNode, char* nodeName)
+{
+  Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
+  Dali::Scene3D::ModelNode result;
+
+  if(!modelNode)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
+    return nullptr;
+  }
+  {
+    try
+    {
+      result = modelNode->FindChildModelNodeByName(nodeName);
+    }
+    CALL_CATCH_EXCEPTION(nullptr);
+  }
+  return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/dali-csharp-binder/src/model-primitive-wrap.cpp b/dali-csharp-binder/src/model-primitive-wrap.cpp
new file mode 100644 (file)
index 0000000..232b470
--- /dev/null
@@ -0,0 +1,194 @@
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali-scene3d/public-api/model-components/model-primitive.h>
+
+// INTERNAL INCLUDES
+#include "common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Primitive_New_SWIG_0()
+{
+  Dali::Scene3D::ModelPrimitive result;
+
+  {
+    try
+    {
+      result = Dali::Scene3D::ModelPrimitive::New();
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return new Dali::Scene3D::ModelPrimitive((const Dali::Scene3D::ModelPrimitive&)result);
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_Model_Primitive_SWIG_0()
+{
+  Dali::Scene3D::ModelPrimitive* result = 0;
+
+  {
+    try
+    {
+      result = (Dali::Scene3D::ModelPrimitive*)new Dali::Scene3D::ModelPrimitive();
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return (void*)result;
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_Model_Primitive_SWIG_1(void* csModel)
+{
+  Dali::Scene3D::ModelPrimitive* model  = (Dali::Scene3D::ModelPrimitive*)csModel;
+  Dali::Scene3D::ModelPrimitive* result = 0;
+
+  if(!model)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Dali::Scene3D::ModelPrimitive const & type is null", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      result = (Dali::Scene3D::ModelPrimitive*)new Dali::Scene3D::ModelPrimitive((Dali::Scene3D::ModelPrimitive const&)*model);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return (void*)result;
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_delete_Model_Primitive(void* csModel)
+{
+  Dali::Scene3D::ModelPrimitive* model = (Dali::Scene3D::ModelPrimitive*)csModel;
+  {
+    try
+    {
+      delete model;
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Primitive_Assign(void* csDestination, void* csSource)
+{
+  Dali::Scene3D::ModelPrimitive* destination = (Dali::Scene3D::ModelPrimitive*)csDestination;
+  Dali::Scene3D::ModelPrimitive* source      = (Dali::Scene3D::ModelPrimitive*)csSource;
+  Dali::Scene3D::ModelPrimitive* result      = 0;
+
+  if(!source)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Dali::Scene3D::ModelPrimitive const & type is null", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      result = (Dali::Scene3D::ModelPrimitive*)&(destination)->operator=((Dali::Scene3D::ModelPrimitive const&)*source);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return (void*)result;
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Primitive_DownCast(void* csHandle)
+{
+  Dali::BaseHandle*    handle = (Dali::BaseHandle*)csHandle;
+  Dali::Scene3D::ModelPrimitive result;
+
+  if(!handle)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelPrimitive", 0);
+    return 0;
+  }
+  {
+    try
+    {
+      result = Dali::Scene3D::ModelPrimitive::DownCast(*handle);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return new Dali::Scene3D::ModelPrimitive((const Dali::Scene3D::ModelPrimitive&)result);
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_Primitive_SetGeometry(void* csModelPrimitive, void* csGeometry)
+{
+  Dali::Scene3D::ModelPrimitive* modelPrimitive = (Dali::Scene3D::ModelPrimitive*)csModelPrimitive;
+  Dali::Geometry* geometry = (Dali::Geometry*)csGeometry;
+
+  if(!modelPrimitive)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelPrimitive", 0);
+    return;
+  }
+  {
+    try
+    {
+      modelPrimitive->SetGeometry(*geometry);
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Primitive_GetGeometry(void* csModelPrimitive)
+{
+  Dali::Scene3D::ModelPrimitive* modelPrimitive = (Dali::Scene3D::ModelPrimitive*)csModelPrimitive;
+  Dali::Geometry result;
+
+  if(!modelPrimitive)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelPrimitive", 0);
+    return nullptr;
+  }
+  {
+    try
+    {
+      result = modelPrimitive->GetGeometry();
+    }
+    CALL_CATCH_EXCEPTION(nullptr);
+  }
+  return new Dali::Geometry((const Dali::Geometry&)result);
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_Primitive_SetMaterial(void* csModelPrimitive, void* csMaterial)
+{
+   Dali::Scene3D::ModelPrimitive* modelPrimitive = (Dali::Scene3D::ModelPrimitive*)csModelPrimitive;
+   Dali::Scene3D::Material* material = (Dali::Scene3D::Material*)csMaterial;
+
+   if(!modelPrimitive)
+   {
+     SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
+     return;
+   }
+
+   try
+   {
+     modelPrimitive->SetMaterial(*material);
+   }
+   CALL_CATCH_EXCEPTION();
+}
+
+
+#ifdef __cplusplus
+}
+#endif
index 8b22301..daae521 100644 (file)
@@ -56,6 +56,21 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_New_SWIG_0(char* csModelPath, cha
   return new Dali::Scene3D::Model((const Dali::Scene3D::Model&)result);
 }
 
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_New_SWIG_1()
+{
+  Dali::Scene3D::Model result;
+
+  {
+    try
+    {
+      result = Dali::Scene3D::Model::New();
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+
+  return new Dali::Scene3D::Model((const Dali::Scene3D::Model&)result);
+}
+
 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_Model_SWIG_0()
 {
   Dali::Scene3D::Model* result = 0;
@@ -149,8 +164,8 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_DownCast(void* csHandle)
 
 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_GetModelRoot(void* csModel)
 {
-  Dali::Scene3D::Model* model = (Dali::Scene3D::Model*)csModel;
-  Dali::Actor           result;
+  Dali::Scene3D::Model*    model = (Dali::Scene3D::Model*)csModel;
+  Dali::Scene3D::ModelNode result;
 
   if(!model)
   {
@@ -165,7 +180,43 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_GetModelRoot(void* csModel)
     CALL_CATCH_EXCEPTION(0);
   }
 
-  return new Dali::Actor((const Dali::Actor&)result);
+  return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_AddModelNode(void* csModel, void* csModelNode)
+{
+  Dali::Scene3D::Model*     model     = (Dali::Scene3D::Model*)csModel;
+  Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
+
+  if(!model)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Model", 0);
+    return;
+  }
+
+  try
+  {
+    model->AddModelNode(*modelNode);
+  }
+  CALL_CATCH_EXCEPTION();
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_RemoveModelNode(void* csModel, void* csModelNode)
+{
+  Dali::Scene3D::Model*     model     = (Dali::Scene3D::Model*)csModel;
+  Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
+
+  if(!model)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Model", 0);
+    return;
+  }
+
+  try
+  {
+    model->RemoveModelNode(*modelNode);
+  }
+  CALL_CATCH_EXCEPTION();
 }
 
 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_SetChildrenSensitive(void* csModel, bool enable)
@@ -412,6 +463,26 @@ SWIGEXPORT bool SWIGSTDCALL CSharp_Dali_Model_ApplyCamera(void* csModel, unsigne
   return result;
 }
 
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_FindChildModelNodeByName(void* csModel, char* nodeName)
+{
+  Dali::Scene3D::Model*    model = (Dali::Scene3D::Model*)csModel;
+  Dali::Scene3D::ModelNode result;
+
+  if(!model)
+  {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Model", 0);
+    return nullptr;
+  }
+
+  try
+  {
+    result = model->FindChildModelNodeByName(std::string_view(nodeName));
+  }
+  CALL_CATCH_EXCEPTION(nullptr);
+
+  return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
+}
+
 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_LoadBvhAnimation_1(void* csModel, char* csFileName, void* csScale)
 {
   Dali::Scene3D::Model* model = (Dali::Scene3D::Model*)csModel;