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

#include <Opcode.h>

Inheritance diagram for Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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

Definition at line 36 of file Opcode.h.

Constructor & Destructor Documentation

◆ SphereCollider()

SphereCollider::SphereCollider ( )

Constructor.

Definition at line 63 of file OPC_SphereCollider.cpp.

◆ ~SphereCollider()

SphereCollider::~SphereCollider ( )
virtual

Destructor.

Definition at line 74 of file OPC_SphereCollider.cpp.

Member Function Documentation

◆ _Collide() [1/5]

void SphereCollider::_Collide ( const AABBCollisionNode node)
protected

Recursive collision query for normal AABB trees.

Parameters
node[in] current collision node

Definition at line 343 of file OPC_SphereCollider.cpp.

◆ _Collide() [2/5]

void SphereCollider::_Collide ( const AABBNoLeafNode node)
protected

Recursive collision query for no-leaf AABB trees.

Parameters
node[in] current collision node

Definition at line 461 of file OPC_SphereCollider.cpp.

◆ _Collide() [3/5]

void SphereCollider::_Collide ( const AABBQuantizedNode node)
protected

Recursive collision query for quantized AABB trees.

Parameters
node[in] current collision node

Definition at line 397 of file OPC_SphereCollider.cpp.

◆ _Collide() [4/5]

void SphereCollider::_Collide ( const AABBQuantizedNoLeafNode node)
protected

Recursive collision query for quantized no-leaf AABB trees.

Parameters
node[in] current collision node

Definition at line 505 of file OPC_SphereCollider.cpp.

◆ _Collide() [5/5]

void SphereCollider::_Collide ( const AABBTreeNode node)
protected

Recursive collision query for vanilla AABB trees.

Parameters
node[in] current collision node

Definition at line 559 of file OPC_SphereCollider.cpp.

◆ _CollideNoPrimitiveTest() [1/4]

void SphereCollider::_CollideNoPrimitiveTest ( const AABBCollisionNode node)
protected

Recursive collision query for normal AABB trees, without primitive tests.

Parameters
node[in] current collision node

Definition at line 370 of file OPC_SphereCollider.cpp.

◆ _CollideNoPrimitiveTest() [2/4]

void SphereCollider::_CollideNoPrimitiveTest ( const AABBNoLeafNode node)
protected

Recursive collision query for no-leaf AABB trees, without primitive tests.

Parameters
node[in] current collision node

Definition at line 483 of file OPC_SphereCollider.cpp.

◆ _CollideNoPrimitiveTest() [3/4]

void SphereCollider::_CollideNoPrimitiveTest ( const AABBQuantizedNode node)
protected

Recursive collision query for quantized AABB trees, without primitive tests.

Parameters
node[in] current collision node

Definition at line 429 of file OPC_SphereCollider.cpp.

◆ _CollideNoPrimitiveTest() [4/4]

void SphereCollider::_CollideNoPrimitiveTest ( const AABBQuantizedNoLeafNode node)
protected

Recursive collision query for quantized no-leaf AABB trees, without primitive tests.

Parameters
node[in] current collision node

Definition at line 532 of file OPC_SphereCollider.cpp.

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

Definition at line 94 of file OPC_SphereCollider.cpp.

◆ Collide() [2/2]

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

Collision query for vanilla AABB trees.

Parameters
cache[in/out] a sphere cache
sphere[in] collision sphere in world space
tree[in] AABB tree
Returns
true if success

Definition at line 284 of file OPC_SphereCollider.cpp.

◆ InitQuery()

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

Initializes a collision query :

  • reset stats & contact status
  • setup matrices
  • check temporal coherence
Parameters
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
Returns
TRUE if we can return immediately
Warning
SCALE NOT SUPPORTED. The matrices must contain rotation & translation parts only.

Definition at line 166 of file OPC_SphereCollider.cpp.

◆ SphereAABBOverlap()

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

◆ SphereContainsBox()

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

Checks the sphere completely contains the box. In which case we can end the query sooner.

Parameters
bc[in] box center
be[in] box extents
Returns
true if the sphere contains the whole box

Definition at line 311 of file OPC_SphereCollider.cpp.

◆ SphereTriOverlap()

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

Member Data Documentation

◆ mCenter

Point Opcode::SphereCollider::mCenter
protected

Sphere center.

Definition at line 65 of file Opcode.h.

◆ mRadius2

float Opcode::SphereCollider::mRadius2
protected

Sphere radius squared.

Definition at line 66 of file Opcode.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:09