Interface to visual collision manager. More...
#include <u_visual_collision_manager.h>
Inherited by NL3D::CVisualCollisionManagerUser.
Classes | |
| class | CMeshInstanceColInfo |
Public Member Functions | |
| virtual void | setLandscape (ULandscape *landscape)=0 |
| setup the landscape used for this collision manager. | |
| virtual UVisualCollisionEntity * | createEntity ()=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 () |
Interface to visual collision manager.
Definition at line 56 of file u_visual_collision_manager.h.
| 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.
| 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
| 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" |
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.
| 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] |
Implemented in NL3D::CVisualCollisionManagerUser.
| 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)
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.
1.6.1