CmpPtr< T > Class Template Reference

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

#include <CmpPtr.h>

List of all members.

Public Member Functions

 CmpPtr (const CSimContext &context, entity_id_t ent)
 CmpPtr (const CSimulation2 &simulation, entity_id_t ent)
T * operator-> ()
 operator bool_type () const

Private Types

typedef void(CmpPtr::* bool_type )() const

Private Member Functions

void this_type_does_not_support_comparisons () const

Private Attributes

T * m

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)

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.)


Member Typedef Documentation

template<typename T>
typedef void(CmpPtr::* CmpPtr< T >::bool_type)() const [private]

Constructor & Destructor Documentation

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

Member Function Documentation

template<typename T>
CmpPtr< T >::operator bool_type (  )  const [inline]
template<typename T>
T* CmpPtr< T >::operator-> (  )  [inline]
template<typename T>
void CmpPtr< T >::this_type_does_not_support_comparisons (  )  const [inline, private]

Member Data Documentation

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

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Wed May 16 03:15:26 2012 for Pyrogenesis by  doxygen 1.6.3