This is the base object used to describe an AESOP map. More...
#include <map.h>
Public Member Functions | |
virtual | ~Map (void) throw () |
virtual const char * | getId (void) const =0 throw () |
virtual Zone * | getRootZone (void)=0 throw () |
virtual Zone * | getZone (IN const char *zone_id)=0 |
virtual void | iterateZones (IN zone_iteration_fn, IN void *context)=0 |
virtual const char * | getDefaultStartingPointId (void) const =0 throw () |
virtual void | getStartingPointIds (OUT VecString &ids) const =0 |
virtual void | getStartingPoint (IN const char *id, OUT destination_t &start) const =0 |
This is the base object used to describe an AESOP map.
From a Map interface, it is possible to traverse and find all zones, static content, etc.
For the purposes of the AESOP framework, the map defines an arbitrary 3D region of space. That space should be recursively partitioned into Zone objects (see zone.h).
Map and Zone objects are intended to be faithful in-memory representations of the static map data as stored on disk. Any dynamic map/zone objects are managed by client objects (such as MapDynamics).
Maps need to be threadsafe. In practice this isn't interesting because maps are read-only after they are loaded. Anything that changes (such as objects being added or removed, moving around, etc.) is handled by the MapDynamics library, not the base Map or Zone objects.
Maps should never be aware of drawing or rendering! Other code libraries should use map data to handle drawing. See map_drawer for one example. Map and Zone objects are used on the client and server.
Definition at line 102 of file map.h.
aesop::Map::~Map | ( | void | ) | throw () [virtual] |
Definition at line 42 of file aesop-map.cpp.