diff options
author | Nikolay Korolev <nickvnuk@gmail.com> | 2020-05-05 19:22:17 +0200 |
---|---|---|
committer | Nikolay Korolev <nickvnuk@gmail.com> | 2020-05-05 19:22:17 +0200 |
commit | f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80 (patch) | |
tree | dc15134e54afea71e397a16ab828a0a73edc0ea9 /src/control/PathFind.h | |
parent | some more miami (diff) | |
parent | some miami limits (diff) | |
download | re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.gz re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.bz2 re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.lz re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.xz re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.zst re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.zip |
Diffstat (limited to 'src/control/PathFind.h')
-rw-r--r-- | src/control/PathFind.h | 116 |
1 files changed, 1 insertions, 115 deletions
diff --git a/src/control/PathFind.h b/src/control/PathFind.h index d2799f87..73bce325 100644 --- a/src/control/PathFind.h +++ b/src/control/PathFind.h @@ -9,9 +9,6 @@ enum { NodeTypeExtern = 1, NodeTypeIntern = 2, - - UseInRoadBlock = 1, - ObjectEastWest = 2, }; enum @@ -55,33 +52,6 @@ public: struct CPathNode { -#ifndef MIAMI - CVector pos; - CPathNode *prev; - CPathNode *next; - int16 distance; // in path search - int16 objectIndex; - int16 firstLink; - uint8 numLinks; - - uint8 unkBits : 2; - uint8 bDeadEnd : 1; - uint8 bDisabled : 1; - uint8 bBetweenLevels : 1; - - int8 group; - - CVector &GetPosition(void) { return pos; } - void SetPosition(const CVector &p) { pos = p; } - float GetX(void) { return pos.x; } - float GetY(void) { return pos.y; } - float GetZ(void) { return pos.z; } - - CPathNode *GetPrev(void) { return prev; } - CPathNode *GetNext(void) { return next; } - void SetPrev(CPathNode *node) { prev = node; } - void SetNext(CPathNode *node) { next = node; } -#else int16 prevIndex; int16 nextIndex; int16 x; @@ -118,7 +88,6 @@ struct CPathNode CPathNode *GetNext(void); void SetPrev(CPathNode *node); void SetNext(CPathNode *node); -#endif }; union CConnectionFlags @@ -132,24 +101,6 @@ union CConnectionFlags struct CCarPathLink { -#ifndef MIAMI - CVector2D pos; - CVector2D dir; - int16 pathNodeIndex; - int8 numLeftLanes; - int8 numRightLanes; - uint8 trafficLightType; - - uint8 bBridgeLights : 1; - // more? - - CVector2D &GetPosition(void) { return pos; } - CVector2D &GetDirection(void) { return dir; } - float GetX(void) { return pos.x; } - float GetY(void) { return pos.y; } - float GetDirX(void) { return dir.x; } - float GetDirY(void) { return dir.y; } -#else int16 x; int16 y; int16 pathNodeIndex; @@ -168,7 +119,6 @@ struct CCarPathLink float GetY(void) { return y/8.0f; } float GetDirX(void) { return dirX/100.0f; } float GetDirY(void) { return dirY/100.0f; } -#endif float OneWayLaneOffset() { @@ -183,16 +133,6 @@ struct CCarPathLink // This is what we're reading from the files, only temporary struct CPathInfoForObject { -#ifndef MIAMI - int16 x; - int16 y; - int16 z; - int8 type; - int8 next; - int8 numLeftLanes; - int8 numRightLanes; - uint8 crossing : 1; -#else float x; float y; float z; @@ -213,7 +153,6 @@ struct CPathInfoForObject uint8 spawnRate : 4; void SwapConnectionsToBeRightWayRound(void); -#endif }; extern CPathInfoForObject *InfoForTileCars; extern CPathInfoForObject *InfoForTilePeds; @@ -221,15 +160,6 @@ extern CPathInfoForObject *InfoForTilePeds; struct CTempNode { CVector pos; -#ifndef MIAMI - float dirX; - float dirY; - int16 link1; - int16 link2; - int8 numLeftLanes; - int8 numRightLanes; - int8 linkState; -#else int8 dirX; // *100 int8 dirY; int16 link1; @@ -239,10 +169,8 @@ struct CTempNode int8 width; bool isCross; int8 linkState; -#endif }; -#ifdef MIAMI struct CTempNodeExternal // made up name { CVector pos; @@ -252,14 +180,6 @@ struct CTempNodeExternal // made up name int8 width; bool isCross; }; -#endif - -#ifndef MIAMI -struct CTempDetachedNode // unused -{ - uint8 foo[20]; -}; -#endif class CPathFind { @@ -267,15 +187,8 @@ public: CPathNode m_pathNodes[NUM_PATHNODES]; CCarPathLink m_carPathLinks[NUM_CARPATHLINKS]; CTreadable *m_mapObjects[NUM_MAPOBJECTS]; -#ifndef MIAMI - uint8 m_objectFlags[NUM_MAPOBJECTS]; - int16 m_connections[NUM_PATHCONNECTIONS]; - int16 m_distances[NUM_PATHCONNECTIONS]; - CConnectionFlags m_connectionFlags[NUM_PATHCONNECTIONS]; -#else uint16 m_connections[NUM_PATHCONNECTIONS]; // and flags uint8 m_distances[NUM_PATHCONNECTIONS]; -#endif int16 m_carPathConnections[NUM_PATHCONNECTIONS]; int32 m_numPathNodes; @@ -293,20 +206,12 @@ public: void RegisterMapObject(CTreadable *mapObject); void StoreNodeInfoPed(int16 id, int16 node, int8 type, int8 next, int16 x, int16 y, int16 z, int16 width, bool crossing); void StoreNodeInfoCar(int16 id, int16 node, int8 type, int8 next, int16 x, int16 y, int16 z, int16 width, int8 numLeft, int8 numRight); -#ifndef MIAMI - void CalcNodeCoors(int16 x, int16 y, int16 z, int32 id, CVector *out); -#else void CalcNodeCoors(float x, float y, float z, int32 id, CVector *out); -#endif bool LoadPathFindData(void); void PreparePathData(void); void CountFloodFillGroups(uint8 type); void PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoForObject *objectpathinfo, -#ifndef MIAMI - float maxdist, CTempDetachedNode *detachednodes, int32 numDetached); -#else float maxdist, CPathInfoForObject *detachednodes, int32 numDetached); -#endif bool IsPathObject(int id) { return id < PATHNODESIZE && (InfoForTileCars[id*12].type != 0 || InfoForTilePeds[id*12].type != 0); } @@ -324,27 +229,19 @@ public: void MarkRoadsBetweenLevelsNodeAndNeighbours(int32 nodeId); void MarkRoadsBetweenLevelsInArea(float x1, float x2, float y1, float y2, float z1, float z2); void PedMarkRoadsBetweenLevelsInArea(float x1, float x2, float y1, float y2, float z1, float z2); -#ifndef MIAMI - int32 FindNodeClosestToCoors(CVector coors, uint8 type, float distLimit, bool ignoreDisabled = false, bool ignoreBetweenLevels = false); -#else -//--MIAMI: TODO: check callers for new arguments +// TODO(MIAMI): check callers for new arguments int32 FindNodeClosestToCoors(CVector coors, uint8 type, float distLimit, bool ignoreDisabled = false, bool ignoreBetweenLevels = false, bool ignoreFlagB4 = false, bool bWaterPath = false); -#endif int32 FindNodeClosestToCoorsFavourDirection(CVector coors, uint8 type, float dirX, float dirY); float FindNodeOrientationForCarPlacement(int32 nodeId); float FindNodeOrientationForCarPlacementFacingDestination(int32 nodeId, float x, float y, bool towards); bool NewGenerateCarCreationCoors(float x, float y, float dirX, float dirY, float spawnDist, float angleLimit, bool forward, CVector *pPosition, int32 *pNode1, int32 *pNode2, float *pPositionBetweenNodes, bool ignoreDisabled = false); bool GeneratePedCreationCoors(float x, float y, float minDist, float maxDist, float minDistOffScreen, float maxDistOffScreen, CVector *pPosition, int32 *pNode1, int32 *pNode2, float *pPositionBetweenNodes, CMatrix *camMatrix); -#ifndef MIAMI - CTreadable *FindRoadObjectClosestToCoors(CVector coors, uint8 type); -#endif void FindNextNodeWandering(uint8, CVector, CPathNode**, CPathNode**, uint8, uint8*); void DoPathSearch(uint8 type, CVector start, int32 startNodeId, CVector target, CPathNode **nodes, int16 *numNodes, int16 maxNumNodes, CVehicle *vehicle, float *dist, float distLimit, int32 forcedTargetNode); bool TestCoorsCloseness(CVector target, uint8 type, CVector start); void Save(uint8 *buf, uint32 *size); void Load(uint8 *buf, uint32 size); -#ifdef MIAMI CPathNode *GetNode(int16 index); int16 GetIndex(CPathNode *node); @@ -352,27 +249,16 @@ public: bool ConnectionCrossesRoad(int id) { return !!(m_connections[id] & 0x8000); } bool ConnectionHasTrafficLight(int id) { return !!(m_connections[id] & 0x4000); } void ConnectionSetTrafficLight(int id) { m_connections[id] |= 0x4000; } -#else - uint16 ConnectedNode(int id) { return m_connections[id]; } - bool ConnectionCrossesRoad(int id) { return m_connectionFlags[id].bCrossesRoad; } - bool ConnectionHasTrafficLight(int id) { return m_connectionFlags[id].bTrafficLight; } - void ConnectionSetTrafficLight(int id) { m_connectionFlags[id].bTrafficLight = true; } -#endif void DisplayPathData(void); }; -#ifndef MIAMI -static_assert(sizeof(CPathFind) == 0x49bf4, "CPathFind: error"); -#endif extern CPathFind ThePaths; -#ifdef MIAMI inline CPathNode *CPathNode::GetPrev(void) { return ThePaths.GetNode(prevIndex); } inline CPathNode *CPathNode::GetNext(void) { return ThePaths.GetNode(nextIndex); } inline void CPathNode::SetPrev(CPathNode *node) { prevIndex = ThePaths.GetIndex(node); } inline void CPathNode::SetNext(CPathNode *node) { nextIndex = ThePaths.GetIndex(node); } -#endif extern bool gbShowPedPaths; extern bool gbShowCarPaths; |