Added serverPathfinding library

This commit is contained in:
Anonymous
2014-01-15 09:54:09 -07:00
parent 7d149b2784
commit cd99b53a31
43 changed files with 5888 additions and 2 deletions
@@ -0,0 +1,182 @@
// ======================================================================
//
// ServerPathBuilder.h
// Copyright 2002 Sony Online Entertainment Inc.
// All Rights Reserved.
//
// ======================================================================
#ifndef INCLUDED_ServerPathBuilder_H
#define INCLUDED_ServerPathBuilder_H
#include "serverGame/AiLocation.h"
#include "Unicode.h"
class CreatureObject;
class AiLocation;
class CellProperty;
class PortalProperty;
class CityPathGraph;
class PathGraph;
class PathSearch;
class PathNode;
class ServerObject;
typedef stdlist<AiLocation>::fwd AiPath;
typedef stdvector<int>::fwd IndexList;
// ======================================================================
int findClosestPathNode( CreatureObject const * creature, PathGraph const * graph );
int findClosestReachablePathNode( CreatureObject const * creature, PathGraph const * graph );
int findClosestReachablePathNode ( CellProperty const * cell, Vector const & start, float radius, PathGraph const * graph );
// ======================================================================
class ServerPathBuilder
{
public:
ServerPathBuilder();
virtual ~ServerPathBuilder();
bool buildPath ( CreatureObject const * creature, AiLocation const & goal );
bool buildPath ( CreatureObject const * creature, Unicode::String const & goalName );
bool buildWorldPath ( AiLocation const & startLocation, AiLocation const & goal );
bool buildPathImmediate ( AiLocation const & startLocation, AiLocation const & goalLocation );
bool buildPath_Async ( CreatureObject const * creature, AiLocation const & goal );
bool buildPath_Async ( CreatureObject const * creature, Unicode::String const & goalName );
void update ( void );
bool buildDone ( void ) const;
bool buildFailed ( void ) const;
AiPath * getPath ( void );
bool getPathIncomplete ( void ) const;
bool getQueued ( void ) const;
void setQueued ( bool queued );
void setEnableJitter ( bool enable );
protected:
bool buildPath_ToGoal ( void );
bool buildPath_Named ( void );
bool setupBuildPath ( CreatureObject const * creature, AiLocation const & goal );
bool setupBuildPath ( CreatureObject const * creature, Unicode::String const & goalName );
bool buildPathInternal ( CellProperty const * cell, PathGraph const * graph, int indexA, int indexB );
bool buildPathInternal ( PortalProperty const * building, PathGraph const * graph, int indexA, int indexB );
bool buildPathInternal ( CityPathGraph const * cityGraph, int indexA, int indexB );
bool buildPathInternal ( CityPathGraph const * cityGraph, int indexA, IndexList const & indexBList );
bool expandPath ( CityPathGraph const * cityGraph, IndexList const & path );
bool buildPath_World ( void );
void addPathNode ( CellProperty const * cell, PathNode const * node );
// ----------
CreatureObject const * m_creature;
CellProperty const * m_creatureCell;
PathGraph const * m_creatureCellGraph;
int m_creatureCellKey;
int m_creatureCellNodeIndex;
int m_creatureCellPart;
PortalProperty const * m_creatureBuilding;
PathGraph const * m_creatureBuildingGraph;
int m_creatureBuildingKey;
int m_creatureBuildingNodeIndex;
CityPathGraph const * m_creatureCityGraph;
int m_creatureCityNodeIndex;
Vector m_creaturePosition;
// ----------
AiLocation m_goal;
Unicode::String m_goalName;
CellProperty const * m_goalCell;
PathGraph const * m_goalCellGraph;
int m_goalCellKey;
int m_goalCellNodeIndex;
int m_goalCellPart;
PortalProperty const * m_goalBuilding;
PathGraph const * m_goalBuildingGraph;
int m_goalBuildingKey;
int m_goalBuildingNodeIndex;
CityPathGraph const * m_goalCityGraph;
int m_goalCityNodeIndex;
AiPath * m_path;
// ----------
bool m_async;
bool m_buildDone;
bool m_buildFailed;
bool m_pathIncomplete;
bool m_enableJitter;
// ----------
PathSearch * m_cellSearch;
PathSearch * m_buildingSearch;
PathSearch * m_citySearch;
// ----------
bool m_queued;
};
// ----------------------------------------------------------------------
inline bool ServerPathBuilder::getQueued ( void ) const
{
return m_queued;
}
inline void ServerPathBuilder::setQueued ( bool queued )
{
m_queued = queued;
}
// ----------
inline void ServerPathBuilder::setEnableJitter ( bool enable )
{
m_enableJitter = enable;
}
// ----------
inline AiPath * ServerPathBuilder::getPath ( void )
{
return m_path;
}
// ----------
inline bool ServerPathBuilder::buildDone ( void ) const
{
return m_buildDone;
}
inline bool ServerPathBuilder::buildFailed ( void ) const
{
return m_buildFailed;
}
// ======================================================================
#endif