namespace Dali::Scene3D::Algorithm
{
-
-NavigationMesh::NavigationMesh( NavigationMeshImpl* impl )
+NavigationMesh::NavigationMesh(NavigationMeshImpl* impl)
{
- mImpl.reset( impl );
+ mImpl.reset(impl);
}
NavigationMesh::~NavigationMesh() = default;
return mImpl->GetVertexCount();
}
-bool NavigationMesh::FindFloor(const Dali::Vector3& position, Dali::Vector3& outPosition, uint32_t& polyIndex)
+bool NavigationMesh::FindFloor(const Dali::Vector3& position, Dali::Vector3& outPosition, FaceIndex& faceIndex)
{
- return mImpl->FindFloor(position, outPosition, polyIndex);
+ return mImpl->FindFloor(position, outPosition, faceIndex);
}
-bool NavigationMesh::FindFloorForFace(const Dali::Vector3& position, uint32_t faceIndex, bool dontCheckNeighbours, Dali::Vector3& outPosition)
+bool NavigationMesh::FindFloorForFace(const Dali::Vector3& position, FaceIndex faceIndex, bool dontCheckNeighbours, Dali::Vector3& outPosition)
{
return mImpl->FindFloorForFace(position, faceIndex, dontCheckNeighbours, outPosition);
}
-[[nodiscard]] const NavigationMesh::Face* NavigationMesh::GetFace(int index) const
+[[nodiscard]] const NavigationMesh::Face* NavigationMesh::GetFace(FaceIndex index) const
{
return mImpl->GetFace(index);
}
-[[nodiscard]] const NavigationMesh::Edge* NavigationMesh::GetEdge(int index) const
+[[nodiscard]] const NavigationMesh::Edge* NavigationMesh::GetEdge(EdgeIndex index) const
{
return mImpl->GetEdge(index);
}
-[[nodiscard]] const NavigationMesh::Vertex* NavigationMesh::GetVertex(int index) const
+[[nodiscard]] const NavigationMesh::Vertex* NavigationMesh::GetVertex(VertexIndex index) const
{
return mImpl->GetVertex(index);
}
mImpl->SetTransform(transform);
}
-Dali::Vector3 NavigationMesh::PointSceneToLocal(const Dali::Vector3& point)
+Dali::Vector3 NavigationMesh::PointSceneToLocal(const Dali::Vector3& point) const
{
return mImpl->PointSceneToLocal(point);
}
-Dali::Vector3 NavigationMesh::PointLocalToScene(const Dali::Vector3& point)
+Dali::Vector3 NavigationMesh::PointLocalToScene(const Dali::Vector3& point) const
{
return mImpl->PointLocalToScene(point);
}
return mImpl->GetGravityVector();
}
-}
\ No newline at end of file
+FaceIndex NavigationMesh::RayFaceIntersect(const Vector3& origin, const Vector3& direction) const
+{
+ Internal::Algorithm::NavigationRay ray;
+ ray.origin = origin;
+ ray.direction = direction;
+
+ auto result = mImpl->RayCastIntersect(ray);
+ if(result.result)
+ {
+ return result.faceIndex;
+ }
+ return NULL_FACE;
+}
+
+} // namespace Dali::Scene3D::Algorithm
\ No newline at end of file