Visual3D Game EngineAPI Documentation for XNA, C#, VB, and .NET
The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes (aabb tree). This btDbvt is used for soft body collision detection and for the DbvtBroadphase. It has a fast insert, remove and update of nodes. Unlike the QuantizedBvh, nodes can be dynamically moved around, which allows for change in topology of the underlying data structure.

Namespace: Visual3D.Physics.BulletX
Assembly: Visual3D.Physics (in Visual3D.Physics.dll) Version: 1.0.0.0 (1.0.0.0)

Syntax

      
 C#  Visual Basic 
public class btDbvt : IDisposable
Public Class btDbvt _
	Implements IDisposable

Members

            
 All Members  Constructors   Fields   Methods  
 Public

 Protected
 Instance

 Static 
 Declared

 Inherited
 XNA Framework Only 

 .NET Compact Framework Only 

 MemberDescription
btDbvt()()()()
Initializes a new instance of the btDbvt class
allocate(AlignedObjectArray<(Of <<'(Int32>)>>), AlignedObjectArray<(Of <<'(btDbvt..::..sStkNPS>)>>), btDbvt..::..sStkNPS)
benchmark()()()()
bottomup(btDbvt, AlignedObjectArray<(Of <<'(btDbvtNode>)>>))
bounds(AlignedObjectArray<(Of <<'(btDbvtNode>)>>))
Clear()()()()
clone(btDbvt, btDbvt..::..IClone)
collideKDOP(btDbvtNode, Vector3*, Single*, Int32, btDbvt..::..ICollide)
collideTT(btDbvtNode, btDbvtNode, btDbvt..::..ICollide)
collideTTpersistentStack(btDbvtNode, btDbvtNode, btDbvt..::..ICollide)
collideTU(btDbvtNode, btDbvt..::..ICollide)
collideTV(btDbvtNode, btDbvtAabbMm, btDbvt..::..ICollide)
countLeaves(btDbvtNode)
createnode(btDbvt, btDbvtNode, Object)
createnode(btDbvt, btDbvtNode, btDbvtAabbMm, Object)
createnode(btDbvt, btDbvtNode, btDbvtAabbMm, btDbvtAabbMm, Object)
deletenode(btDbvt, btDbvtNode)
Dispose()()()()
empty()()()()
enumLeaves(btDbvtNode, btDbvt..::..ICollide)
enumNodes(btDbvtNode, btDbvt..::..ICollide)
extractLeaves(btDbvtNode, AlignedObjectArray<(Of <<'(btDbvtNode>)>>))
fetchleaves(btDbvt, btDbvtNode, AlignedObjectArray<(Of <<'(btDbvtNode>)>>))
fetchleaves(btDbvt, btDbvtNode, AlignedObjectArray<(Of <<'(btDbvtNode>)>>), Int32)
getmaxdepth(btDbvtNode, Int32, Int32%)
indexof(btDbvtNode)
insert(btDbvtAabbMm, Object)
insertleaf(btDbvt, btDbvtNode, btDbvtNode)
m_free
m_leaves
m_lkhd
m_opath
m_root
m_stkStack
maxdepth(btDbvtNode)
merge(btDbvtAabbMm%, btDbvtAabbMm%, btDbvtAabbMm%)
nearest(array<Int32>[]()[][], array<btDbvt..::..sStkNPS>[]()[][], Single, Int32, Int32)
OptimizeBottomUp()()()()
optimizeIncremental(Int32)
optimizeTopDown()()()()
optimizeTopDown(Int32)
rayTest(btDbvtNode, Vector3, Vector3, btDbvt..::..ICollide)
rayTest is a re-entrant ray test, and can be called in parallel as long as the btAlignedAlloc is thread-safe (uses locking etc) rayTest is slower than rayTestInternal, because it builds a local stack, using memory allocations, and it recomputes signs/rayDirectionInverses each time
rayTestInternal(btDbvtNode, Vector3, Vector3, Vector3, array<UInt32>[]()[][], Single, Vector3, Vector3, btDbvt..::..ICollide)
rayTestInternal is faster than rayTest, because it uses a persistent stack (to reduce dynamic memory allocations to a minimum) and it uses precomputed signs/rayInverseDirections rayTestInternal is used by btDbvtBroadphase to accelerate world ray casts
recursedeletenode(btDbvt, btDbvtNode)
remove(btDbvtNode)
removeleaf(btDbvt, btDbvtNode)
size(btDbvtAabbMm%)
sort(btDbvtNode%, btDbvtNode%)
split(AlignedObjectArray<(Of <<'(btDbvtNode>)>>), AlignedObjectArray<(Of <<'(btDbvtNode>)>>), AlignedObjectArray<(Of <<'(btDbvtNode>)>>), Vector3, Vector3)
topdown(btDbvt, AlignedObjectArray<(Of <<'(btDbvtNode>)>>), Int32)
update(btDbvtNode)
update(btDbvtNode, Int32)
update(btDbvtNode, btDbvtAabbMm%)
update(btDbvtNode, btDbvtAabbMm%, Vector3%)
update(btDbvtNode, btDbvtAabbMm%, Single)
update(btDbvtNode, btDbvtAabbMm%, Vector3%, Single)
write(btDbvt..::..IWriter)

Inheritance Hierarchy

System..::..Object
  Visual3D.Physics.BulletX..::..btDbvt

See Also