BspTree

Struct BspTree 

Source
pub struct BspTree { /* private fields */ }
Expand description

BSP tree wrapper for efficient spatial queries

Implementations§

Source§

impl BspTree

Source

pub fn new(nodes: Vec<WmoBspNode>) -> Self

Create a new BSP tree from nodes

Source

pub fn empty() -> Self

Create an empty BSP tree

Source

pub fn is_empty(&self) -> bool

Check if the tree is empty

Source

pub fn len(&self) -> usize

Get the number of nodes

Source

pub fn get_node(&self, index: usize) -> Option<&WmoBspNode>

Get a node by index

Source

pub fn query_point(&self, point: &[f32; 3]) -> Vec<usize>

Query the BSP tree to find all leaf nodes that might contain the point.

Returns indices of leaf nodes that need to be checked for triangle intersection.

Source

pub fn pick_closest_tri_neg_z( &self, point: &[f32; 3], vertices: &[Vec3], indices: &[u16], ) -> Option<usize>

Find the closest triangle below the given point using ray-triangle intersection.

Shoots a ray in the negative Z direction from the point and finds the first triangle it intersects.

§Arguments
  • point - The query point
  • vertices - All vertices in the WMO group
  • indices - Triangle indices (3 per triangle)
§Returns

The index of the closest triangle (in terms of triangle count, not face index), or None if no triangle is below the point.

Trait Implementations§

Source§

impl Clone for BspTree

Source§

fn clone(&self) -> BspTree

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BspTree

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more