Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
CmpPtr< T > Class Template Reference

A simplified syntax for accessing entity components. More...

#include <CmpPtr.h>

Public Member Functions

 CmpPtr (const CSimContext &context, entity_id_t ent)
 
 CmpPtr (const CSimulation2 &simulation, entity_id_t ent)
 
 CmpPtr (CEntityHandle ent)
 
Toperator-> ()
 
 operator bool () const
 

Private Attributes

Tm
 

Detailed Description

template<typename T>
class CmpPtr< T >

A simplified syntax for accessing entity components.

E.g. to get the Position component, write:

CmpPtr<ICmpPosition> cmpPosition(context, ent);
if (!cmpPosition)
// do something (maybe just silently abort; you should never crash if the
// component is missing, even if you're sure it should never be missing)
A simplified syntax for accessing entity components.
Definition: CmpPtr.h:56

where context is (if you're writing component code) a CSimContext object, or (if you're writing external engine code that makes use of the simulation system) a CSimulation2 object; and ent is the entity ID.

ent can be CComponentManager::SYSTEM_ENTITY (if you're writing a component), or CSimulation2::SYSTEM_ENTITY (for external code), if you want to access the global singleton system components.

You should never hold onto a component pointer outside of the method in which you acquire it, because it might get deleted and invalidate your pointer. (Components will never be deleted while inside a simulation method.)

Constructor & Destructor Documentation

◆ CmpPtr() [1/3]

template<typename T >
CmpPtr< T >::CmpPtr ( const CSimContext context,
entity_id_t  ent 
)
inline

◆ CmpPtr() [2/3]

template<typename T >
CmpPtr< T >::CmpPtr ( const CSimulation2 simulation,
entity_id_t  ent 
)
inline

◆ CmpPtr() [3/3]

template<typename T >
CmpPtr< T >::CmpPtr ( CEntityHandle  ent)
inline

Member Function Documentation

◆ operator bool()

template<typename T >
CmpPtr< T >::operator bool ( ) const
inlineexplicit

◆ operator->()

template<typename T >
T * CmpPtr< T >::operator-> ( )
inline

Member Data Documentation

◆ m

template<typename T >
T* CmpPtr< T >::m
private

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