From 39b06c1d94f1c142ae8c3403b3a2f7ff38947aea Mon Sep 17 00:00:00 2001 From: SlimeYummy Date: Sun, 3 Nov 2024 18:38:46 +0800 Subject: [PATCH] rename error --- src/demo/demo.rs | 10 ++--- src/detour/base.rs | 26 ++++++------- src/detour/builder.rs | 38 +++++++++--------- src/detour/mesh.rs | 26 ++++++------- src/detour/query.rs | 56 +++++++++++++------------- src/{base.rs => error.rs} | 4 +- src/lib.rs | 4 +- src/recast/recast.rs | 82 +++++++++++++++++++-------------------- tests/solo_mesh.rs | 42 +++----------------- 9 files changed, 128 insertions(+), 160 deletions(-) rename src/{base.rs => error.rs} (92%) diff --git a/src/demo/demo.rs b/src/demo/demo.rs index 63864ff..bd61b3a 100644 --- a/src/demo/demo.rs +++ b/src/demo/demo.rs @@ -4,8 +4,8 @@ use std::mem; use std::pin::Pin; use std::slice; -use crate::base::XError; use crate::detour::DtNavMesh; +use crate::error::{RNError, RNResult}; #[allow(dead_code)] #[cxx::bridge] @@ -100,11 +100,11 @@ impl RcMeshLoaderObj { } } -pub fn load_nav_mesh(path: &str) -> Result { +pub fn load_nav_mesh(path: &str) -> RNResult { unsafe { let mesh = ffi::loadNavMesh(path); if mesh.is_null() { - return Err(XError::Failed); + return Err(RNError::Failed); } return Ok(DtNavMesh::from_ptr(mesh)); }; @@ -200,13 +200,13 @@ pub fn rc_create_chunky_tri_mesh( verts: &[[f32; 3]], tris: &[[i32; 3]], tris_per_chunk: i32, -) -> Result<(), XError> { +) -> RNResult<()> { let verts_ptr = verts.as_ptr() as *const f32; let tris_ptr = tris.as_ptr() as *const i32; let ntris = tris.len() as i32; let result = unsafe { ffi::rcCreateChunkyTriMesh(verts_ptr, tris_ptr, ntris, tris_per_chunk, cm.0) }; if !result { - return Err(XError::Failed); + return Err(RNError::Failed); } return Ok(()); } diff --git a/src/detour/base.rs b/src/detour/base.rs index 4e88f79..b3a1a21 100644 --- a/src/detour/base.rs +++ b/src/detour/base.rs @@ -1,6 +1,6 @@ use cxx::{type_id, ExternType}; -use crate::base::XError; +use crate::error::{RNError, RNResult}; #[repr(C)] #[derive(Debug, Default, Clone, Copy, PartialEq)] @@ -31,25 +31,25 @@ unsafe impl ExternType for DtStatus { } impl DtStatus { - pub fn to_result(self) -> Result<(), XError> { + pub fn to_result(self) -> RNResult<()> { if self.0 & DT_SUCCESS != 0 { return Ok(()); } else if self.0 & DT_FAILURE != 0 { match self.0 & DT_STATUS_DETAIL_MASK { - DT_WRONG_MAGIC => return Err(XError::WrongMagic), - DT_WRONG_VERSION => return Err(XError::WrongVersion), - DT_OUT_OF_MEMORY => return Err(XError::OutOfMemory), - DT_INVALID_PARAM => return Err(XError::InvalidParam), - DT_BUFFER_TOO_SMALL => return Err(XError::BufferTooSmall), - DT_OUT_OF_NODES => return Err(XError::OutOfNodes), - DT_PARTIAL_RESULT => return Err(XError::PartialResult), - DT_ALREADY_OCCUPIED => return Err(XError::AlreadyOccupied), - _ => return Err(XError::Failed), + DT_WRONG_MAGIC => return Err(RNError::WrongMagic), + DT_WRONG_VERSION => return Err(RNError::WrongVersion), + DT_OUT_OF_MEMORY => return Err(RNError::OutOfMemory), + DT_INVALID_PARAM => return Err(RNError::InvalidParam), + DT_BUFFER_TOO_SMALL => return Err(RNError::BufferTooSmall), + DT_OUT_OF_NODES => return Err(RNError::OutOfNodes), + DT_PARTIAL_RESULT => return Err(RNError::PartialResult), + DT_ALREADY_OCCUPIED => return Err(RNError::AlreadyOccupied), + _ => return Err(RNError::Failed), } } else if self.0 & DT_IN_PROGRESS != 0 { - return Err(XError::InProgress); + return Err(RNError::InProgress); } else { - return Err(XError::Failed); + return Err(RNError::Failed); } } } diff --git a/src/detour/builder.rs b/src/detour/builder.rs index b4a21d1..fde0112 100644 --- a/src/detour/builder.rs +++ b/src/detour/builder.rs @@ -3,9 +3,9 @@ use static_assertions::const_assert_eq; use std::fmt::{self, Debug, Formatter}; use std::mem; -use crate::base::XError; use crate::detour::base::{DtAABB, DtBuf}; use crate::detour::mesh::DT_VERTS_PER_POLYGON; +use crate::error::{RNError, RNResult}; #[cxx::bridge] pub(crate) mod ffi { @@ -170,73 +170,73 @@ impl CxxDtNavMeshCreateParams { } } -pub fn dt_create_nav_mesh_data(params: &mut DtNavMeshCreateParams) -> Result { +pub fn dt_create_nav_mesh_data(params: &mut DtNavMeshCreateParams) -> RNResult { let mut cp = CxxDtNavMeshCreateParams::from(params); if cp.vert_count < 3 || cp.vert_count >= 0xFFFF { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if cp.poly_count < 1 { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if unpack_len(params.polys) != cp.poly_count * 2 * cp.nvp { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if unpack_len(params.poly_flags) != cp.poly_count { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if unpack_len(params.poly_areas) != cp.poly_count { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if cp.nvp < 3 || cp.nvp > DT_VERTS_PER_POLYGON as i32 { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if cp.detail_meshes.is_null() { if unpack_len(params.detail_meshes) != cp.poly_count { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } } if unpack_len(params.off_mesh_con_rad) != cp.off_mesh_con_count { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if unpack_len(params.off_mesh_con_flags) != cp.off_mesh_con_count { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if unpack_len(params.off_mesh_con_areas) != cp.off_mesh_con_count { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if unpack_len(params.off_mesh_con_dir) != cp.off_mesh_con_count { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } if unpack_len(params.off_mesh_con_user_id) != cp.off_mesh_con_count { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } unsafe { let mut buf = DtBuf::default(); let res = ffi::dtCreateNavMeshData((&mut cp) as *mut _, &mut buf.data, &mut buf.size); if !res { - return Err(XError::Failed); + return Err(RNError::Failed); } return Ok(buf); } } -pub fn dt_nav_mesh_header_swap_endian(buf: &mut DtBuf) -> Result<(), XError> { +pub fn dt_nav_mesh_header_swap_endian(buf: &mut DtBuf) -> RNResult<()> { let res = unsafe { ffi::dtNavMeshHeaderSwapEndian(buf.data, buf.size) }; if !res { - return Err(XError::Failed); + return Err(RNError::Failed); } return Ok(()); } -pub fn dt_nav_mesh_data_swap_endian(buf: &mut DtBuf) -> Result<(), XError> { +pub fn dt_nav_mesh_data_swap_endian(buf: &mut DtBuf) -> RNResult<()> { let res = unsafe { ffi::dtNavMeshDataSwapEndian(buf.data, buf.size) }; if !res { - return Err(XError::Failed); + return Err(RNError::Failed); } return Ok(()); } diff --git a/src/detour/mesh.rs b/src/detour/mesh.rs index 1831675..4c7a8a0 100644 --- a/src/detour/mesh.rs +++ b/src/detour/mesh.rs @@ -5,8 +5,8 @@ use std::ops::{Deref, DerefMut}; use std::pin::Pin; use std::{mem, ptr}; -use crate::base::XError; use crate::detour::base::{DtAABB, DtBuf}; +use crate::error::RNResult; pub const DT_VERTS_PER_POLYGON: usize = 6; @@ -591,13 +591,13 @@ impl DtNavMesh { return self.0; } - pub fn with_params(params: &DtNavMeshParams) -> Result { + pub fn with_params(params: &DtNavMeshParams) -> RNResult { let mut mesh = DtNavMesh::new(); unsafe { mesh.inner_mut().init_with_params(params) }.to_result()?; return Ok(mesh); } - pub fn with_data(buf: DtBuf) -> Result { + pub fn with_data(buf: DtBuf) -> RNResult { let mut mesh = DtNavMesh::new(); unsafe { mesh.inner_mut() @@ -612,7 +612,7 @@ impl DtNavMesh { return unsafe { &*self.inner().getParams() }; } - pub fn add_tile(&mut self, buf: DtBuf, last_ref: DtTileRef) -> Result { + pub fn add_tile(&mut self, buf: DtBuf, last_ref: DtTileRef) -> RNResult { let mut re = DtTileRef::default(); unsafe { self.inner_mut() @@ -623,7 +623,7 @@ impl DtNavMesh { return Ok(re); } - pub fn remove_tile(&mut self, re: DtTileRef) -> Result<(), XError> { + pub fn remove_tile(&mut self, re: DtTileRef) -> RNResult<()> { return unsafe { self.inner_mut().removeTile(re, ptr::null_mut(), ptr::null_mut()) }.to_result(); } @@ -680,7 +680,7 @@ impl DtNavMesh { } } - pub fn get_tile_and_poly_by_ref(&self, re: DtPolyRef) -> Result<(&DtMeshTile, &DtPoly), XError> { + pub fn get_tile_and_poly_by_ref(&self, re: DtPolyRef) -> RNResult<(&DtMeshTile, &DtPoly)> { let mut tile = std::ptr::null(); let mut poly = std::ptr::null(); unsafe { self.inner().getTileAndPolyByRef(re, &mut tile, &mut poly) }.to_result()?; @@ -706,7 +706,7 @@ impl DtNavMesh { &self, prev_ref: DtPolyRef, poly_ref: DtPolyRef, - ) -> Result<([f32; 3], [f32; 3]), XError> { + ) -> RNResult<([f32; 3], [f32; 3])> { let mut start_pos = [0.0; 3]; let mut end_pos = [0.0; 3]; unsafe { @@ -721,21 +721,21 @@ impl DtNavMesh { return unsafe { &*self.inner().getOffMeshConnectionByRef(re) }; } - pub fn set_poly_flags(&mut self, re: DtPolyRef, flags: u16) -> Result<(), XError> { + pub fn set_poly_flags(&mut self, re: DtPolyRef, flags: u16) -> RNResult<()> { return self.inner_mut().setPolyFlags(re, flags).to_result(); } - pub fn get_poly_flags(&self, re: DtPolyRef) -> Result { + pub fn get_poly_flags(&self, re: DtPolyRef) -> RNResult { let mut flags = 0; unsafe { self.inner().getPolyFlags(re, &mut flags) }.to_result()?; return Ok(flags); } - pub fn set_poly_area(&mut self, re: DtPolyRef, area: u8) -> Result<(), XError> { + pub fn set_poly_area(&mut self, re: DtPolyRef, area: u8) -> RNResult<()> { return self.inner_mut().setPolyArea(re, area).to_result(); } - pub fn get_poly_area(&self, re: DtPolyRef) -> Result { + pub fn get_poly_area(&self, re: DtPolyRef) -> RNResult { let mut area = 0; unsafe { self.inner().getPolyArea(re, &mut area) }.to_result()?; return Ok(area); @@ -745,11 +745,11 @@ impl DtNavMesh { return self.inner().getTileStateSize(tile.inner()) as usize; } - pub unsafe fn store_tile_state(&self, re: DtTileRef, data: &mut [u8]) -> Result<(), XError> { + pub unsafe fn store_tile_state(&self, re: DtTileRef, data: &mut [u8]) -> RNResult<()> { return unsafe { ffi::dtmt_storeTileState(self.inner(), re, data.as_mut_ptr(), data.len() as i32) }.to_result(); } - pub unsafe fn restore_tile_state(&mut self, re: DtTileRef, data: &[u8]) -> Result<(), XError> { + pub unsafe fn restore_tile_state(&mut self, re: DtTileRef, data: &[u8]) -> RNResult<()> { return unsafe { ffi::dtmt_restoreTileState(self.inner_mut(), re, data.as_ptr(), data.len() as i32) } .to_result(); } diff --git a/src/detour/query.rs b/src/detour/query.rs index 3e768cd..a1a3adb 100644 --- a/src/detour/query.rs +++ b/src/detour/query.rs @@ -3,9 +3,9 @@ use static_assertions::const_assert_eq; use std::ptr; use std::{mem, pin::Pin}; -use crate::base::XError; use crate::detour::base::DtAABB; use crate::detour::mesh::{DtMeshTile, DtNavMesh, DtPoly, DtPolyRef, DT_MAX_AREAS}; +use crate::error::RNResult; #[cxx::bridge] pub(crate) mod ffi { @@ -444,11 +444,11 @@ impl DtNavMeshQuery { return self.0; } - pub fn init(&mut self, nav: &DtNavMesh, max_nodes: usize) -> Result<(), XError> { + pub fn init(&mut self, nav: &DtNavMesh, max_nodes: usize) -> RNResult<()> { return unsafe { self.inner_mut().init(nav.as_ptr(), max_nodes as i32) }.to_result(); } - pub fn with_mesh(nav: &DtNavMesh, max_nodes: usize) -> Result { + pub fn with_mesh(nav: &DtNavMesh, max_nodes: usize) -> RNResult { let mut query = DtNavMeshQuery::new(); query.init(nav, max_nodes)?; return Ok(query); @@ -462,7 +462,7 @@ impl DtNavMeshQuery { end_pos: &[f32; 3], filter: &DtQueryFilter, path: &mut [DtPolyRef], - ) -> Result { + ) -> RNResult { let mut path_count = 0; unsafe { self.inner().findPath( @@ -489,7 +489,7 @@ impl DtNavMeshQuery { straight_path_flags: Option<&mut [DtStraightPathFlags]>, straight_path_refs: Option<&mut [DtPolyRef]>, options: DtStraightPathOptions, - ) -> Result { + ) -> RNResult { let mut max_result = straight_path.len(); let mut straight_path_flags_ptr = ptr::null_mut(); @@ -531,7 +531,7 @@ impl DtNavMeshQuery { end_pos: &[f32; 3], filter: &DtQueryFilter, any_angle: bool, - ) -> Result<(), XError> { + ) -> RNResult<()> { let mut options = 0; if any_angle { options = ffi::dtFindPathOptions::DT_FINDPATH_ANY_ANGLE.repr; @@ -549,13 +549,13 @@ impl DtNavMeshQuery { .to_result(); } - pub fn update_sliced_find_path(&mut self, max_iter: usize) -> Result { + pub fn update_sliced_find_path(&mut self, max_iter: usize) -> RNResult { let mut done_iters = 0; unsafe { self.inner_mut().updateSlicedFindPath(max_iter as i32, &mut done_iters) }.to_result()?; return Ok(done_iters as usize); } - pub fn finalize_sliced_find_path(&mut self, path: &mut [DtPolyRef]) -> Result { + pub fn finalize_sliced_find_path(&mut self, path: &mut [DtPolyRef]) -> RNResult { let mut path_count = 0; unsafe { self.inner_mut() @@ -569,7 +569,7 @@ impl DtNavMeshQuery { &mut self, existing: &[DtPolyRef], path: &mut [DtPolyRef], - ) -> Result { + ) -> RNResult { let mut path_count = 0; unsafe { self.inner_mut().finalizeSlicedFindPathPartial( @@ -593,7 +593,7 @@ impl DtNavMeshQuery { result_ref: Option<&mut [DtPolyRef]>, result_parent: Option<&mut [DtPolyRef]>, result_cost: Option<&mut [f32]>, - ) -> Result { + ) -> RNResult { let mut max_result = usize::MAX; let mut result_ref_ptr = ptr::null_mut(); @@ -644,7 +644,7 @@ impl DtNavMeshQuery { result_ref: Option<&mut [DtPolyRef]>, result_parent: Option<&mut [DtPolyRef]>, result_cost: Option<&mut [f32]>, - ) -> Result { + ) -> RNResult { let mut max_result = usize::MAX; let mut result_ref_ptr = ptr::null_mut(); @@ -687,7 +687,7 @@ impl DtNavMeshQuery { return Ok(result_count as usize); } - pub fn get_path_from_dijkstra_search(&self, end_ref: DtPolyRef, path: &mut [DtPolyRef]) -> Result { + pub fn get_path_from_dijkstra_search(&self, end_ref: DtPolyRef, path: &mut [DtPolyRef]) -> RNResult { let mut path_count = 0; unsafe { self.inner() @@ -703,7 +703,7 @@ impl DtNavMeshQuery { center: &[f32; 3], half_extents: &[f32; 3], filter: &DtQueryFilter, - ) -> Result<(DtPolyRef, [f32; 3]), XError> { + ) -> RNResult<(DtPolyRef, [f32; 3])> { let mut nearest_ref = DtPolyRef::default(); let mut nearest_pt = [0.0; 3]; unsafe { @@ -725,7 +725,7 @@ impl DtNavMeshQuery { center: &[f32; 3], half_extents: &[f32; 3], filter: &DtQueryFilter, - ) -> Result<(DtPolyRef, [f32; 3], bool), XError> { + ) -> RNResult<(DtPolyRef, [f32; 3], bool)> { let mut nearest_ref = DtPolyRef::default(); let mut nearest_pt = [0.0; 3]; let mut is_over_poly = false; @@ -749,7 +749,7 @@ impl DtNavMeshQuery { half_extents: &[f32; 3], filter: &DtQueryFilter, polys: &mut [DtPolyRef], - ) -> Result { + ) -> RNResult { let mut poly_count = 0; unsafe { self.inner().queryPolygons( @@ -775,7 +775,7 @@ impl DtNavMeshQuery { filter: &DtQueryFilter, result_ref: &mut [DtPolyRef], result_parent: Option<&mut [DtPolyRef]>, - ) -> Result { + ) -> RNResult { let mut max_result = 0; let mut result_parent_ptr = ptr::null_mut(); if let Some(result_parent) = result_parent { @@ -808,7 +808,7 @@ impl DtNavMeshQuery { end_pos: &[f32; 3], filter: &DtQueryFilter, visited: &mut [DtPolyRef], - ) -> Result<([f32; 3], usize), XError> { + ) -> RNResult<([f32; 3], usize)> { let mut visited_count = 0; let mut result_pos = [0.0; 3]; unsafe { @@ -835,7 +835,7 @@ impl DtNavMeshQuery { end_pos: &[f32; 3], filter: &DtQueryFilter, path: Option<&mut [DtPolyRef]>, - ) -> Result<(f32, [f32; 3], usize), XError> { + ) -> RNResult<(f32, [f32; 3], usize)> { let mut max_path = 0; let mut path_ptr = ptr::null_mut(); if let Some(path) = path { @@ -871,7 +871,7 @@ impl DtNavMeshQuery { filter: &DtQueryFilter, options: DtStraightPathFlags, prev_ref: Option, - ) -> Result { + ) -> RNResult { let mut hit = DtRaycastHit::default(); unsafe { self.inner().raycast2( @@ -895,7 +895,7 @@ impl DtNavMeshQuery { center_pos: &[f32; 3], max_radius: f32, filter: &DtQueryFilter, - ) -> Result<(f32, [f32; 3], [f32; 3]), XError> { + ) -> RNResult<(f32, [f32; 3], [f32; 3])> { let mut hit_dist = 0.0; let mut hit_pos = [0.0; 3]; let mut hit_normal = [0.0; 3]; @@ -920,7 +920,7 @@ impl DtNavMeshQuery { filter: &DtQueryFilter, segment_verts: &mut [DtAABB], segment_refs: Option<&mut [DtPolyRef]>, - ) -> Result { + ) -> RNResult { let mut max_segments = segment_verts.len(); let mut segment_refs_ptr = ptr::null_mut(); @@ -945,7 +945,7 @@ impl DtNavMeshQuery { } /// Returns `Result<(closest: [f32; 3], pos_over_poly: bool)>` - pub fn closest_point_on_poly(&self, re: DtPolyRef, pos: &[f32; 3]) -> Result<([f32; 3], bool), XError> { + pub fn closest_point_on_poly(&self, re: DtPolyRef, pos: &[f32; 3]) -> RNResult<([f32; 3], bool)> { let mut closest: [f32; 3] = [0.0; 3]; let mut pos_over_poly = false; unsafe { @@ -956,7 +956,7 @@ impl DtNavMeshQuery { return Ok((closest, pos_over_poly)); } - pub fn closest_point_on_poly_boundary(&self, re: DtPolyRef, pos: &[f32; 3]) -> Result<[f32; 3], XError> { + pub fn closest_point_on_poly_boundary(&self, re: DtPolyRef, pos: &[f32; 3]) -> RNResult<[f32; 3]> { let mut closest: [f32; 3] = [0.0; 3]; unsafe { self.inner() @@ -966,7 +966,7 @@ impl DtNavMeshQuery { return Ok(closest); } - pub fn get_poly_height(&self, re: DtPolyRef, pos: &[f32; 3]) -> Result { + pub fn get_poly_height(&self, re: DtPolyRef, pos: &[f32; 3]) -> RNResult { let mut height = 0.0; unsafe { self.inner().getPolyHeight(re, pos.as_ptr(), &mut height) }.to_result()?; return Ok(height); @@ -989,11 +989,7 @@ impl DtNavMeshQuery { // } /// Returns `Result<(random_ref: DtPolyRef, random_pt: [f32; 3])>` - pub fn find_random_point( - &self, - filter: &DtQueryFilter, - frand: fn() -> f32, - ) -> Result<(DtPolyRef, [f32; 3]), XError> { + pub fn find_random_point(&self, filter: &DtQueryFilter, frand: fn() -> f32) -> RNResult<(DtPolyRef, [f32; 3])> { let mut random_ref = DtPolyRef::default(); let mut random_pt = [0.0; 3]; unsafe { ffi::dtnmq_findRandomPoint(self.inner(), filter, frand, &mut random_ref, random_pt.as_mut_ptr()) } @@ -1009,7 +1005,7 @@ impl DtNavMeshQuery { max_radius: f32, filter: &DtQueryFilter, frand: fn() -> f32, - ) -> Result<(DtPolyRef, [f32; 3]), XError> { + ) -> RNResult<(DtPolyRef, [f32; 3])> { let mut random_ref = DtPolyRef::default(); let mut random_pt = [0.0; 3]; unsafe { diff --git a/src/base.rs b/src/error.rs similarity index 92% rename from src/base.rs rename to src/error.rs index ed78deb..833b7ca 100644 --- a/src/base.rs +++ b/src/error.rs @@ -1,7 +1,7 @@ use thiserror::Error; #[derive(Error, Debug, Clone, Copy)] -pub enum XError { +pub enum RNError { #[error("Operation failed.")] Failed, #[error("Operation in progress.")] @@ -23,3 +23,5 @@ pub enum XError { #[error("A tile has already been assigned to the given x,y coordinate")] AlreadyOccupied, } + +pub type RNResult = Result; diff --git a/src/lib.rs b/src/lib.rs index ed54448..68316c2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,5 @@ -mod base; -pub use base::*; +mod error; +pub use error::*; pub mod demo; pub mod detour; diff --git a/src/recast/recast.rs b/src/recast/recast.rs index 3fac1b4..f62029b 100644 --- a/src/recast/recast.rs +++ b/src/recast/recast.rs @@ -6,7 +6,7 @@ use std::ops::{Deref, DerefMut}; use std::pin::Pin; use std::slice; -use crate::base::XError; +use crate::error::{RNError, RNResult}; pub const RC_SPAN_HEIGHT_BITS: u32 = 13; pub const RC_SPAN_MAX_HEIGHT: u32 = (1 << RC_SPAN_HEIGHT_BITS) - 1; @@ -1635,7 +1635,7 @@ pub fn rc_create_heightfield( max_bounds: &[f32; 3], cell_size: f32, cell_height: f32, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcCreateHeightfield( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -1648,7 +1648,7 @@ pub fn rc_create_heightfield( cell_height, ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_mark_walkable_triangles( @@ -1657,9 +1657,9 @@ pub fn rc_mark_walkable_triangles( verts: &[[f32; 3]], tris: &[[i32; 3]], tri_area_ids: &mut [u8], -) -> Result<(), XError> { +) -> RNResult<()> { if tri_area_ids.len() < tris.len() { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } unsafe { ffi::rcMarkWalkableTriangles( @@ -1681,9 +1681,9 @@ pub fn rc_clear_unwalkable_triangles( verts: &[[f32; 3]], tris: &[[i32; 3]], tri_area_ids: &mut [u8], -) -> Result<(), XError> { +) -> RNResult<()> { if tri_area_ids.len() < tris.len() { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } unsafe { ffi::rcClearUnwalkableTriangles( @@ -1708,7 +1708,7 @@ pub fn rc_add_span( span_max: u16, area_id: u8, flag_merge_threshold: i32, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcAddSpan( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -1721,7 +1721,7 @@ pub fn rc_add_span( flag_merge_threshold, ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_rasterize_triangle( @@ -1732,7 +1732,7 @@ pub fn rc_rasterize_triangle( area_id: u8, heightfield: &mut RcHeightfield, flag_merge_threshold: i32, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcRasterizeTriangle( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -1744,7 +1744,7 @@ pub fn rc_rasterize_triangle( flag_merge_threshold, ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_rasterize_triangles_1( @@ -1754,9 +1754,9 @@ pub fn rc_rasterize_triangles_1( tri_area_ids: &[u8], heightfield: &mut RcHeightfield, flag_merge_threshold: i32, -) -> Result { +) -> RNResult { if tri_area_ids.len() < tris.len() { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } let res = unsafe { ffi::rcRasterizeTriangles1( @@ -1780,9 +1780,9 @@ pub fn rc_rasterize_triangles_2( tri_area_ids: &[u8], heightfield: &mut RcHeightfield, flag_merge_threshold: i32, -) -> Result { +) -> RNResult { if tri_area_ids.len() < tris.len() { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } let res = unsafe { ffi::rcRasterizeTriangles2( @@ -1805,9 +1805,9 @@ pub fn rc_rasterize_triangles_3( tri_area_ids: &[u8], heightfield: &mut RcHeightfield, flag_merge_threshold: i32, -) -> Result { +) -> RNResult { if tri_area_ids.len() < verts.len() { - return Err(XError::InvalidParam); + return Err(RNError::InvalidParam); } let res = unsafe { ffi::rcRasterizeTriangles3( @@ -1878,7 +1878,7 @@ pub fn rc_build_compact_heightfield( walkable_climb: i32, heightfield: &RcHeightfield, compact_heightfield: &mut RcCompactHeightfield, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcBuildCompactHeightfield( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -1888,14 +1888,14 @@ pub fn rc_build_compact_heightfield( compact_heightfield.inner_mut(), ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_erode_walkable_area( context: &mut RcContext, erosion_radius: i32, compact_heightfield: &mut RcCompactHeightfield, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcErodeWalkableArea( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -1903,20 +1903,20 @@ pub fn rc_erode_walkable_area( compact_heightfield.inner_mut(), ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_median_filter_walkable_area( context: &mut RcContext, compact_heightfield: &mut RcCompactHeightfield, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcMedianFilterWalkableArea( context.0.pin_mut().get_unchecked_mut() as *mut _, compact_heightfield.inner_mut(), ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_mark_box_area( @@ -1996,9 +1996,9 @@ pub fn rc_mark_cylinder_area( } } -pub fn rc_build_distance_field(context: &mut RcContext, chf: &mut RcCompactHeightfield) -> Result<(), XError> { +pub fn rc_build_distance_field(context: &mut RcContext, chf: &mut RcCompactHeightfield) -> RNResult<()> { let res = unsafe { ffi::rcBuildDistanceField(context.0.pin_mut().get_unchecked_mut() as *mut _, chf.inner_mut()) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_build_regions( @@ -2007,7 +2007,7 @@ pub fn rc_build_regions( border_size: i32, min_region_area: i32, merge_region_area: i32, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcBuildRegions( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -2017,7 +2017,7 @@ pub fn rc_build_regions( merge_region_area, ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_build_layer_regions( @@ -2025,7 +2025,7 @@ pub fn rc_build_layer_regions( chf: &mut RcCompactHeightfield, border_size: i32, min_region_area: i32, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcBuildLayerRegions( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -2034,7 +2034,7 @@ pub fn rc_build_layer_regions( min_region_area, ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_build_regions_monotone( @@ -2043,7 +2043,7 @@ pub fn rc_build_regions_monotone( border_size: i32, min_region_area: i32, merge_region_area: i32, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcBuildRegionsMonotone( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -2053,7 +2053,7 @@ pub fn rc_build_regions_monotone( merge_region_area, ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_build_heightfield_layers( @@ -2062,7 +2062,7 @@ pub fn rc_build_heightfield_layers( border_size: i32, walkable_height: i32, lset: &mut RcHeightfieldLayerSet, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcBuildHeightfieldLayers( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -2072,7 +2072,7 @@ pub fn rc_build_heightfield_layers( lset.inner_mut(), ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_build_contours( @@ -2082,7 +2082,7 @@ pub fn rc_build_contours( max_edge_len: i32, cset: &mut RcContourSet, build_flags: RcBuildContoursFlags, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcBuildContours( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -2093,7 +2093,7 @@ pub fn rc_build_contours( build_flags.repr, ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_build_poly_mesh( @@ -2101,7 +2101,7 @@ pub fn rc_build_poly_mesh( cset: &RcContourSet, nvp: i32, mesh: &mut RcPolyMesh, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcBuildPolyMesh( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -2110,7 +2110,7 @@ pub fn rc_build_poly_mesh( mesh.inner_mut(), ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_merge_poly_meshes(context: &mut RcContext, meshes: &[&RcPolyMesh], mesh: &mut RcPolyMesh) -> bool { @@ -2132,7 +2132,7 @@ pub fn rc_build_poly_mesh_detail( sample_dist: f32, sample_max_error: f32, dmesh: &mut RcPolyMeshDetail, -) -> Result<(), XError> { +) -> RNResult<()> { let res = unsafe { ffi::rcBuildPolyMeshDetail( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -2143,10 +2143,10 @@ pub fn rc_build_poly_mesh_detail( dmesh.inner_mut(), ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } -pub fn rc_copy_poly_mesh(context: &mut RcContext, src: &RcPolyMesh, dst: &mut RcPolyMesh) -> Result<(), XError> { +pub fn rc_copy_poly_mesh(context: &mut RcContext, src: &RcPolyMesh, dst: &mut RcPolyMesh) -> RNResult<()> { let res = unsafe { ffi::rcCopyPolyMesh( context.0.pin_mut().get_unchecked_mut() as *mut _, @@ -2154,7 +2154,7 @@ pub fn rc_copy_poly_mesh(context: &mut RcContext, src: &RcPolyMesh, dst: &mut Rc dst.inner_mut(), ) }; - return if res { Ok(()) } else { Err(XError::Failed) }; + return if res { Ok(()) } else { Err(RNError::Failed) }; } pub fn rc_merge_poly_mesh_details( diff --git a/tests/solo_mesh.rs b/tests/solo_mesh.rs index 7e8543a..1a189eb 100644 --- a/tests/solo_mesh.rs +++ b/tests/solo_mesh.rs @@ -107,12 +107,7 @@ fn build_nav_mesh(folder: &str, name: &str) -> DtNavMesh { cfg.walkable_climb, ) .unwrap(); - compare_with_rkyv( - folder, - &format!("{}_solid_1", name), - &dump_heightfield_state(&solid), - ) - .unwrap(); + compare_with_rkyv(folder, &format!("{}_solid_1", name), &dump_heightfield_state(&solid)).unwrap(); // // Step 3. Filter walkable surfaces. @@ -121,12 +116,7 @@ fn build_nav_mesh(folder: &str, name: &str) -> DtNavMesh { rc_filter_low_hanging_walkable_obstacles(&mut ctx, cfg.walkable_climb, &mut solid); rc_filter_ledge_spans(&mut ctx, cfg.walkable_height, cfg.walkable_climb, &mut solid); rc_filter_walkable_low_height_spans(&mut ctx, cfg.walkable_height, &mut solid); - compare_with_rkyv( - folder, - &format!("{}_solid_2", name), - &dump_heightfield_state(&solid), - ) - .unwrap(); + compare_with_rkyv(folder, &format!("{}_solid_2", name), &dump_heightfield_state(&solid)).unwrap(); // // Step 4. Partition walkable surface to simple regions. @@ -144,12 +134,7 @@ fn build_nav_mesh(folder: &str, name: &str) -> DtNavMesh { cfg.merge_region_area, ) .unwrap(); - compare_with_rkyv( - folder, - &format!("{}_chf", name), - &dump_compact_heightfield_state(&chf), - ) - .unwrap(); + compare_with_rkyv(folder, &format!("{}_chf", name), &dump_compact_heightfield_state(&chf)).unwrap(); // // Step 5. Trace and simplify region contours. @@ -165,12 +150,7 @@ fn build_nav_mesh(folder: &str, name: &str) -> DtNavMesh { RcBuildContoursFlags::RC_CONTOUR_TESS_WALL_EDGES, ) .unwrap(); - compare_with_rkyv( - folder, - &format!("{}_cset", name), - &dump_contour_set_state(&cset), - ) - .unwrap(); + compare_with_rkyv(folder, &format!("{}_cset", name), &dump_contour_set_state(&cset)).unwrap(); // // Step 6. Build polygons mesh from contours. @@ -178,12 +158,7 @@ fn build_nav_mesh(folder: &str, name: &str) -> DtNavMesh { let mut pmesh = RcPolyMesh::new(); rc_build_poly_mesh(&mut ctx, &cset, cfg.max_verts_per_poly, &mut pmesh).unwrap(); - compare_with_rkyv( - folder, - &format!("{}_pmesh", name), - &dump_poly_mesh_state(&pmesh), - ) - .unwrap(); + compare_with_rkyv(folder, &format!("{}_pmesh", name), &dump_poly_mesh_state(&pmesh)).unwrap(); // // Step 7. Create detail mesh which allows to access approximate height on each polygon. @@ -199,12 +174,7 @@ fn build_nav_mesh(folder: &str, name: &str) -> DtNavMesh { &mut dmesh, ) .unwrap(); - compare_with_rkyv( - folder, - &format!("{}_dmesh", name), - &dump_poly_mesh_detail_state(&dmesh), - ) - .unwrap(); + compare_with_rkyv(folder, &format!("{}_dmesh", name), &dump_poly_mesh_detail_state(&dmesh)).unwrap(); // // Step 8. Create Detour data from Recast poly mesh.