2 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali-scene3d/public-api/model-components/model-node.h>
20 #include <dali-scene3d/public-api/algorithm/navigation-mesh.h>
21 #include <dali-scene3d/public-api/loader/navigation-mesh-factory.h>
24 #include <dali-csharp-binder/common/common.h>
30 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_New_SWIG_0()
32 Dali::Scene3D::ModelNode result;
36 result = Dali::Scene3D::ModelNode::New();
38 CALL_CATCH_EXCEPTION(0);
41 return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
44 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_Model_Node_SWIG_0()
46 Dali::Scene3D::ModelNode* result = 0;
51 result = (Dali::Scene3D::ModelNode*)new Dali::Scene3D::ModelNode();
53 CALL_CATCH_EXCEPTION(0);
59 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_Model_Node_SWIG_1(void* csModel)
61 Dali::Scene3D::ModelNode* model = (Dali::Scene3D::ModelNode*)csModel;
62 Dali::Scene3D::ModelNode* result = 0;
66 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Dali::Scene3D::ModelNode const & type is null", 0);
72 result = (Dali::Scene3D::ModelNode*)new Dali::Scene3D::ModelNode((Dali::Scene3D::ModelNode const&)*model);
74 CALL_CATCH_EXCEPTION(0);
80 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_delete_Model_Node(void* csModel)
82 Dali::Scene3D::ModelNode* model = (Dali::Scene3D::ModelNode*)csModel;
88 CALL_CATCH_EXCEPTION();
92 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_Assign(void* csDestination, void* csSource)
94 Dali::Scene3D::ModelNode* destination = (Dali::Scene3D::ModelNode*)csDestination;
95 Dali::Scene3D::ModelNode* source = (Dali::Scene3D::ModelNode*)csSource;
96 Dali::Scene3D::ModelNode* result = 0;
100 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Dali::Scene3D::ModelNode const & type is null", 0);
106 result = (Dali::Scene3D::ModelNode*)&(destination)->operator=((Dali::Scene3D::ModelNode const&)*source);
108 CALL_CATCH_EXCEPTION(0);
111 return (void*)result;
114 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_DownCast(void* csHandle)
116 Dali::BaseHandle* handle = (Dali::BaseHandle*)csHandle;
117 Dali::Scene3D::ModelNode result;
121 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
127 result = Dali::Scene3D::ModelNode::DownCast(*handle);
129 CALL_CATCH_EXCEPTION(0);
132 return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
135 SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Dali_Model_Node_GetModelPrimitiveCount(void* csModelNode)
137 Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
141 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
147 return modelNode->GetModelPrimitiveCount();
149 CALL_CATCH_EXCEPTION(0);
153 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_Node_AddModelPrimitive(void* csModelNode, void* csModelPrimitive)
155 Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
156 Dali::Scene3D::ModelPrimitive* modelPrimitive = (Dali::Scene3D::ModelPrimitive*)csModelPrimitive;
160 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
165 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelPrimitive", 0);
171 modelNode->AddModelPrimitive(*modelPrimitive);
173 CALL_CATCH_EXCEPTION();
177 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_Node_RemoveModelPrimitive1(void* csModelNode, void* csModelPrimitive)
179 Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
180 Dali::Scene3D::ModelPrimitive* modelPrimitive = (Dali::Scene3D::ModelPrimitive*)csModelPrimitive;
184 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
189 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelPrimitive", 0);
195 modelNode->RemoveModelPrimitive(*modelPrimitive);
197 CALL_CATCH_EXCEPTION();
201 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Model_Node_RemoveModelPrimitive2(void* csModelNode, unsigned int index)
203 Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
207 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
213 modelNode->RemoveModelPrimitive(index);
215 CALL_CATCH_EXCEPTION();
219 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_GetModelPrimitive(void* csModelNode, unsigned int index)
221 Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
222 Dali::Scene3D::ModelPrimitive result;
226 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
232 result = modelNode->GetModelPrimitive(index);
234 CALL_CATCH_EXCEPTION(nullptr);
236 return new Dali::Scene3D::ModelPrimitive((const Dali::Scene3D::ModelPrimitive&)result);
239 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_FindChildModelNodeByName(void* csModelNode, char* nodeName)
241 Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
242 Dali::Scene3D::ModelNode result;
246 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
252 result = modelNode->FindChildModelNodeByName(nodeName);
254 CALL_CATCH_EXCEPTION(nullptr);
256 return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
259 SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Dali_Model_Node_GetChildModelNodeCount(void* csModelNode)
261 Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
265 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
271 return modelNode->GetChildCount();
273 CALL_CATCH_EXCEPTION(0);
277 SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_Node_GetChildModelNodeAt(void* csModelNode, uint32_t index)
279 Dali::Scene3D::ModelNode* modelNode = (Dali::Scene3D::ModelNode*)csModelNode;
280 Dali::Scene3D::ModelNode result;
284 SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::ModelNode", 0);
290 Dali::Actor actor = modelNode->GetChildAt(index);
291 result = Dali::Scene3D::ModelNode::DownCast(actor);
293 CALL_CATCH_EXCEPTION(nullptr);
295 return new Dali::Scene3D::ModelNode((const Dali::Scene3D::ModelNode&)result);
298 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ModelNode_SetColliderMesh(void *modelNodePtr, void* vertexPtr, void* normalPtr, unsigned long vertexCount, void* indexPtr, unsigned long indexCount) {
299 Dali::Scene3D::ModelNode *modelNode = (Dali::Scene3D::ModelNode *) modelNodePtr;
300 auto vertices = reinterpret_cast<Dali::Vector3*>(vertexPtr);
301 auto normals = reinterpret_cast<Dali::Vector3*>(normalPtr);
302 auto indices = reinterpret_cast<uint32_t*>(indexPtr);
305 auto colliderMesh = Dali::Scene3D::Loader::NavigationMeshFactory::CreateFromVertexFaceList(vertices, normals, vertexCount, indices, indexCount);
306 modelNode->SetColliderMesh(std::move(colliderMesh));
307 } CALL_CATCH_EXCEPTION();