29 #ifndef M_OBJECT_INSTANCE_H
30 #define M_OBJECT_INSTANCE_H
81 std::map<unsigned, laObject*> _mNestedObjects;
94 inline void _offset(
laRenderer *r, laPoint3 ptBasePos);
96 inline void _offset_and_rotation(
laRenderer *r, laPoint3 ptBasePos);
100 inline void _nested_draw_fx(
laRenderer *r, laPoint3 ptBasePos);
101 inline void _nested_draw_interface(
laRenderer *r, laPoint3 ptBasePos);
102 inline void _nested_animate(laTimer &t);
104 inline void _nested_draw(
laRenderer *r, laPoint3 ptBasePos);
105 inline void _nested_destroy();
109 virtual void _drawFx_notrans(
laRenderer *r, laPoint3 ptBasePos);
110 virtual void _drawFx_positioned(
laRenderer *r);
111 virtual void _drawFx_positioned_rotated(
laRenderer *r);
113 virtual void _draw_notrans(
laRenderer *r, laPoint3 ptBasePos);
115 virtual void _draw_positioned_rotated(
laRenderer *r);
117 virtual void _execute_ai(laTimer &t);
131 void setLevel(
class laLevel* plvl) { _pLevel = plvl; };
132 void setSegment(
class laSegment* pseg) { _pSegment = pseg; };
133 void setTS(
laTileset* pTileset){ _pTileset = pTileset; }
134 void setObject(
unsigned nTSObject,
class laElement* pTSObject) {_nTSIndex = nTSObject; _pTSObject = pTSObject;};
137 inline laLevel* getLevelObject() {
return _pLevel; };
138 inline laSegment* getSegmentObject() {
return _pSegment; };
139 inline laTileset* getTS() {
return _pTileset; }
140 inline laElement* getObject() {
return _pTSObject; };
141 inline unsigned getObjectIndex() {
return _nTSIndex; }
150 _mNestedObjects[_nNext_ID] = p;
162 void nestedRemove(
unsigned ID, M_BOOL bFreeMem = M_TRUE) {
164 std::map<unsigned, laObject*>::iterator i;
165 i = _mNestedObjects.find( ID );
166 ASSERT( i != _mNestedObjects.end(),
"Object not found" );
168 if(bFreeMem)
delete ( (*i).second );
169 _mNestedObjects.erase(i);
182 inline laObject* nestedGet(
unsigned ID) {
183 std::map<unsigned, laObject*>::iterator i;
184 i = _mNestedObjects.find( ID );
185 ASSERT( i != _mNestedObjects.end(),
"Object not found" );
187 return ( (*i).second );
195 virtual void save(FILE* f) {};
199 virtual void create(laPoint3 pos);
203 virtual void respawn();
207 void setOutline(
laOutline o) { _outline = o; }
208 void setColor( laColor c ) { _color = c; }
209 void setLight( M_BOOL on) { _bLightOn = on;}
213 virtual void drawGeometry(
laRenderer *r, laPoint3 ptBasePos);
214 virtual void drawFx(
laRenderer *r, laPoint3 ptBasePos);
215 virtual void drawInterface(
laRenderer *r, laPoint3 ptBasePos);
219 virtual void animate(laTimer &t);
223 void setPosition(laPoint3 pos) {
224 _ptPivot.x( pos.x() );
225 _ptPivot.y( pos.y() );
226 _ptPivot.z( pos.z() );
229 laPoint3 getPosition() {
return _ptPivot; }
230 laPivot* getPivot() {
return &_ptPivot; }
240 laPoint2 pivot(_ptPivot.x() - _ptPivot.size.x()/2, _ptPivot.y()-_ptPivot.size.y());
241 return laRect2(pivot, _ptPivot.size);
246 #endif //#ifndef M_OBJECT_INSTANCE_H
Base Class for Tileset Elements.
Abstract base class for AI agents.
Interface for loadable objects.
Object outline properties.
2D rectangle (used by the GUI and also as a simple tool for proximity testing)
Class aiController is an abstract class for behaviours which can be performed by objects.
Virtual interface for the Engine graphics renderer.
Base Class for Level Objects.