Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members  

iCollideSystem Struct Reference

This is the Collide plug-in. More...

#include <collider.h>

Inheritance diagram for iCollideSystem:

iBase List of all members.

Public Methods

virtual iColliderCreateCollider (iPolygonMesh *mesh)=0
 Create an iCollider for the given geometry.

virtual bool Collide (iCollider *collider1, const csReversibleTransform *trans1, iCollider *collider2, const csReversibleTransform *trans2)=0
 Test collision between two colliders. More...

virtual csCollisionPairGetCollisionPairs ()=0
 Get pointer to current array of collision pairs. More...

virtual int GetCollisionPairCount ()=0
 Get number of collision pairs in array.

virtual void ResetCollisionPairs ()=0
 Reset the array with collision pairs.

virtual void SetOneHitOnly (bool o)=0
 Indicate if we are interested only in the first hit that is found. More...

virtual bool GetOneHitOnly ()=0
 Return true if this CD system will only return the first hit that is found. More...

virtual int CollidePath (iCollider *collider, const csReversibleTransform *trans, csVector3 &newpos, int num_colliders, iCollider **colliders, csReversibleTransform **transforms)=0
 Test if an object can move to a new position. More...


Detailed Description

This is the Collide plug-in.

This plugin is a factory for creating iCollider entities. A collider represents an entity in the collision detection world. It uses the geometry data as given by iPolygonMesh.


Member Function Documentation

bool iCollideSystem::Collide ( iCollider * collider1,
const csReversibleTransform * trans1,
iCollider * collider2,
const csReversibleTransform * trans2 ) [pure virtual]
 

Test collision between two colliders.

This is only supported for iCollider objects created by this plugin. Returns false if no collision or else true. The collisions will be added to the collision pair array that you can query with GetCollisionPairs and reset/clear with ResetCollisionPairs. Every call to Collide will add to that array.

int iCollideSystem::CollidePath ( iCollider * collider,
const csReversibleTransform * trans,
csVector3 & newpos,
int num_colliders,
iCollider ** colliders,
csReversibleTransform ** transforms ) [pure virtual]
 

Test if an object can move to a new position.

The new position vector will be modified to reflect the maximum new position that the object could move to without colliding with something. This function will return:

  • -1 if the object could not move at all (i.e. stuck at start position).
  • 0 if the object could not move fully to the desired position.
  • 1 if the object can move unhindered to the end position.

This function will reset the collision pair array. If there was a collision along the way the array will contain the information for the first collision preventing movement.

The given transform should be the transform of the object corresponding with the old position. 'colliders' and 'transforms' should be arrays with 'num_colliders' elements for all the objects that we should test against.

csCollisionPair * iCollideSystem::GetCollisionPairs ( ) [pure virtual]
 

Get pointer to current array of collision pairs.

This array will grow with every call to Collide until you clear it using 'ResetCollisionPairs'.

bool iCollideSystem::GetOneHitOnly ( ) [pure virtual]
 

Return true if this CD system will only return the first hit that is found.

For CD systems that support multiple hits this will return the value set by the SetOneHitOnly() function. For CD systems that support one hit only this will always return true.

void iCollideSystem::SetOneHitOnly ( bool o ) [pure virtual]
 

Indicate if we are interested only in the first hit that is found.

This is only valid for CD algorithms that actually allow the detection of multiple CD hit points.


The documentation for this struct was generated from the following file:
Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000