Orxonox  0.0.5 Codename: Arcturus
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
orxonox::CollisionShape Class Referenceabstract

Wrapper for bullet collision shape class btCollisionShape. More...

#include </home/jenkins/workspace/orxonox_doxygen_trunk/src/orxonox/collisionshapes/CollisionShape.h>

Inheritance diagram for orxonox::CollisionShape:
orxonox::BaseObject orxonox::Synchronisable orxonox::OrxonoxClass orxonox::OrxonoxInterface orxonox::Configurable orxonox::Destroyable orxonox::Configurable orxonox::Destroyable orxonox::Listable orxonox::Listable orxonox::Identifiable orxonox::Identifiable orxonox::AbstractRadiusHeightCollisionShape orxonox::BoxCollisionShape orxonox::CompoundCollisionShape orxonox::PlaneCollisionShape orxonox::SphereCollisionShape orxonox::ConeCollisionShape orxonox::CylinderCollisionShape orxonox::WorldEntityCollisionShape

Public Member Functions

 CollisionShape (Context *context)
 Constructor. More...
 
virtual ~CollisionShape ()
 Destructor. More...
 
void calculateLocalInertia (float mass, btVector3 &inertia) const
 Calculates the local inertia of the collision shape. More...
 
virtual void changedScale ()
 Is called when the scale of the CollisionShape has changed. More...
 
btCollisionShape * getCollisionShape () const
 Get the bullet collision shape of this CollisionShape. More...
 
const Quaternion & getOrientation () const
 Get the orientation of the CollisionShape. More...
 
const Vector3 & getPosition () const
 Get the position of the CollisionShape. More...
 
float getScale ()
 Get the (uniform) scale of the CollisionShape. More...
 
const Vector3 & getScale3D () const
 Get the scale of the CollisionShape. More...
 
bool hasTransform () const
 Check whether the CollisionShape has been either moved or rotated or both. More...
 
bool hasUniformScaling ()
 Check whether the CollisionShape is uniformly scaled. More...
 
bool notifyBeingAttached (CompoundCollisionShape *newParent)
 Notifies the CollisionShape of being attached to a CompoundCollisionShape. More...
 
void notifyDetached ()
 Notifies the CollisionShape of being detached from a CompoundCollisionShape. More...
 
void pitch (const Degree &angle)
 Rotate the CollisionShape around the x-axis by the specified angle. More...
 
void roll (const Degree &angle)
 Rotate the CollisionShape around the z-axis by the specified angle. More...
 
void scale (float scale)
 (Uniformly) scale the CollisionShape by the input scale. More...
 
void scale3D (const Vector3 &scale)
 Scale the CollisionShape by the input vector. More...
 
void setOrientation (const Quaternion &orientation)
 Set the orientation of the CollisionShape. More...
 
void setPosition (const Vector3 &position)
 Set the position of the CollisionShape. More...
 
void setScale (float scale)
 Set the (uniform) scale of the CollisionShape. More...
 
void setScale3D (const Vector3 &scale)
 Set the scale of the CollisionShape. More...
 
void updateShape ()
 Updates the shape. More...
 
virtual void XMLPort (Element &xmlelement, XMLPort::Mode mode) override
 XML loading and saving. More...
 
void yaw (const Degree &angle)
 Rotate the CollisionShape around the y-axis by the specified angle. More...
 
- Public Member Functions inherited from orxonox::BaseObject
 BaseObject (Context *context)
 Constructor: Registers the object in the BaseObject-list. More...
 
virtual ~BaseObject ()
 Destructor. More...
 
void addEventListener (BaseObject *listener)
 Adds an object which listens to the events of this object. More...
 
void addEventSource (BaseObject *source, const std::string &state)
 Adds a new event source for a specific state. More...
 
void addTemplate (const std::string &name)
 Adds a Template to the object. More...
 
void addTemplate (Template *temp)
 Adds a Template to the object. More...
 
virtual void changedActivity ()
 This function gets called if the activity of the object changes. More...
 
virtual void changedMainStateName ()
 This function gets called if the main state name of the object changes. More...
 
virtual void changedName ()
 This function gets called if the name of the object changes. More...
 
virtual void changedVisibility ()
 This function gets called if the visibility of the object changes. More...
 
void fireEvent (const std::string &name="")
 Fires an event (without a state). More...
 
void fireEvent (bool activate, const std::string &name="")
 Fires an event which activates or deactivates a state. More...
 
void fireEvent (bool activate, BaseObject *originator, const std::string &name="")
 Fires an event which activates or deactivates a state with agiven originator (the object which triggered the event). More...
 
void fireEvent (Event &event)
 Fires an event, using the Event struct. More...
 
BaseObjectgetCreator () const
 
BaseObjectgetEventListener (unsigned int index) const
 Returns an event listener with a given index. More...
 
BaseObjectgetEventSource (unsigned int index, const std::string &state) const
 Returns an eventsource with a given index. More...
 
const XMLFilegetFile () const
 Returns a pointer to the XMLFile that loaded this object. More...
 
const std::string & getFilename () const
 Returns the levelfile that loaded this object. More...
 
GametypegetGametype () const
 
LevelgetLevel () const
 
const std::string & getLoaderIndentation () const
 Returns the indentation of the debug output in the Loader. More...
 
const std::string & getMainStateName () const
 Returns the name of the main state. More...
 
const std::string & getName () const
 Returns the name of the object. More...
 
NamespacegetNamespace () const
 
const std::string & getOldName () const
 Returns the old name of the object. More...
 
ScenegetScene () const
 
virtual uint32_t getSceneID () const
 
const std::set< Template * > & getTemplates () const
 Returns the set of all aplied templates. More...
 
const mboolisActive () const
 Returns the state of the objects activity. More...
 
bool isInitialized () const
 Returns if the object was initialized (passed the object registration). More...
 
const mboolisVisible () const
 Returns the state of the objects visibility. More...
 
virtual void processEvent (Event &event)
 Processing an event by calling the right main state. More...
 
void removeEventSource (BaseObject *source)
 Removes an eventsource (but doesn't unregister itself at the source). More...
 
void setActive (bool bActive)
 Sets the state of the objects activity. More...
 
void setCreator (BaseObject *creator)
 
void setFile (const XMLFile *file)
 Sets a pointer to the xml file that loaded this object. More...
 
void setGametype (const StrongOrWeakPtr< Gametype > &gametype)
 
void setLevel (const StrongOrWeakPtr< Level > &level)
 
void setLoaderIndentation (const std::string &indentation)
 Sets the indentation of the debug output in the Loader. More...
 
void setMainState (bool state)
 Sets the main state of the object to a given boolean value. More...
 
void setMainStateName (const std::string &name)
 Sets the name of the main state (used for event reactions). More...
 
void setName (const std::string &name)
 Sets the name of the object. More...
 
void setNamespace (const StrongOrWeakPtr< Namespace > &ns)
 
void setScene (const StrongOrWeakPtr< Scene > &scene, uint32_t sceneID)
 
void setVisible (bool bVisible)
 Sets the state of the objects visibility. More...
 
virtual void XMLEventPort (Element &xmlelement, XMLPort::Mode mode)
 Defines the possible event states of this object and parses eventsources from an XML file. More...
 
- Public Member Functions inherited from orxonox::OrxonoxClass
 OrxonoxClass ()
 
OrxonoxClassoperator= (const OrxonoxClass &)=default
 
- Public Member Functions inherited from orxonox::Configurable
 Configurable ()
 
void setConfigValues ()
 Function to collect the SetConfigValue-macro calls. More...
 
- Public Member Functions inherited from orxonox::Listable
 Listable ()
 Constructor: Allocates space in the element list. More...
 
 Listable (Context *context)
 Constructor: Allocates space in the element list and assigns the context. More...
 
virtual ~Listable ()
 Destructor: Removes the object from the object-lists. More...
 
ContextgetContext () const
 
void setContext (Context *context)
 Changes the context. More...
 
void unregisterObject ()
 Removes this object from the object-lists. More...
 
- Public Member Functions inherited from orxonox::Identifiable
 Identifiable ()
 Constructor: Sets the default values. More...
 
virtual ~Identifiable ()
 
ORX_FORCEINLINE voidgetDerivedPointer (unsigned int classID)
 Returns a valid pointer of any derived type that is registered in the class hierarchy. More...
 
template<class T >
ORX_FORCEINLINE T * getDerivedPointer (unsigned int classID)
 Version of getDerivedPointer with template. More...
 
template<class T >
ORX_FORCEINLINE const T * getDerivedPointer (unsigned int classID) const
 Const version of getDerivedPointer with template. More...
 
IdentifiergetIdentifier () const
 Returns the Identifier of the object. More...
 
bool isA (const Identifier *identifier)
 Returns true if the object's class is of the given type or a derivative. More...
 
template<class B >
bool isA (const SubclassIdentifier< B > *identifier)
 Returns true if the object's class is of the given type or a derivative. More...
 
bool isA (const Identifiable *object)
 Returns true if the object's class is of the given type or a derivative. More...
 
bool isChildOf (const Identifier *identifier)
 Returns true if the object's class is a child of the given type. More...
 
template<class B >
bool isChildOf (const SubclassIdentifier< B > *identifier)
 Returns true if the object's class is a child of the given type. More...
 
bool isChildOf (const Identifiable *object)
 Returns true if the object's class is a child of the given type. More...
 
bool isDirectChildOf (const Identifier *identifier)
 Returns true if the object's class is a direct child of the given type. More...
 
template<class B >
bool isDirectChildOf (const SubclassIdentifier< B > *identifier)
 Returns true if the object's class is a direct child of the given type. More...
 
bool isDirectChildOf (const Identifiable *object)
 Returns true if the object's class is a direct child of the given type. More...
 
bool isDirectParentOf (const Identifier *identifier)
 Returns true if the object's class is a direct parent of the given type. More...
 
template<class B >
bool isDirectParentOf (const SubclassIdentifier< B > *identifier)
 Returns true if the object's class is a direct parent of the given type. More...
 
bool isDirectParentOf (const Identifiable *object)
 Returns true if the object's class is a direct child of the given type. More...
 
bool isExactlyA (const Identifier *identifier)
 Returns true if the object's class is exactly of the given type. More...
 
template<class B >
bool isExactlyA (const SubclassIdentifier< B > *identifier)
 Returns true if the object's class is exactly of the given type. More...
 
bool isExactlyA (const Identifiable *object)
 Returns true if the object's class is exactly of the given type. More...
 
bool isParentOf (const Identifier *identifier)
 Returns true if the object's class is a parent of the given type. More...
 
template<class B >
bool isParentOf (const SubclassIdentifier< B > *identifier)
 Returns true if the object's class is a parent of the given type. More...
 
bool isParentOf (const Identifiable *object)
 Returns true if the object's class is a parent of the given type. More...
 
- Public Member Functions inherited from orxonox::Destroyable
 Destroyable ()
 Constructor: Sets the default values. More...
 
virtual ~Destroyable ()
 Destructor: Notifies all DestructionListener (for example weak pointers) that this object is being deleted. More...
 
void destroy ()
 Deletes the object if no strong pointers point to this object. More...
 
void destroyLater ()
 Works like destroy() but doesn't destroy the object until the current tick has ended. More...
 
unsigned int getReferenceCount () const
 Returns the number of strong pointers that point to this object. More...
 
- Public Member Functions inherited from orxonox::Synchronisable
virtual ~Synchronisable ()
 Destructor: Delete all callback objects and remove objectID_ from the objectMap_. More...
 
uint32_t getClassID () const
 
unsigned int getContextID () const
 
uint32_t getNrOfVariables ()
 
uint32_t getObjectID () const
 
unsigned int getPriority () const
 
uint8_t getSyncMode () const
 
uint32_t getVarSize (VariableID ID)
 
template<>
_NetworkExport void registerVariable (std::string &variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional)
 
template<>
void registerVariable (std::string &variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional)
 
void setSyncMode (uint8_t mode)
 This function sets the synchronisation mode of the object If set to 0x0 variables will not be synchronised at all If set to 0x1 variables will only be synchronised to the client If set to 0x2 variables will only be synchronised to the server If set to 0x3 variables will be synchronised bidirectionally (only if set so in registerVar) More...
 
template<>
_NetworkExport void unregisterVariable (std::string &variable)
 
template<>
void unregisterVariable (std::string &variable)
 
- Public Member Functions inherited from orxonox::OrxonoxInterface
 OrxonoxInterface ()
 

Protected Member Functions

virtual btCollisionShape * createNewShape () const =0
 Create a new bullet collision shape depending on the internal parameters of the specific CollisionShape. More...
 
virtual void parentChanged ()
 Is called when the parentID of the CollisionShape has changed. More...
 
virtual void updateParent ()
 Updates the CompoundCollisionShape the CollisionShape belongs to (if it belongs to one), after the CollisionShape has changed. More...
 
- Protected Member Functions inherited from orxonox::BaseObject
void addEventState (const std::string &name, EventState *container)
 Adds a new event-state to the object. More...
 
EventStategetEventState (const std::string &name) const
 Returns the event-state with the given name. More...
 
- Protected Member Functions inherited from orxonox::Destroyable
virtual void preDestroy ()
 This virtual function is called if destroy() is called and no StrongPtr points to this object. More...
 
- Protected Member Functions inherited from orxonox::Synchronisable
 Synchronisable (Context *context)
 Constructor: Initializes all Variables and sets the right objectID_. More...
 
uint32_t findContextID (Context *context)
 Returns the id of the context. More...
 
template<class T >
void registerVariable (T &variable, uint8_t mode=0x1, NetworkCallbackBase *cb=nullptr, bool bidirectional=false)
 
template<class T >
void registerVariable (std::set< T > &variable, uint8_t mode=0x1, NetworkCallbackBase *cb=nullptr, bool bidirectional=false)
 
void setPriority (unsigned int freq)
 
template<class T >
void unregisterVariable (T &var)
 

Protected Attributes

btCollisionShape * collisionShape_
 The bullet collision shape of this CollisionShape. More...
 
CompoundCollisionShapeparent_
 The CompoundCollisionShape this CollisionShape belongs to, nullptr if it doesn't belong to one. More...
 
unsigned int parentID_
 The objectID of the parent of this CollisionShape, which can either be a CompoundCollisionShape or a WorldEntity. More...
 
- Protected Attributes inherited from orxonox::BaseObject
mbool bActive_
 True = the object is active. More...
 
mbool bVisible_
 True = the object is visible. More...
 
FunctorPtr mainStateFunctor_
 
std::string mainStateName_
 
std::string name_
 The name of the object. More...
 
std::set< std::string > networkTemplateNames_
 
std::string oldName_
 The old name of the object. More...
 

Private Member Functions

void registerVariables ()
 Register variables that need synchronizing over the network. More...
 

Private Attributes

Quaternion orientation_
 The orientation of the CollisionShape. More...
 
Vector3 position_
 The position of the CollisionShape. More...
 
Vector3 scale_
 The scale of the CollisionShape. More...
 
bool uniformScale_
 Whether the scale is uniform. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from orxonox::BaseObject
static void loadAllEventStates (Element &xmlelement, XMLPort::Mode mode, BaseObject *object, Identifier *identifier)
 Manually loads all event states, even if the class doesn't officially support them. More...
 
- Static Public Member Functions inherited from orxonox::Synchronisable
static bool deleteObject (uint32_t objectID_)
 Finds and deletes the Synchronisable with the appropriate objectID_. More...
 
static Synchronisablefabricate (uint8_t *&mem, uint8_t mode=0x0)
 This function fabricated a new synchrnisable (and children of it), sets calls updateData and create After calling this function the mem pointer will be increased by the size of the needed data. More...
 
static unsigned int getNumberOfDeletedObject ()
 
static SynchronisablegetSynchronisable (uint32_t objectID_)
 This function looks up the objectID_ in the objectMap_ and returns a pointer to the right Synchronisable. More...
 
static uint32_t popDeletedObject ()
 
static void setClient (bool b)
 This function sets the internal mode for synchronisation. More...
 

Detailed Description

Wrapper for bullet collision shape class btCollisionShape.

Author
Reto Grieder
See also
btCollisionShape

Constructor & Destructor Documentation

orxonox::CollisionShape::CollisionShape ( Context context)

Constructor.

Registers and initializes the object.

orxonox::CollisionShape::~CollisionShape ( )
virtual

Destructor.

Detaches the CollisionShape from its parent.

Member Function Documentation

void orxonox::CollisionShape::calculateLocalInertia ( float  mass,
btVector3 &  inertia 
) const

Calculates the local inertia of the collision shape.

Todo:
Document.
void orxonox::CollisionShape::changedScale ( )
virtual
virtual btCollisionShape* orxonox::CollisionShape::createNewShape ( ) const
protectedpure virtual

Create a new bullet collision shape depending on the internal parameters of the specific CollisionShape.

Returns
Returns a pointer to the new bullet collision shape.

Implemented in orxonox::BoxCollisionShape, orxonox::PlaneCollisionShape, orxonox::SphereCollisionShape, orxonox::CompoundCollisionShape, orxonox::ConeCollisionShape, and orxonox::CylinderCollisionShape.

btCollisionShape* orxonox::CollisionShape::getCollisionShape ( ) const
inline

Get the bullet collision shape of this CollisionShape.

Returns
Returns a pointer to the bullet collision shape of this CollisionShape.
const Quaternion& orxonox::CollisionShape::getOrientation ( ) const
inline

Get the orientation of the CollisionShape.

Returns
Returns the orientation of the CollisionShape as a quaternion.
const Vector3& orxonox::CollisionShape::getPosition ( void  ) const
inline

Get the position of the CollisionShape.

Returns
Returns the position of the CollisionShape as a vector.
float orxonox::CollisionShape::getScale ( )
inline

Get the (uniform) scale of the CollisionShape.

This is only meaningful if the CollisionShape has uniform scaling.

Returns
Returns the (uniform) scale of the CollisionShape. Returns 0.0f if the scaling is non-uniform.
const Vector3& orxonox::CollisionShape::getScale3D ( ) const
inline

Get the scale of the CollisionShape.

Returns
Returns a vector indicating the scale of the CollisionShape.
bool orxonox::CollisionShape::hasTransform ( ) const

Check whether the CollisionShape has been either moved or rotated or both.

(i.e. it doesn't have position zero and identity orientation any more)

Returns
Returns true if it has been moved.
bool orxonox::CollisionShape::hasUniformScaling ( )
inline

Check whether the CollisionShape is uniformly scaled.

Returns
Returns true if the CollisionShape is uniformly scaled, false if not.
bool orxonox::CollisionShape::notifyBeingAttached ( CompoundCollisionShape newParent)

Notifies the CollisionShape of being attached to a CompoundCollisionShape.

Parameters
newParentA pointer to the CompoundCollisionShape the CollisionShape was attached to.
Returns
Returns
void orxonox::CollisionShape::notifyDetached ( )

Notifies the CollisionShape of being detached from a CompoundCollisionShape.

void orxonox::CollisionShape::parentChanged ( )
protectedvirtual

Is called when the parentID of the CollisionShape has changed.

Attaches it to the object with the changed parentID, which can either be a CompoundCollisionShape or a WorldEntity.

Reimplemented in orxonox::WorldEntityCollisionShape.

void orxonox::CollisionShape::pitch ( const Degree &  angle)
inline

Rotate the CollisionShape around the x-axis by the specified angle.

If the orientation changes, this causes the parent CompoundCollisionShape (if there is one) to be updated.

Parameters
angleThe angle by which the CollisionShape is rotated.
void orxonox::CollisionShape::registerVariables ( void  )
private

Register variables that need synchronizing over the network.

void orxonox::CollisionShape::roll ( const Degree &  angle)
inline

Rotate the CollisionShape around the z-axis by the specified angle.

If the orientation changes, this causes the parent CompoundCollisionShape (if there is one) to be updated.

Parameters
angleThe angle by which the CollisionShape is rotated.
void orxonox::CollisionShape::scale ( float  scale)
inline

(Uniformly) scale the CollisionShape by the input scale.

If the scale changes, this causes the parent CompoundCollisionShape (if there is one) to be updated.

Parameters
scaleThe value by which the CollisionShape is scaled.
void orxonox::CollisionShape::scale3D ( const Vector3 &  scale)
inline

Scale the CollisionShape by the input vector.

Since the scale is a vector the CollisionShape can be scaled independently in each direction, allowing for linear distortions. If the scale changes, this causes the parent CompoundCollisionShape (if there is one) to be updated. Beware, non-uniform scaling (i.e. distortions) might not be supported by all CollisionShapes.

Parameters
scaleThe scaling vector by which the CollisionShape is scaled.
void orxonox::CollisionShape::setOrientation ( const Quaternion &  orientation)
inline

Set the orientation of the CollisionShape.

If the orientation changes, this causes the parent CompoundCollisionShape (if there is one) to be updated.

Parameters
orientationA quaternion indicating the new orientation.
void orxonox::CollisionShape::setPosition ( const Vector3 &  position)
inline

Set the position of the CollisionShape.

If the position changes, this causes the parent CompoundCollisionShape (if there is one) to be updated.

Parameters
positionA vector indicating the new position.
void orxonox::CollisionShape::setScale ( float  scale)

Set the (uniform) scale of the CollisionShape.

If the scale changes, this causes the parent CompoundCollisionShape (if there is one) to be updated.

Parameters
scaleThe scale to scale the CollisionShape with. 1.0f is the initial scale.
void orxonox::CollisionShape::setScale3D ( const Vector3 &  scale)

Set the scale of the CollisionShape.

Since the scale is a vector the CollisionShape can be scaled independently in each direction, allowing for linear distortions. If the scale changes, this causes the parent CompoundCollisionShape (if there is one) to be updated. Beware, non-uniform scaling (i.e. distortions) might not be supported by all CollisionShapes.

Parameters
scaleThe new scale to be set. Vector3::UNIT_SCALE is the initial scale.
void orxonox::CollisionShape::updateParent ( )
protectedvirtual

Updates the CompoundCollisionShape the CollisionShape belongs to (if it belongs to one), after the CollisionShape has changed.

Reimplemented in orxonox::WorldEntityCollisionShape.

void orxonox::CollisionShape::updateShape ( )

Updates the shape.

Is called when the internal parameters of the shape have changed such that a new shape needs to be created.

void orxonox::CollisionShape::XMLPort ( Element &  xmlelement,
XMLPort::Mode  mode 
)
overridevirtual

XML loading and saving.

Parameters
xmlelementThe XML-element
modeThe mode defines the operation that is being executed: loading or saving the object (from or to XML respectively)

Reimplemented from orxonox::BaseObject.

Reimplemented in orxonox::CompoundCollisionShape, orxonox::BoxCollisionShape, orxonox::PlaneCollisionShape, orxonox::SphereCollisionShape, and orxonox::AbstractRadiusHeightCollisionShape.

void orxonox::CollisionShape::yaw ( const Degree &  angle)
inline

Rotate the CollisionShape around the y-axis by the specified angle.

If the orientation changes, this causes the parent CompoundCollisionShape (if there is one) to be updated.

Parameters
angleThe angle by which the CollisionShape is rotated.

Member Data Documentation

btCollisionShape* orxonox::CollisionShape::collisionShape_
protected

The bullet collision shape of this CollisionShape.

Quaternion orxonox::CollisionShape::orientation_
private

The orientation of the CollisionShape.

CompoundCollisionShape* orxonox::CollisionShape::parent_
protected

The CompoundCollisionShape this CollisionShape belongs to, nullptr if it doesn't belong to one.

unsigned int orxonox::CollisionShape::parentID_
protected

The objectID of the parent of this CollisionShape, which can either be a CompoundCollisionShape or a WorldEntity.

Vector3 orxonox::CollisionShape::position_
private

The position of the CollisionShape.

Vector3 orxonox::CollisionShape::scale_
private

The scale of the CollisionShape.

bool orxonox::CollisionShape::uniformScale_
private

Whether the scale is uniform.


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