-
Notifications
You must be signed in to change notification settings - Fork 123
VRageMath.MyDynamicAABBTree
← Index ← Namespace Index
public class MyDynamicAABBTreeDynamic aabb tree implementation as a prunning structure
Namespace: VRageMath
Assembly: VRage.Math.dll
A dynamic tree arranges data in a binary tree to accelerate queries such as volume queries and ray casts. Leafs are proxies with an BoundingBox. In the tree we expand the proxy BoundingBox by Settings.b2_fatAABBFactor so that the proxy BoundingBox is bigger than the client object. This allows the client object to move by small amounts without triggering a tree update. Nodes are pooled and relocatable, so we use node indices rather than pointers.
DictionaryValuesReader<int, DynamicTreeNode> Leaves { get; }
ReadOnlySpan<DynamicTreeNode> Nodes { get; }
MyDynamicAABBTree(Vector3, float = 1)
int AddProxy(ref BoundingBox, object, uint, bool = default)
Create a proxy. Provide a tight fitting BoundingBox and a userData pointer.
void GetAll<T>(List<T>, bool, List<BoundingBox> = null)
void GetAllNodeBounds(List<BoundingBox>)
void GetChildren(int, out int, out int)
void GetFatAABB(int, out BoundingBox)
Get the fat BoundingBox for a proxy.
void GetNodeLeaves(int, List<int>)
bool MoveProxy(int, ref BoundingBox, Vector3)
Move a proxy with a swepted BoundingBox. If the proxy has moved outside of its fattened BoundingBox, then the proxy is removed from the tree and re-inserted. Otherwise the function returns immediately.
void OverlapAllBoundingBox<T>(ref BoundingBox, List<T>, uint = 0, bool = default)
void OverlapAllBoundingSphere<T>(ref BoundingSphere, List<T>, bool = default)
void OverlapAllFrustum<T>(ref BoundingFrustum, List<T>, bool = default)
void OverlapAllFrustum<T>(ref BoundingFrustum, List<T>, uint, bool = default)
void OverlapAllFrustum<T>(ref BoundingFrustum, List<T>, List<bool>, bool = default)
void OverlapAllFrustum<T>(ref BoundingFrustum, Action<T, bool>)
void OverlapAllFrustum<T, Op>(ref BoundingFrustum, ref Op)
void OverlapAllFrustum<T>(ref BoundingFrustum, List<T>, List<bool>, float, bool = default)
void OverlapAllFrustum<T>(ref BoundingFrustum, Action<T, bool>, float)
void OverlapAllFrustum<T, Op>(ref BoundingFrustum, float, ref Op)
void OverlapAllFrustumAny<T>(ref BoundingFrustum, List<T>, bool = default)
void OverlapAllFrustumConservative<T>(ref BoundingFrustum, List<T>, uint, bool = default)
void OverlapAllLineSegment<T>(ref Line, List<MyLineSegmentOverlapResult<T>>)
void OverlapAllLineSegment<T>(ref Line, List<MyLineSegmentOverlapResult<T>>, uint)
bool OverlapsAnyLeafBoundingBox(ref BoundingBox)
void OverlapSizeableClusters(ref BoundingBox, List<BoundingBox>, double)
void Query(Func<int, bool>, ref BoundingBox)
Destroy a proxy. This asserts if the id is invalid.
Do you have questions, comments, suggestions for improvements? Is there something I can do better? Did I make a mistake? Please add an issue here, and prefix your issue title with Wiki. Thank you, your help will be very appreciated!