NL3D::UVisualCollisionManager Class Reference

Interface to visual collision manager. More...

#include <u_visual_collision_manager.h>

Inherited by NL3D::CVisualCollisionManagerUser.

List of all members.

Classes

class  CMeshInstanceColInfo

Public Member Functions

virtual void setLandscape (ULandscape *landscape)=0
 setup the landscape used for this collision manager.
virtual UVisualCollisionEntitycreateEntity ()=0
 create an entity.
virtual void deleteEntity (UVisualCollisionEntity *entity)=0
 delete an entity.
virtual void setSunContributionPower (float power, float maxThreshold)=0
 Build a lighting table to remap sun contribution from landscape to sun contribution for objects.
virtual void setPlayerInside (bool state)=0
 Inform the VisualCollisionManager if the player is "inside" or "outside".
virtual float getCameraCollision (const NLMISC::CVector &start, const NLMISC::CVector &end, float radius, bool cone)=0
 Get Typical Camera 3rd person collision.
virtual bool getRayCollision (const NLMISC::CVector &start, const NLMISC::CVector &end, bool landscapeOnly=false)=0
 Get a Ray collision.
virtual uint addMeshInstanceCollision (const UVisualCollisionMesh &mesh, const NLMISC::CMatrix &instanceMatrix, bool avoidCollisionWhenInside, bool avoidCollisionWhenOutside)=0
 Add a Mesh to the collision manager.
virtual void removeMeshCollision (uint id)=0
 Remove a Mesh from the collision manager.
virtual void getMeshs (const NLMISC::CAABBox &aabbox, std::vector< CMeshInstanceColInfo > &dest)=0

Protected Member Functions

 UVisualCollisionManager ()
virtual ~UVisualCollisionManager ()

Detailed Description

Interface to visual collision manager.

Author:
Lionel Berenguier
Nevrax France
Date:
2001

Definition at line 56 of file u_visual_collision_manager.h.


Constructor & Destructor Documentation

NL3D::UVisualCollisionManager::UVisualCollisionManager (  )  [inline, protected]

Definition at line 59 of file u_visual_collision_manager.h.

virtual NL3D::UVisualCollisionManager::~UVisualCollisionManager (  )  [inline, protected, virtual]

Definition at line 60 of file u_visual_collision_manager.h.


Member Function Documentation

virtual uint NL3D::UVisualCollisionManager::addMeshInstanceCollision ( const UVisualCollisionMesh mesh,
const NLMISC::CMatrix instanceMatrix,
bool  avoidCollisionWhenInside,
bool  avoidCollisionWhenOutside 
) [pure virtual]

Add a Mesh to the collision manager.

For now it is used only for Camera Collision

Parameters:
mesh the collision mesh (keep a refptr on it)
instanceMatrix the matrix instance to apply to this mesh
avoidCollisionWhenInside special flag for the IBBR problem. if true this collision instance won't be tested if the player is "inside"
avoidCollisionWhenOutside special flag for the IBBR problem. if true this collision instance won't be tested if the player is "outside"
Returns:
the id used for remove, 0 if not succeed

Implemented in NL3D::CVisualCollisionManagerUser.

virtual UVisualCollisionEntity* NL3D::UVisualCollisionManager::createEntity (  )  [pure virtual]

create an entity.

NB: CVisualCollisionManager owns this ptr, and you must delete it with deleteEntity(). NB: all CVisualCollisionEntity are deleted when this manager is deleted.

Implemented in NL3D::CVisualCollisionManagerUser.

virtual void NL3D::UVisualCollisionManager::deleteEntity ( UVisualCollisionEntity entity  )  [pure virtual]

delete an entity.

Implemented in NL3D::CVisualCollisionManagerUser.

virtual float NL3D::UVisualCollisionManager::getCameraCollision ( const NLMISC::CVector start,
const NLMISC::CVector end,
float  radius,
bool  cone 
) [pure virtual]

Get Typical Camera 3rd person collision.

For landscape, it is done only against TileFaces (ie only under approx 50 m) return a [0,1] value. 0 => collision at start. 1 => no collision.

Parameters:
radius is the radius of the 'cylinder'
cone if true, the object tested is a cone (radius goes to end)

Implemented in NL3D::CVisualCollisionManagerUser.

virtual void NL3D::UVisualCollisionManager::getMeshs ( const NLMISC::CAABBox aabbox,
std::vector< CMeshInstanceColInfo > &  dest 
) [pure virtual]
virtual bool NL3D::UVisualCollisionManager::getRayCollision ( const NLMISC::CVector start,
const NLMISC::CVector end,
bool  landscapeOnly = false 
) [pure virtual]

Get a Ray collision.

For landscape, it is done only against TileFaces (ie only under approx 50 m)

Returns:
true if some collision found

Implemented in NL3D::CVisualCollisionManagerUser.

virtual void NL3D::UVisualCollisionManager::removeMeshCollision ( uint  id  )  [pure virtual]

Remove a Mesh from the collision manager.

Implemented in NL3D::CVisualCollisionManagerUser.

virtual void NL3D::UVisualCollisionManager::setLandscape ( ULandscape landscape  )  [pure virtual]

setup the landscape used for this collision manager.

ptr is kept, and manager must be cleared when the landscape is deleted.

Implemented in NL3D::CVisualCollisionManagerUser.

virtual void NL3D::UVisualCollisionManager::setPlayerInside ( bool  state  )  [pure virtual]

Inform the VisualCollisionManager if the player is "inside" or "outside".

set it to true if the player is not on Landscape. This is a tricky flag used for the IBBR problem: this is an issue with clusters and "interior building that can be bigger than reality" It is used at getCameraCollision(), and receiveShadowMap() time

Implemented in NL3D::CVisualCollisionManagerUser.

virtual void NL3D::UVisualCollisionManager::setSunContributionPower ( float  power,
float  maxThreshold 
) [pure virtual]

Build a lighting table to remap sun contribution from landscape to sun contribution for objects.

The value remap the landscape sun contribution (0 ~ 1) to an object sun contribution (0 ~1) using the following formula:

objectSunContribution = min ( powf ( landscapeSunContribution / maxThreshold, power ), 1 );

Default is 0.5 (=> sqrt) for power and 0.5 for maxThreshold.

Implemented in NL3D::CVisualCollisionManagerUser.


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

Generated on Thu Jan 7 08:30:13 2010 for NeL by  doxygen 1.6.1