#include <OPC_SphereCollider.h>
Protected Attributes | |
Point | mCenter |
Sphere center. More... | |
float | mRadius2 |
Sphere radius squared. More... | |
![]() | |
Point | mCenterCoeff |
Point | mExtentsCoeff |
udword | mNbVolumeBVTests |
Number of Volume-BV tests. More... | |
udword | mNbVolumePrimTests |
Number of Volume-Primitive tests. More... | |
Container * | mTouchedPrimitives |
List of touched primitives. More... | |
![]() | |
const BaseModel * | mCurrentModel |
Current model for collision query (owner of touched faces) More... | |
udword | mFlags |
Bit flags. More... | |
const MeshInterface * | mIMesh |
User-defined mesh interface. More... | |
Contains a sphere-vs-tree collider. This class performs a collision test between a sphere and an AABB tree. You can use this to do a standard player vs world collision, in a Nettle/Telemachos way. It doesn't suffer from all reported bugs in those two classic codes - the "new" one by Paul Nettle is a debuggued version I think. Collision response can be driven by reported collision data - it works extremely well for me. In sake of efficiency, all meshes (that is, all AABB trees) should of course also be kept in an extra hierarchical structure (octree, whatever).
Definition at line 35 of file OPC_SphereCollider.h.
SphereCollider::SphereCollider | ( | ) |
Constructor.
Definition at line 63 of file OPC_SphereCollider.cpp.
|
virtual |
Destructor.
Definition at line 74 of file OPC_SphereCollider.cpp.
|
protected |
Recursive collision query for normal AABB trees.
node | [in] current collision node |
Definition at line 343 of file OPC_SphereCollider.cpp.
|
protected |
Recursive collision query for no-leaf AABB trees.
node | [in] current collision node |
Definition at line 461 of file OPC_SphereCollider.cpp.
|
protected |
Recursive collision query for quantized AABB trees.
node | [in] current collision node |
Definition at line 397 of file OPC_SphereCollider.cpp.
|
protected |
Recursive collision query for quantized no-leaf AABB trees.
node | [in] current collision node |
Definition at line 505 of file OPC_SphereCollider.cpp.
|
protected |
Recursive collision query for vanilla AABB trees.
node | [in] current collision node |
Definition at line 559 of file OPC_SphereCollider.cpp.
|
protected |
Recursive collision query for normal AABB trees, without primitive tests.
node | [in] current collision node |
Definition at line 370 of file OPC_SphereCollider.cpp.
|
protected |
Recursive collision query for no-leaf AABB trees, without primitive tests.
node | [in] current collision node |
Definition at line 483 of file OPC_SphereCollider.cpp.
|
protected |
Recursive collision query for quantized AABB trees, without primitive tests.
node | [in] current collision node |
Definition at line 429 of file OPC_SphereCollider.cpp.
|
protected |
Recursive collision query for quantized no-leaf AABB trees, without primitive tests.
node | [in] current collision node |
Definition at line 532 of file OPC_SphereCollider.cpp.
bool SphereCollider::Collide | ( | SphereCache & | cache, |
const Sphere & | sphere, | ||
const AABBTree * | tree | ||
) |
Collision query for vanilla AABB trees.
cache | [in/out] a sphere cache |
sphere | [in] collision sphere in world space |
tree | [in] AABB tree |
Definition at line 284 of file OPC_SphereCollider.cpp.
bool SphereCollider::Collide | ( | SphereCache & | cache, |
const Sphere & | sphere, | ||
const Model & | model, | ||
const Matrix4x4 * | worlds = null , |
||
const Matrix4x4 * | worldm = null |
||
) |
Generic collision query for generic OPCODE models. After the call, access the results:
cache | [in/out] a sphere cache |
sphere | [in] collision sphere in local space |
model | [in] Opcode model to collide with |
worlds | [in] sphere's world matrix, or null |
worldm | [in] model's world matrix, or null |
Definition at line 94 of file OPC_SphereCollider.cpp.
|
protected |
Initializes a collision query :
cache | [in/out] a sphere cache |
sphere | [in] sphere in local space |
worlds | [in] sphere's world matrix, or null |
worldm | [in] model's world matrix, or null |
Definition at line 166 of file OPC_SphereCollider.cpp.
|
protected |
Sphere-AABB overlap test, based on Jim Arvo's code.
center | [in] box center |
extents | [in] box extents |
Definition at line 9 of file OPC_SphereAABBOverlap.h.
Checks the sphere completely contains the box. In which case we can end the query sooner.
bc | [in] box center |
be | [in] box extents |
Definition at line 311 of file OPC_SphereCollider.cpp.
|
protected |
Definition at line 9 of file OPC_SphereTriOverlap.h.
|
protected |
Sphere center.
Definition at line 64 of file OPC_SphereCollider.h.
|
protected |
Sphere radius squared.
Definition at line 65 of file OPC_SphereCollider.h.