This is the base class for collision models, defining their common interface. More...
#include "CollisionModel_base.hpp"
Public Member Functions | |
virtual | ~CollisionModelT () |
The (virtual) destructor. More... | |
virtual BoundingBox3dT | GetBoundingBox () const =0 |
Returns the bounding box of this collision model. More... | |
virtual unsigned long | GetContents () const =0 |
Returns the contents of this collision model. More... | |
virtual void | SaveToFile (std::ostream &OutFile, SceneGraph::aux::PoolT &Pool) const =0 |
Saves the model to OutFile. More... | |
virtual void | TraceConvexSolid (const TraceSolidT &TraceSolid, const Vector3dT &Start, const Vector3dT &Ray, unsigned long ClipMask, TraceResultT &Result) const =0 |
Traces the given TraceSolidT instance from Start along Ray (up to the input value of Result.Fraction) through the collision model, and reports the first collision, if any. More... | |
virtual unsigned long | GetContents (const Vector3dT &Point, double BoxRadius, unsigned long ContMask) const =0 |
Determines the volume contents of the model at the given point / in the given box. More... | |
virtual btCollisionShape * | GetBulletAdapter () const =0 |
Returns an adapter class for using CollisionModelT instances also as Bullet btCollisionShape instances. More... | |
This is the base class for collision models, defining their common interface.
|
inlinevirtual |
The (virtual) destructor.
|
pure virtual |
Returns the bounding box of this collision model.
Implemented in cf::ClipSys::CollisionModelStaticT, and cf::ClipSys::CollisionModelAnimT.
|
pure virtual |
Returns an adapter class for using CollisionModelT instances also as Bullet btCollisionShape instances.
Implemented in cf::ClipSys::CollisionModelStaticT, and cf::ClipSys::CollisionModelAnimT.
|
pure virtual |
Returns the contents of this collision model.
Implemented in cf::ClipSys::CollisionModelStaticT, and cf::ClipSys::CollisionModelAnimT.
|
pure virtual |
Determines the volume contents of the model at the given point / in the given box.
The function considers all brush volumes in the collision model that contain the given point or intersect the given box, and returns their combined ("or'ed") contents.
Point | The point in model space at which the volume contents of this model is to be determined. |
BoxRadius | When nonzero, this is the radius of an imaginary box around Point. |
ContMask | Only volumes whose contents matches this mask participate in the test. This is for optimization, because it allows the implementation to cull volumes that are not of interest early. |
Implemented in cf::ClipSys::CollisionModelStaticT, and cf::ClipSys::CollisionModelAnimT.
|
pure virtual |
Saves the model to OutFile.
TODO: Review serialization/deser. of class hierarchies (e.g. compare to cf::SceneGraph)! Right now this is fixed and works for CollisionModelStaticTs only!!!
Implemented in cf::ClipSys::CollisionModelStaticT, and cf::ClipSys::CollisionModelAnimT.
|
pure virtual |
Traces the given TraceSolidT instance from Start along Ray (up to the input value of Result.Fraction) through the collision model, and reports the first collision, if any.
TraceSolid | The TraceSolidT instance that is traced from Start along Ray. |
Start | The start point in model space where the trace begins. |
Ray | The ray along which the trace is performed. Note that with F being the input value of Result.Fraction, the endpoint is at Start+Ray*F. |
ClipMask | Only surfaces whose clip flags match this mask participate in the test. This is for optimization, because it allows the implementation to cull surfaces that are not of interest early. |
Result | The start value of Fraction is input via this reference, and the result of the trace returned. Using an input/output parameter for returning the result, rather than a true return type, suggests itself because it makes cascaded calls to this function natural (i.e. from (possibly many) super-objects and to (possibly many) sub-objects). |
Implemented in cf::ClipSys::CollisionModelStaticT, and cf::ClipSys::CollisionModelAnimT.