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) | |
| 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 |
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.)
| CmpPtr< T >::CmpPtr | ( | const CSimContext & | context, | |
| entity_id_t | ent | |||
| ) | [inline] |
| CmpPtr< T >::CmpPtr | ( | const CSimulation2 & | simulation, | |
| entity_id_t | ent | |||
| ) | [inline] |
| T* CmpPtr< T >::operator-> | ( | ) | [inline] |
| void CmpPtr< T >::this_type_does_not_support_comparisons | ( | ) | const [inline, private] |
1.6.3