A roadmap graph and the infrastructure for performing graph searches. NOTE: This implementation assumes that the graph doesn't change.
More...
#include <Graph.h>
|
| static Resource * | load (const std::string &fileName) |
| | Parses a graph definition and returns a pointer to it. More...
|
| |
|
|
static const std::string | LABEL |
| | The unique label for this data type to be used with resource management.
|
| |
|
|
| ~Graph () |
| | Destructor.
|
| |
| size_t | getClosestVertex (const Vector2 &point, float radius) |
| | Find the closest visible graph vertex to the given point. More...
|
| |
| RoadMapPath * | getPath (size_t startID, size_t endID) |
| | Computes the shortest path from start to end vertices. More...
|
| |
| float | computeH (size_t v, const Vector2 &goal) |
| | Compute's "h" for the A* algorithm. H is the estimate of the cost of a node to a goal point. In this case, simply Euclidian distance. More...
|
| |
|
void | initHeapMemory () |
| | Initializes the heap memory based on current graph state.
|
| |
|
virtual | ~Resource () |
| | Virtual destructor.
|
| |
|
|
size_t | _vCount |
| | The number of vertices.
|
| |
|
GraphVertex * | _vertices |
| | An array containing all vertices.
|
| |
|
size_t | DATA_SIZE |
| | The size of a block of data used for COST in the A* algorithm (3N, N = number of nodes)
|
| |
|
size_t | STATE_SIZE |
| | The size of a block of data used for STATE in the A* algorithm (2N, N = number of nodes)
|
| |
|
unsigned int * | _HEAP |
| | The full set of data to serve as the heap There are N entries in a single heap and one heap per thread.
|
| |
|
unsigned int * | _PATH |
| | The full set of data for reconstructing the path. For any given entry i, the value at i is the index of the node from which i was reached. There is one block per thread.
|
| |
|
float * | _DATA |
| | The block of data for tracking the f, g, and h data for nodes. (This is where DATA_SIZE = 3N comes from.) One block for each active thread. The first N values in a block are the f values, the next N are the g values, and the last set of N values are the h values.
|
| |
|
bool * | _STATE |
| | Block of data for reportin node state (if its in a heap or if its no longer used for calculation. First N booleans are "in heap", second N are "finished". One block of 2N booleans per thread.
|
| |
|
const std::string | _fileName |
| | The file which contains the resource's data.
|
| |
|
int | _refCount |
| | The number of data wrappers using this managed data.
|
| |
|
SimpleLock | _lock |
| | Simple lock to handle reference counts safely.
|
| |
A roadmap graph and the infrastructure for performing graph searches. NOTE: This implementation assumes that the graph doesn't change.
| Menge::Graph::Graph |
( |
const std::string & |
fileName | ) |
|
Constructor.
- Parameters
-
| fileName | The name of the file which contains the vector field definition. |
| float Menge::Graph::computeH |
( |
size_t |
v, |
|
|
const Vector2 & |
goal |
|
) |
| |
|
inlineprotected |
Compute's "h" for the A* algorithm. H is the estimate of the cost of a node to a goal point. In this case, simply Euclidian distance.
- Parameters
-
| v | The vertex to estimate the cost. |
| goal | The goal point. |
- Returns
- The h-value.
| size_t Menge::Graph::getClosestVertex |
( |
const Vector2 & |
point, |
|
|
float |
radius |
|
) |
| |
|
protected |
Find the closest visible graph vertex to the given point.
- Parameters
-
| point | The point to connect to the graph. |
| radius | The radius of the agent testing. |
- Returns
- The index of the closest node.
Compute path.
- Parameters
-
| agent | The agent for whom to compute the path. |
| goal | The agent's goal. |
- Returns
- A pointer to a RoadMapPath. If there is an error, the poitner will be NULL.
| RoadMapPath * Menge::Graph::getPath |
( |
size_t |
startID, |
|
|
size_t |
endID |
|
) |
| |
|
protected |
Computes the shortest path from start to end vertices.
This function instantiates a new path, but the caller is responsible for deleting it.
- Parameters
-
| startID | The index of the start vertex. |
| endID | The index of the end vertex. |
- Returns
- A pointer to a new RoadMapPath.
| const GraphVertex * Menge::Graph::getVertex |
( |
size_t |
i | ) |
const |
Returns a const pointer to the ith vertex.
The validitiy of the index is only checked in debug mode with an assertion.
- Parameters
-
| i | The index of the desired pointer. |
- Returns
- A const pointer to the ith graph vertex.
| size_t Menge::Graph::getVertexCount |
( |
| ) |
const |
|
inline |
Return the number of vertices in the graph.
- Returns
- The number of vertices in the graph.
| Resource * Menge::Graph::load |
( |
const std::string & |
fileName | ) |
|
|
static |
Parses a graph definition and returns a pointer to it.
This function works in conjunction with the ResourceManager. That is why it returns a pointer, not to a Graph, but to a Resource. The ResourceManager uses it to load and instantiate Graph instances.
- Parameters
-
| fileName | The path to the file containing the VectorField definition. |
- Returns
- A pointer to the new Graph (if the file is valid), NULL if invalid.
The documentation for this class was generated from the following files:
- src/menge/MengeCore/resources/Graph.h
- src/menge/MengeCore/resources/Graph.cpp