Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SphereCollider Class Reference

#include <OPC_SphereCollider.h>

Inheritance diagram for SphereCollider:
Inheritance graph
[legend]

Public Member Functions

bool Collide (SphereCache &cache, const Sphere &sphere, const Model &model, const Matrix4x4 *worlds=null, const Matrix4x4 *worldm=null)
 
bool Collide (SphereCache &cache, const Sphere &sphere, const AABBTree *tree)
 
 SphereCollider ()
 
virtual ~SphereCollider ()
 
- Public Member Functions inherited from VolumeCollider
inline_ udword GetNbTouchedPrimitives () const
 
inline_ udword GetNbVolumeBVTests () const
 
inline_ udword GetNbVolumePrimTests () const
 
inline_ const udwordGetTouchedPrimitives () const
 
 override (Collider) const char *ValidateSettings()
 
 VolumeCollider ()
 
virtual ~VolumeCollider ()=0
 
- Public Member Functions inherited from Collider
 Collider ()
 
inline_ BOOL ContactFound () const
 
inline_ BOOL FirstContactEnabled () const
 
inline_ BOOL GetContactStatus () const
 
inline_ void SetFirstContact (bool flag)
 
inline_ void SetPrimitiveTests (bool flag)
 
inline_ void SetTemporalCoherence (bool flag)
 
inline_ BOOL SkipPrimitiveTests () const
 
inline_ BOOL TemporalCoherenceEnabled () const
 
inline_ BOOL TemporalHit () const
 
virtual const char * ValidateSettings ()=0
 
virtual ~Collider ()
 

Protected Member Functions

void _Collide (const AABBCollisionNode *node)
 
void _Collide (const AABBNoLeafNode *node)
 
void _Collide (const AABBQuantizedNode *node)
 
void _Collide (const AABBQuantizedNoLeafNode *node)
 
void _Collide (const AABBTreeNode *node)
 
void _CollideNoPrimitiveTest (const AABBCollisionNode *node)
 
void _CollideNoPrimitiveTest (const AABBNoLeafNode *node)
 
void _CollideNoPrimitiveTest (const AABBQuantizedNode *node)
 
void _CollideNoPrimitiveTest (const AABBQuantizedNoLeafNode *node)
 
BOOL InitQuery (SphereCache &cache, const Sphere &sphere, const Matrix4x4 *worlds=null, const Matrix4x4 *worldm=null)
 
inline_ BOOL SphereAABBOverlap (const Point &center, const Point &extents)
 
inline_ BOOL SphereContainsBox (const Point &bc, const Point &be)
 
BOOL SphereTriOverlap (const Point &vert0, const Point &vert1, const Point &vert2)
 
- Protected Member Functions inherited from VolumeCollider
void _Dump (const AABBCollisionNode *node)
 
void _Dump (const AABBNoLeafNode *node)
 
void _Dump (const AABBQuantizedNode *node)
 
void _Dump (const AABBQuantizedNoLeafNode *node)
 
inline_ BOOL IsCacheValid (VolumeCache &cache)
 
 override (Collider) inline_ void InitQuery()
 
- Protected Member Functions inherited from Collider
virtual inline_ void InitQuery ()
 
inline_ BOOL Setup (const BaseModel *model)
 

Protected Attributes

Point mCenter
 Sphere center. More...
 
float mRadius2
 Sphere radius squared. More...
 
- Protected Attributes inherited from VolumeCollider
Point mCenterCoeff
 
Point mExtentsCoeff
 
udword mNbVolumeBVTests
 Number of Volume-BV tests. More...
 
udword mNbVolumePrimTests
 Number of Volume-Primitive tests. More...
 
ContainermTouchedPrimitives
 List of touched primitives. More...
 
- Protected Attributes inherited from Collider
const BaseModelmCurrentModel
 Current model for collision query (owner of touched faces) More...
 
udword mFlags
 Bit flags. More...
 
const MeshInterfacemIMesh
 User-defined mesh interface. More...
 

Detailed Description

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).

Author
Pierre Terdiman
Version
1.3
Date
June, 2, 2001

Definition at line 35 of file OPC_SphereCollider.h.

Constructor & Destructor Documentation

◆ SphereCollider()

SphereCollider::SphereCollider ( )

◆ ~SphereCollider()

virtual SphereCollider::~SphereCollider ( )
virtual

Member Function Documentation

◆ _Collide() [1/5]

void SphereCollider::_Collide ( const AABBCollisionNode node)
protected

◆ _Collide() [2/5]

void SphereCollider::_Collide ( const AABBNoLeafNode node)
protected

◆ _Collide() [3/5]

void SphereCollider::_Collide ( const AABBQuantizedNode node)
protected

◆ _Collide() [4/5]

void SphereCollider::_Collide ( const AABBQuantizedNoLeafNode node)
protected

◆ _Collide() [5/5]

void SphereCollider::_Collide ( const AABBTreeNode node)
protected

◆ _CollideNoPrimitiveTest() [1/4]

void SphereCollider::_CollideNoPrimitiveTest ( const AABBCollisionNode node)
protected

◆ _CollideNoPrimitiveTest() [2/4]

void SphereCollider::_CollideNoPrimitiveTest ( const AABBNoLeafNode node)
protected

◆ _CollideNoPrimitiveTest() [3/4]

void SphereCollider::_CollideNoPrimitiveTest ( const AABBQuantizedNode node)
protected

◆ _CollideNoPrimitiveTest() [4/4]

void SphereCollider::_CollideNoPrimitiveTest ( const AABBQuantizedNoLeafNode node)
protected

◆ Collide() [1/2]

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:

Parameters
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
Returns
true if success
Warning
SCALE NOT SUPPORTED. The matrices must contain rotation & translation parts only.

◆ Collide() [2/2]

bool SphereCollider::Collide ( SphereCache cache,
const Sphere sphere,
const AABBTree tree 
)

◆ InitQuery()

BOOL SphereCollider::InitQuery ( SphereCache cache,
const Sphere sphere,
const Matrix4x4 worlds = null,
const Matrix4x4 worldm = null 
)
protected

◆ SphereAABBOverlap()

inline_ BOOL SphereCollider::SphereAABBOverlap ( const Point center,
const Point extents 
)
protected

Sphere-AABB overlap test, based on Jim Arvo's code.

Parameters
center[in] box center
extents[in] box extents
Returns
TRUE on overlap

Definition at line 9 of file OPC_SphereAABBOverlap.h.

◆ SphereContainsBox()

inline_ BOOL SphereCollider::SphereContainsBox ( const Point bc,
const Point be 
)
protected

◆ SphereTriOverlap()

BOOL SphereCollider::SphereTriOverlap ( const Point vert0,
const Point vert1,
const Point vert2 
)
protected

Definition at line 9 of file OPC_SphereTriOverlap.h.

Member Data Documentation

◆ mCenter

Point SphereCollider::mCenter
protected

Sphere center.

Definition at line 64 of file OPC_SphereCollider.h.

◆ mRadius2

float SphereCollider::mRadius2
protected

Sphere radius squared.

Definition at line 65 of file OPC_SphereCollider.h.


The documentation for this class was generated from the following files:


openhrp3
Author(s): AIST, General Robotix Inc., Nakamura Lab of Dept. of Mechano Informatics at University of Tokyo
autogenerated on Thu Sep 8 2022 02:24:07