32 class LQProximityDatabase2D
37 LQProximityDatabase2D (
const Vector2D& center,
38 const Vector2D& dimensions,
39 const Vector2D& divisions)
41 const Vector2D halfsize (dimensions * 0.5f);
42 const Vector2D origin (center - halfsize);
44 _dimensions = dimensions;
45 _divisions = divisions;
47 lq = lqCreateDatabase2D (origin.x, origin.y,
48 dimensions.x, dimensions.y,
49 (
int) floor(0.5f + divisions.x),
50 (
int) floor(0.5f + divisions.y));
54 virtual ~LQProximityDatabase2D ()
56 lqDeleteDatabase2D (lq);
66 tokenType (ProximityDatabaseItem* parentObject, LQProximityDatabase2D& lqsd)
68 lqInitClientProxy2D (&proxy, parentObject);
73 virtual ~tokenType (
void)
75 lqRemoveFromBin (&proxy);
79 void updateForNewPosition (
const Vector2D& p)
81 lqUpdateForNewLocation (lq, &proxy, p.x, p.y);
85 void findNeighbors (
const Vector2D& center,
86 const Vector2D& facingDirection,
88 std::vector<ProximityDatabaseItem*>& results,
89 bool restrictedView=
false)
91 lqMapOverAllObjectsInLocality (lq,
93 facingDirection.x, facingDirection.y,
96 perNeighborCallBackFunction,
104 static void perNeighborCallBackFunction (
void* clientObject,
106 void* clientQueryState)
108 typedef std::vector<ProximityDatabaseItem*> ctv;
109 ctv& results = *((ctv*) clientQueryState);
110 results.push_back ((ProximityDatabaseItem*) clientObject);
114 lqClientProxy2D proxy;
119 tokenType* allocateToken (ProximityDatabaseItem* parentObject)
121 return new tokenType (parentObject, *
this);
125 int getPopulation (
void)
128 lqMapOverAllObjects (lq, counterCallBackFunction, &count);
133 static void counterCallBackFunction (
void* ,
135 void* clientQueryState)
137 int& counter = *(
int*)clientQueryState;
141 Vector2D getOrigin (
void) {
return _origin;}
142 Vector2D getDivisions (
void) {
return _divisions;}
143 Vector2D getDimensions (
void) {
return _dimensions;}
149 Vector2D _dimensions;
LQProximityDatabase2D SpatialProximityDatabase
The spatial proximity database.
Definition: Proximity2D.h:153
This is a C++ modified version of Opensteer's original spatial database.
Declares the virtual interface inherited by the objects of the proximity database.
SpatialProximityDatabase::tokenType ProximityToken
An object in the proximity database.
Definition: Proximity2D.h:156