HoverRace  2.0
Public Member Functions | Private Types | List of all members
HoverRace::Model::Element Class Reference

Represents all objects (wall, floor, ceiling, etc.) that can be found in a maze. More...

#include <MazeElement.h>

+ Inheritance diagram for HoverRace::Model::Element:

Public Member Functions

 Element (const Util::ObjectFromFactoryId &id)
 
virtual ~Element ()
 
virtual void AddRenderer ()
 
virtual void ApplyEffect (const ContactEffect *pEffect, MR_SimulationTime pTime, MR_SimulationTime pDuration, BOOL pValidDirection, MR_Angle pHorizontalDirection, MR_Int32 pZMin, MR_Int32 pZMax, Track &track)
 
void ApplyEffects (const ContactEffectList *pList, MR_SimulationTime pTime, MR_SimulationTime pDuration, BOOL pValidDirection, MR_Angle pHorizontalDirection, MR_Int32 pZMin, MR_Int32 pZMax, Track &track)
 
virtual const ContactEffectListGetEffectList ()
 
void Serialize (Parcel::ObjStream &) overridefinal
 
- Public Member Functions inherited from HoverRace::Util::ObjectFromFactory
 ObjectFromFactory (const ObjectFromFactoryId &pId) noexcept
 
virtual ~ObjectFromFactory ()
 
const ObjectFromFactoryIdGetTypeId () const noexcept
 

Private Types

using SUPER = Util::ObjectFromFactory
 

Additional Inherited Members

- Static Public Member Functions inherited from HoverRace::Util::ObjectFromFactory
template<class T >
static void SerializeShared (Parcel::ObjStream &archive, typename std::enable_if< std::is_base_of< ObjectFromFactory, T >::value, std::shared_ptr< T >>::type &obj)
 Serialize a shared pointer to a serializable object. More...
 

Detailed Description

Represents all objects (wall, floor, ceiling, etc.) that can be found in a maze.

There are two kinds of elements, the surface elements and the free elements. Surface elements have a geometry based on the maze geometry. That means that a wall element contains no geometry, its geometry is defined by the surface of the maze that it is attached to.

Free elements are monsters, furniture, etc. They contain their own geometry but they do not contain their position or orientation.

Elements are formed from components. There are two kinds of components in an element, the logic component and the rendering component. The logic component owns the part of the object that is responsible of the logic simulation of the element. The rendering component contains the data needed for the rendering of the object (usually this component is empty).

Data that is shared by the two possible components is stored directly in the element body.

Member Typedef Documentation

Constructor & Destructor Documentation

HoverRace::Model::Element::Element ( const Util::ObjectFromFactoryId id)
inline
virtual HoverRace::Model::Element::~Element ( )
inlinevirtual

Member Function Documentation

virtual void HoverRace::Model::Element::AddRenderer ( )
inlinevirtual
virtual void HoverRace::Model::Element::ApplyEffect ( const ContactEffect pEffect,
MR_SimulationTime  pTime,
MR_SimulationTime  pDuration,
BOOL  pValidDirection,
MR_Angle  pHorizontalDirection,
MR_Int32  pZMin,
MR_Int32  pZMax,
Track track 
)
inlinevirtual
void HoverRace::Model::Element::ApplyEffects ( const ContactEffectList pList,
MR_SimulationTime  pTime,
MR_SimulationTime  pDuration,
BOOL  pValidDirection,
MR_Angle  pHorizontalDirection,
MR_Int32  pZMin,
MR_Int32  pZMax,
Track track 
)
inline
virtual const ContactEffectList* HoverRace::Model::Element::GetEffectList ( )
inlinevirtual
void HoverRace::Model::Element::Serialize ( Parcel::ObjStream )
inlinefinaloverridevirtual

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