eng::Object Class Reference

Base class for 3D objects. More...

#include <eng_object.hh>

Inheritance diagram for eng::Object:

eng::Sprite

List of all members.

Public Member Functions

 Object (SharedPtr< Graph > graph, const WorldVertex &pos, SharedPtr0< Volume > volume=NULL)
virtual ~Object ()
virtual void PostConstruct (void)
virtual void SelfDestruct (void)
virtual bool Reproducible (void)=0
virtual bool IfTranslucent (void)
virtual const string GetName (void)=0
virtual void Draw (void)
virtual void SetPosition (const WorldVertex &position)
virtual WorldVertex GetPosition (void)
virtual SharedPtr0
< Volume
GetWorldVolume (void)
fp GetRadius (void)
SharedPtr< GraphGetGraph (void)
virtual SharedPtr
< const Matrix > 
GetMatrix (void)
virtual void SetMatrix (const Matrix &matrix)
SharedPtr0
< TransformNode
GetTransformNode (void)
void SetCollidable (bool collidable)
CLASS_METHOD int GetObjectCnt (void)

Protected Member Functions

 Object (shptr< Graph > graph)
void SetRecomputeNormals (void)

Protected Attributes

SharedPtr< GraphmGraph
TransformNode::Ptr mTransformNode
shptr0< VolumemWorldVolume
 shptr0 used since shptr is incompatible with abstract objects
fp mRadius
WorldVertex mPosition
 maintained by SetPosition()

Private Member Functions

void SetPosition_ (const WorldVertex &position, const bool initial)
void ComputeVolume (void)
void CHECK_POSITION (void)

Private Attributes

CLASS_VAR int msObjectCnt = 0
bool mDebugChangingPosition
 SetPosition() is executing.

Friends

class VisitorDraw

Classes

class  VisitorComputeVolume


Detailed Description

Base class for 3D objects.

See implementation.html::Objects

Matrix: In case changes to a matrix need to be intercepted, the matrix interface consists of calling GetMatrix() to get const Matrix and calling SetMatrix() to modify a matrix.

Special Objects with minimal Graphs that aren't attached to World: Use Graph::MakeMinimalGraph() with Object ctor that lacks a position arg. The flag Graph::mMinimal will be set which bypasses assertion checks such as the BSP code rejecting a Graph with no volume.


Constructor & Destructor Documentation

eng::Object::Object ( SharedPtr< Graph graph,
const WorldVertex &  pos,
SharedPtr0< Volume volume = NULL 
)

eng::Object::Object ( shptr< Graph graph  )  [protected]

eng::Object::~Object (  )  [virtual]


Member Function Documentation

void eng::Object::PostConstruct ( void   )  [virtual]

Post-construction actions.

void eng::Object::SelfDestruct ( void   )  [virtual]

An object destroys itself.

virtual bool eng::Object::Reproducible ( void   )  [pure virtual]

Implemented in eng::Sprite.

virtual bool eng::Object::IfTranslucent ( void   )  [inline, virtual]

Reimplemented in eng::Sprite.

virtual const string eng::Object::GetName ( void   )  [pure virtual]

Implemented in eng::Sprite.

void eng::Object::Draw ( void   )  [virtual]

Draw Object.

Reimplemented in eng::Sprite.

virtual void eng::Object::SetPosition ( const WorldVertex &  position  )  [inline, virtual]

void eng::Object::SetPosition_ ( const WorldVertex &  position,
const bool  initial 
) [private]

virtual WorldVertex eng::Object::GetPosition ( void   )  [inline, virtual]

virtual SharedPtr0<Volume> eng::Object::GetWorldVolume ( void   )  [inline, virtual]

fp eng::Object::GetRadius ( void   )  [inline]

void eng::Object::ComputeVolume ( void   )  [private]

Calculate world volume and radius from local vertexs + position. Output: mWorldVolume mRadius

SharedPtr<Graph> eng::Object::GetGraph ( void   )  [inline]

virtual SharedPtr<const Matrix> eng::Object::GetMatrix ( void   )  [inline, virtual]

virtual void eng::Object::SetMatrix ( const Matrix &  matrix  )  [virtual]

SharedPtr0<TransformNode> eng::Object::GetTransformNode ( void   )  [inline]

void eng::Object::SetRecomputeNormals ( void   )  [protected]

Schedule recomputing normal vectors. Recomputing is scheduled rather than done immediately since this Object may not be visible.

void eng::Object::SetCollidable ( bool  collidable  ) 

CLASS_METHOD int eng::Object::GetObjectCnt ( void   )  [inline]

void eng::Object::CHECK_POSITION ( void   )  [private]

Macro to ensure the definitions of an Object's position stay synchronized.


Friends And Related Function Documentation

friend class VisitorDraw [friend]


Member Data Documentation

int eng::Object::msObjectCnt = 0 [private]

SharedPtr<Graph> eng::Object::mGraph [protected]

TransformNode::Ptr eng::Object::mTransformNode [protected]

shptr0<Volume> eng::Object::mWorldVolume [protected]

shptr0 used since shptr is incompatible with abstract objects

fp eng::Object::mRadius [protected]

WorldVertex eng::Object::mPosition [protected]

maintained by SetPosition()

bool eng::Object::mDebugChangingPosition [private]

SetPosition() is executing.


The documentation for this class was generated from the following files: Palomino 3D Engine documents generated by doxygen 1.5.3 on Fri Nov 23 11:26:24 2007