Menge
Modular Pedestrian Simulation Framework for Research and Development
|
The base, abstract class defining goals. More...
#include <Goal.h>
Public Member Functions | |
Goal () | |
Basic constructor. | |
virtual float | squaredDistance (const Vector2 &pt) const =0 |
Reports the squared distance from the given point to the goal. More... | |
virtual void | setDirections (const Vector2 &q, float r, Agents::PrefVelocity &directions) const =0 |
Set the preferred velocity directions w.r.t. the goal: left, right, and preferred. More... | |
virtual Vector2 | getTargetPoint (const Vector2 &q, float r) const =0 |
Returns the closest "target" point in the goal to the given query point. More... | |
virtual Vector2 | getCentroid () const =0 |
Return the centroid of the goal. | |
bool | hasCapacity () const |
Reports if the goal still has capacity. More... | |
void | assign (const Agents::BaseAgent *agent) |
Inform the goal that it has been assigned. More... | |
void | free () |
Inform the goal that an assignment has been removed. | |
void | setGoalSet (GoalSet *goalSet) |
Sets this goal's goal set. More... | |
GoalSet * | getGoalSet () |
Returns a pointer to this agent's goal set. More... | |
const GoalSet * | getGoalSet () const |
Returns a const pointer to this agent's goal set. More... | |
void | setWeight (float weight) |
Sets the goal's weight. More... | |
float | getWeight () const |
Retrieves the goal's weight. More... | |
void | setCapacity (size_t capacity) |
Sets the goal's capacity. More... | |
size_t | getCapacity () const |
Returns this goal's capacity. More... | |
void | setID (size_t id) |
Sets the id of the goal. More... | |
size_t | getID () const |
Gets the id of the goal. More... | |
virtual void | drawGL () const |
Draws the goal into an OpenGL context. | |
Public Member Functions inherited from Menge::Element | |
void | destroy () |
This supplants the destructor. More... | |
virtual BFSM::Task * | getTask () |
Return an optional task associated with this element. More... | |
virtual SceneGraph::GLNode * | getSGNode () |
Returns an optional visualization element associated with the element. More... | |
Static Public Attributes | |
static const size_t | MAX_CAPACITY = -1 |
The maximum capacity any goal can hold. | |
Protected Member Functions | |
virtual | ~Goal () |
Destructor. | |
virtual void | drawGLGeometry () const |
Draws the goal geometry. | |
Protected Attributes | |
float | _weight |
The relative weight of this goal. | |
size_t | _capacity |
The maximum capacity of this goal. | |
size_t | _id |
The id of this goal in its goal set. | |
GoalSet * | _goalSet |
The goal set to which this goal belongs. | |
size_t | _population |
The current "population" of this goal. More... | |
ReadersWriterLock | _lock |
The lock to maintain readers-writer access to the structure which control available goals. | |
Friends | |
class | GoalSet |
The base, abstract class defining goals.
void Menge::BFSM::Goal::assign | ( | const Agents::BaseAgent * | agent | ) |
Inform the goal that it has been assigned.
agent | The agent that has been assigned to this goal. |
|
inline |
Returns this goal's capacity.
|
inline |
Returns a pointer to this agent's goal set.
A dynamic goal (such as would be created by a hold-position goal will return NULL, which means it isn't owned by a goal set and should be destroyed when finished.
// TODO: Handle goal sharing and persistence.
|
inline |
Returns a const pointer to this agent's goal set.
A dynamic goal (such as would be created by a hold-position goal will return NULL, which means it isn't owned by a goal set and should be destroyed when finished.
// TODO: Handle goal sharing and persistence.
|
inline |
Gets the id of the goal.
Returns the closest "target" point in the goal to the given query point.
A "valid" target point is the nearest point to the query point that is sufficiently inside the goal region that a disk with the given radius is completely inside the goal. It need not be literally the best value, an approximation is sufficient.
In the case where the goal region is too small to hold the agent, then the "deepest" point in the region is a good approximation.
q | The query point. |
r | The radius of clearance. |
Implemented in Menge::BFSM::OBBGoal, Menge::BFSM::AABBGoal, Menge::BFSM::CircleGoal, and Menge::BFSM::PointGoal.
|
inline |
Retrieves the goal's weight.
bool Menge::BFSM::Goal::hasCapacity | ( | ) | const |
Reports if the goal still has capacity.
|
inline |
Sets the goal's capacity.
capacity | The target capacity for this goal. |
|
pure virtual |
Set the preferred velocity directions w.r.t. the goal: left, right, and preferred.
The Agents::PrefVelocity class represents a span of velocities that will reach the goal. For a goal that covers a 2D region, the directions in the Agents::PrefVelocity should span the arc subtended by the goal from the query point's perspective. Furthermore, it should have sufficient clearance for a disk with the given radius to pass through. This should be overridden by subclasses to account for their unique geometry.
q | The query point. |
r | The radius of clearance. |
directions | An instance of Agents::PrefVelocity. |
Implemented in Menge::BFSM::OBBGoal, Menge::BFSM::AABBGoal, Menge::BFSM::CircleGoal, and Menge::BFSM::PointGoal.
|
inline |
Sets this goal's goal set.
goalSet | A pointer to the goal set to which this goal belongs. |
|
inline |
Sets the id of the goal.
id | The goal's new id. |
|
inline |
Sets the goal's weight.
weight | The weight value for this goal. |
|
pure virtual |
Reports the squared distance from the given point to the goal.
pt | The query point. |
Implemented in Menge::BFSM::OBBGoal, Menge::BFSM::AABBGoal, Menge::BFSM::CircleGoal, and Menge::BFSM::PointGoal.
|
mutableprotected |
The current "population" of this goal.
In other words, it is the number of times "getGoalPoint" has been called on this goal. If a goal is to support