Classes | Typedefs | Functions

Map Dynamics Library
[AESOP Maps and Map Management]

These objects know how to dynamically manipulate (tick) loaded maps. More...

Collaboration diagram for Map Dynamics Library:


class  aesop::ObjectContext
 this is a base class for caller-specified context attached to PhysicsObjects More...
class  aesop::MapDynamics
 create one of these to handle dynamics (physics etc.) for a given Map More...


typedef void(* aesop::zone_obj_iteration_fn )(smart_ptr< Instance > &instance, smart_ptr< PhysicsObject > &obj, void *context)
 zone iteration callback


virtual smart_ptr< Map > aesop::MapDynamics::getMap (void)=0
virtual smart_ptr< PhysicsWorld > aesop::MapDynamics::getPhysics (void)=0
virtual smart_ptr< PhysicsObject > aesop::MapDynamics::addInstance (smart_ptr< Instance > &instance)=0
virtual void aesop::MapDynamics::removeObject (smart_ptr< PhysicsObject > &obj)=0
virtual void aesop::MapDynamics::tickMap (float seconds)=0
virtual void aesop::MapDynamics::iterateInstancesInZone (Zone *zone, zone_obj_iteration_fn fn, void *context)=0
 iterates over all instances within the given zone (static and dynamic objects).
static smart_ptr< MapDynamics > aesop::MapDynamics::create (smart_ptr< Map > &map, const Datahash *params)
smart_ptr< Instance > aesop::getInstanceFromPhysicsObject (smart_ptr< PhysicsObject > &obj)
 can return null!
MapDynamics * aesop::getMapDynamicsFromPhysicsObject (smart_ptr< PhysicsObject > &obj)
 can return null!

Detailed Description

These objects know how to dynamically manipulate (tick) loaded maps.

This library is what binds the AESOP Physics Library library with Maps.

Map objects themselves don't understand physics or dynamics, they just provide raw data about object placement and space (zone) partitioning.

The purpose of this library is to allow people to implement their own Map / Zone objects as necessary (different space partitioning schemes, different map formats, etc.) but be able to re-use all of the handling for dynamic objects. The goal is that people can override map/zone objects without worrying about dynamics at all.

This library must know nothing about rendering. MapDynamics objects are used on both the server (as the authoritative state) and on the client (in a predictive, non-authoritative way to accommodate network lag).

Typedef Documentation

typedef void(* aesop::zone_obj_iteration_fn)(smart_ptr< Instance > &instance,smart_ptr< PhysicsObject > &obj,void *context)

zone iteration callback

Definition at line 74 of file map-dynamics.h.

Function Documentation

virtual smart_ptr<Map> aesop::MapDynamics::getMap ( void   )  [pure virtual, inherited]
virtual smart_ptr<PhysicsWorld> aesop::MapDynamics::getPhysics ( void   )  [pure virtual, inherited]
virtual smart_ptr<PhysicsObject> aesop::MapDynamics::addInstance ( smart_ptr< Instance > &  instance  )  [pure virtual, inherited]
virtual void aesop::MapDynamics::removeObject ( smart_ptr< PhysicsObject > &  obj  )  [pure virtual, inherited]
virtual void aesop::MapDynamics::tickMap ( float  seconds  )  [pure virtual, inherited]
virtual void aesop::MapDynamics::iterateInstancesInZone ( Zone zone,
zone_obj_iteration_fn  fn,
void *  context 
) [pure virtual, inherited]

iterates over all instances within the given zone (static and dynamic objects).

smart_ptr< MapDynamics > aesop::MapDynamics::create ( smart_ptr< Map > &  map,
const Datahash params 
) [static, inherited]

Definition at line 590 of file map-dynamics.cpp.

smart_ptr< Instance > aesop::getInstanceFromPhysicsObject ( smart_ptr< PhysicsObject > &  obj  ) 

can return null!

MapDynamics * aesop::getMapDynamicsFromPhysicsObject ( smart_ptr< PhysicsObject > &  obj  ) 

can return null!