END_TEST;
}
+
+int UtcDaliColliderMeshModelNodeRemoveModelNode(void)
+{
+ tet_infoline("UtcDaliColliderMeshModelNodeRemoveModelNode: Test removing model node when there is collider mesh attached");
+
+ ToolkitTestApplication application;
+ Dali::Scene3D::ModelNode node = Dali::Scene3D::ModelNode::New();
+ Dali::Scene3D::Model model = Dali::Scene3D::Model::New();
+ model.AddModelNode(node);
+
+ application.GetWindow().Add(model);
+ application.SendNotification();
+ application.Render();
+
+ auto colliderMesh = NavigationMeshFactory::CreateFromBuffer(GetTestColliderMesh(0));
+
+ // Redundant setup test
+ DALI_TEST_EQUALS(node.HasColliderMesh(), false, TEST_LOCATION);
+ node.SetColliderMesh(nullptr);
+ DALI_TEST_EQUALS(node.HasColliderMesh(), false, TEST_LOCATION);
+ node.SetColliderMesh(std::move(colliderMesh));
+ DALI_TEST_EQUALS(node.HasColliderMesh(), true, TEST_LOCATION);
+
+ model.RemoveModelNode(node);
+ DALI_TEST_EQUALS(node.HasColliderMesh(), true, TEST_LOCATION);
+
+ // Reset collider mesh
+ node.SetColliderMesh(nullptr);
+ DALI_TEST_EQUALS(node.HasColliderMesh(), false, TEST_LOCATION);
+
+ auto colliderMesh1 = NavigationMeshFactory::CreateFromBuffer(GetTestColliderMesh(0));
+
+ node.SetColliderMesh(std::move(colliderMesh1));
+ DALI_TEST_EQUALS(node.HasColliderMesh(), true, TEST_LOCATION);
+
+ model.AddModelNode(node);
+ DALI_TEST_EQUALS(node.HasColliderMesh(), true, TEST_LOCATION);
+
+ END_TEST;
+}
\ No newline at end of file
UpdateImageBasedLightScaleFactor();
}
- GetImplementation(modelNode).SetRootModel(*this);
+ GetImplementation(modelNode).SetRootModel(this);
// If model has a collider mesh set, add it to the container
if(modelNode.HasColliderMesh())
{
+ RegisterColliderMesh(modelNode, modelNode.GetColliderMesh());
Scene3D::ColliderMeshProcessor::Get().ColliderMeshChanged(Scene3D::Model::DownCast(Self()));
}
if(modelNode.HasColliderMesh())
{
RemoveColliderMesh(modelNode);
+ GetImplementation(modelNode).SetRootModel(nullptr);
}
if(mModelRoot)