Added function to set a collider mesh on the ModelNode and signal to Model 14/299714/7
authorAdam Bialogonski <adam.b@samsung.com>
Tue, 14 Nov 2023 11:54:04 +0000 (11:54 +0000)
committerAdam Bialogonski <adam.b@samsung.com>
Thu, 16 Nov 2023 09:48:40 +0000 (09:48 +0000)
Change-Id: I0a1cc6633002779a26e7f0fc60f0a67412feb2c4

dali-csharp-binder/dali-scene3d/model-node-wrap.cpp
dali-csharp-binder/dali-scene3d/model-wrap.cpp

index 9981584..c86ab99 100644 (file)
@@ -17,6 +17,8 @@
 
 // EXTERNAL INCLUDES
 #include <dali-scene3d/public-api/model-components/model-node.h>
+#include <dali-scene3d/public-api/algorithm/navigation-mesh.h>
+#include <dali-scene3d/public-api/loader/navigation-mesh-factory.h>
 
 // INTERNAL INCLUDES
 #include <dali-csharp-binder/common/common.h>
@@ -293,6 +295,18 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_GetChildModelNodeAt(void* cs
   return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
 }
 
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ModelNode_SetColliderMesh(void *modelNodePtr, void* vertexPtr, void* normalPtr, unsigned long vertexCount, void* indexPtr, unsigned long indexCount) {
+  Dali::Scene3D::ModelNode *modelNode = (Dali::Scene3D::ModelNode *) modelNodePtr;
+  auto vertices = reinterpret_cast<Dali::Vector3*>(vertexPtr);
+  auto normals = reinterpret_cast<Dali::Vector3*>(normalPtr);
+  auto indices = reinterpret_cast<uint32_t*>(indexPtr);
+
+  try {
+    auto colliderMesh = Dali::Scene3D::Loader::NavigationMeshFactory::CreateFromVertexFaceList(vertices, normals, vertexCount, indices, indexCount);
+    modelNode->SetColliderMesh(std::move(colliderMesh));
+  } CALL_CATCH_EXCEPTION();
+}
+
 #ifdef __cplusplus
 }
 #endif
index f4d282c..2f8a449 100644 (file)
@@ -743,6 +743,8 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_LoadFacialAnimation_2(void* csMod
   return new Dali::Animation((const Dali::Animation&)result);
 }
 
+GENERATE_SIGNAL(Dali::Scene3D::Model*, bool (*)(Dali::Scene3D::Model, Dali::Scene3D::ModelNode), Dali_Model, MeshHitSignal);
+
 #ifdef __cplusplus
 }
 #endif