[−][src]Struct hassium_navigation::resource::NavMesh
Nav mesh object used to find shortest path between two points.
Methods
impl NavMesh
[src]
pub fn new(
vertices: Vec<NavVec3>,
triangles: Vec<NavTriangle>
) -> NavResult<Self>
[src]
vertices: Vec<NavVec3>,
triangles: Vec<NavTriangle>
) -> NavResult<Self>
Create new nav mesh object from vertices and triangles.
Arguments
vertices
- list of vertices points.triangles
- list of vertices indices that produces triangles.
Returns
Ok
with nav mesh object or Err
with Error::TriangleVerticeIndexOutOfBounds
if input
data is invalid.
Example
use hassium_navigation::prelude::*; let vertices = vec![ (0.0, 0.0, 0.0).into(), // 0 (1.0, 0.0, 0.0).into(), // 1 (2.0, 0.0, 1.0).into(), // 2 (0.0, 1.0, 0.0).into(), // 3 (1.0, 1.0, 0.0).into(), // 4 (2.0, 1.0, 1.0).into(), // 5 ]; let triangles = vec![ (0, 1, 4).into(), // 0 (4, 3, 0).into(), // 1 (1, 2, 5).into(), // 2 (5, 4, 1).into(), // 3 ]; let mesh = NavMesh::new(vertices, triangles).unwrap();
pub fn id(&self) -> NavMeshID
[src]
Nav mesh identifier.
pub fn vertices(&self) -> &[NavVec3]
[src]
Reference to list of nav mesh vertices points.
pub fn triangles(&self) -> &[NavTriangle]
[src]
Reference to list of nav mesh triangles.
pub fn areas(&self) -> &[NavArea]
[src]
Reference to list of nav mesh area descriptors.
pub fn set_area_cost(&mut self, index: usize, cost: Scalar) -> Scalar
[src]
Set area cost by triangle index.
Arguments
index
- triangle index.cost
- cost factor.
Returns
Old area cost value.
pub fn closest_point(&self, point: NavVec3, query: NavQuery) -> Option<NavVec3>
[src]
Find closest point on nav mesh.
Arguments
point
- query point.query
- query quality.
Returns
Some
with point on nav mesh if found or None
otherwise.
pub fn find_path(
&self,
from: NavVec3,
to: NavVec3,
query: NavQuery,
mode: NavPathMode
) -> Option<Vec<NavVec3>>
[src]
&self,
from: NavVec3,
to: NavVec3,
query: NavQuery,
mode: NavPathMode
) -> Option<Vec<NavVec3>>
Find shortest path on nav mesh between two points.
Arguments
from
- query point from.to
- query point to.query
- query quality.mode
- path finding quality.
Returns
Some
with path points on nav mesh if found or None
otherwise.
Example
use hassium_navigation::prelude::*; let vertices = vec![ (0.0, 0.0, 0.0).into(), // 0 (1.0, 0.0, 0.0).into(), // 1 (2.0, 0.0, 1.0).into(), // 2 (0.0, 1.0, 0.0).into(), // 3 (1.0, 1.0, 0.0).into(), // 4 (2.0, 1.0, 1.0).into(), // 5 ]; let triangles = vec![ (0, 1, 4).into(), // 0 (4, 3, 0).into(), // 1 (1, 2, 5).into(), // 2 (5, 4, 1).into(), // 3 ]; let mesh = NavMesh::new(vertices, triangles).unwrap(); let path = mesh .find_path( (0.0, 1.0, 0.0).into(), (1.5, 0.25, 0.5).into(), NavQuery::Accuracy, NavPathMode::MidPoints, ) .unwrap(); assert_eq!( path.into_iter() .map(|v| ( (v.x * 10.0) as i32, (v.y * 10.0) as i32, (v.z * 10.0) as i32, )) .collect::<Vec<_>>(), vec![(0, 10, 0), (10, 5, 0), (15, 2, 5),] );
pub fn find_path_triangles(
&self,
from: usize,
to: usize
) -> Option<(Vec<usize>, Scalar)>
[src]
&self,
from: usize,
to: usize
) -> Option<(Vec<usize>, Scalar)>
Find shortest path on nav mesh between two points.
Arguments
from
- query point from.to
- query point to.query
- query quality.mode
- path finding quality.
Returns
Some
with path points on nav mesh and path length if found or None
otherwise.
Example
use hassium_navigation::prelude::*; let vertices = vec![ (0.0, 0.0, 0.0).into(), // 0 (1.0, 0.0, 0.0).into(), // 1 (2.0, 0.0, 1.0).into(), // 2 (0.0, 1.0, 0.0).into(), // 3 (1.0, 1.0, 0.0).into(), // 4 (2.0, 1.0, 1.0).into(), // 5 ]; let triangles = vec![ (0, 1, 4).into(), // 0 (4, 3, 0).into(), // 1 (1, 2, 5).into(), // 2 (5, 4, 1).into(), // 3 ]; let mesh = NavMesh::new(vertices, triangles).unwrap(); let path = mesh.find_path_triangles(1, 2).unwrap().0; assert_eq!(path, vec![1, 0, 3, 2]);
pub fn find_closest_triangle(
&self,
point: NavVec3,
query: NavQuery
) -> Option<usize>
[src]
&self,
point: NavVec3,
query: NavQuery
) -> Option<usize>
Find closest triangle on nav mesh closest to given point.
Arguments
point
- query point.query
- query quality.
Returns
Some
with nav mesh triangle index if found or None
otherwise.
pub fn path_target_point(
path: &[NavVec3],
point: NavVec3,
offset: Scalar
) -> Option<(NavVec3, Scalar)>
[src]
path: &[NavVec3],
point: NavVec3,
offset: Scalar
) -> Option<(NavVec3, Scalar)>
Find target point on nav mesh path.
Arguments
path
- path points.point
- source point.offset
- target point offset from the source on path.
Returns
Some
with point and distance from path start point if found or None
otherwise.
pub fn project_on_path(
path: &[NavVec3],
point: NavVec3,
offset: Scalar
) -> Scalar
[src]
path: &[NavVec3],
point: NavVec3,
offset: Scalar
) -> Scalar
Project point on nav mesh path.
Arguments
path
- path points.point
- source point.offset
- target point offset from the source on path.
Returns
Distance from path start point.
pub fn point_on_path(path: &[NavVec3], s: Scalar) -> Option<NavVec3>
[src]
Find point on nav mesh path at given distance.
Arguments
path
- path points.s
- Distance from path start point.
Returns
Some
with point on path ot None
otherwise.
pub fn path_length(path: &[NavVec3]) -> Scalar
[src]
Trait Implementations
Auto Trait Implementations
impl Unpin for NavMesh
impl Sync for NavMesh
impl Send for NavMesh
impl UnwindSafe for NavMesh
impl RefUnwindSafe for NavMesh
Blanket Implementations
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> TryDefault for T where
T: Default,
T: Default,
fn try_default() -> Result<T, String>
fn unwrap_default() -> Self
impl<T> Any for T where
T: Any,
T: Any,
fn get_type_id(&self) -> TypeId
impl<T> Resource for T where
T: Any + Send + Sync,
T: Any + Send + Sync,
impl<T> Erased for T
impl<T> Event for T where
T: Send + Sync + 'static,
T: Send + Sync + 'static,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
SS: SubsetOf<SP>,