mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-25 13:13:44 +00:00
renames and a fix
This commit is contained in:
parent
600bf03514
commit
e9e72523d5
3 changed files with 97 additions and 98 deletions
|
@ -2,4 +2,4 @@
|
||||||
#include "patcher.h"
|
#include "patcher.h"
|
||||||
#include "ParticleObject.h"
|
#include "ParticleObject.h"
|
||||||
|
|
||||||
void CParticleObject::AddObject(uint16, const CVector &pos, bool remove) { EAXJMP(0x4BC4D0); }
|
WRAPPER void CParticleObject::AddObject(uint16, const CVector &pos, bool remove) { EAXJMP(0x4BC4D0); }
|
||||||
|
|
164
src/PathFind.cpp
164
src/PathFind.cpp
|
@ -56,7 +56,7 @@ CPathFind::PreparePathData(void)
|
||||||
DetachedNodesCars && DetachedNodesPeds){
|
DetachedNodesCars && DetachedNodesPeds){
|
||||||
tempNodes = new CTempNode[4000];
|
tempNodes = new CTempNode[4000];
|
||||||
|
|
||||||
m_numLinks = 0;
|
m_numConnections = 0;
|
||||||
for(i = 0; i < PATHNODESIZE; i++)
|
for(i = 0; i < PATHNODESIZE; i++)
|
||||||
m_pathNodes[i].flags &= ~(PathNodeFlag1 | PathNodeFlag2);
|
m_pathNodes[i].flags &= ~(PathNodeFlag1 | PathNodeFlag2);
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ CPathFind::CountFloodFillGroups(uint8 type)
|
||||||
prev = node;
|
prev = node;
|
||||||
node = node->next;
|
node = node->next;
|
||||||
for(i = 0; i < prev->numLinks; i++){
|
for(i = 0; i < prev->numLinks; i++){
|
||||||
l = m_linkTo[prev->firstLink + i];
|
l = m_connections[prev->firstLink + i];
|
||||||
if(m_pathNodes[l].group == 0){
|
if(m_pathNodes[l].group == 0){
|
||||||
m_pathNodes[l].group = n;
|
m_pathNodes[l].group = n;
|
||||||
if(m_pathNodes[l].group == 0)
|
if(m_pathNodes[l].group == 0)
|
||||||
|
@ -237,7 +237,7 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
|
||||||
|
|
||||||
typeoff = 12*type;
|
typeoff = 12*type;
|
||||||
oldNumPathNodes = m_numPathNodes;
|
oldNumPathNodes = m_numPathNodes;
|
||||||
oldNumLinks = m_numLinks;
|
oldNumLinks = m_numConnections;
|
||||||
|
|
||||||
// Initialize map objects
|
// Initialize map objects
|
||||||
for(i = 0; i < m_numMapObjects; i++)
|
for(i = 0; i < m_numMapObjects; i++)
|
||||||
|
@ -347,7 +347,7 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
|
||||||
for(i = oldNumPathNodes; i < m_numPathNodes; i++){
|
for(i = oldNumPathNodes; i < m_numPathNodes; i++){
|
||||||
// Init link
|
// Init link
|
||||||
m_pathNodes[i].numLinks = 0;
|
m_pathNodes[i].numLinks = 0;
|
||||||
m_pathNodes[i].firstLink = m_numLinks;
|
m_pathNodes[i].firstLink = m_numConnections;
|
||||||
|
|
||||||
// See if node connects to external nodes
|
// See if node connects to external nodes
|
||||||
for(j = 0; j < TempListLength; j++){
|
for(j = 0; j < TempListLength; j++){
|
||||||
|
@ -356,44 +356,44 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
|
||||||
|
|
||||||
// Add link to other side of the external
|
// Add link to other side of the external
|
||||||
if(tempnodes[j].link1 == i)
|
if(tempnodes[j].link1 == i)
|
||||||
m_linkTo[m_numLinks] = tempnodes[j].link2;
|
m_connections[m_numConnections] = tempnodes[j].link2;
|
||||||
else if(tempnodes[j].link2 == i)
|
else if(tempnodes[j].link2 == i)
|
||||||
m_linkTo[m_numLinks] = tempnodes[j].link1;
|
m_connections[m_numConnections] = tempnodes[j].link1;
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
dist = m_pathNodes[i].pos - m_pathNodes[m_linkTo[m_numLinks]].pos;
|
dist = m_pathNodes[i].pos - m_pathNodes[m_connections[m_numConnections]].pos;
|
||||||
m_distTo[m_numLinks] = dist.Magnitude();
|
m_distances[m_numConnections] = dist.Magnitude();
|
||||||
m_linkFlags[m_numLinks] = 0;
|
m_connectionFlags[m_numConnections] = 0;
|
||||||
|
|
||||||
if(type == PathTypeCar){
|
if(type == PathTypeCar){
|
||||||
// IMPROVE: use a goto here
|
// IMPROVE: use a goto here
|
||||||
// Find existing navi node
|
// Find existing car path link
|
||||||
for(k = 0; k < m_numNaviNodes; k++){
|
for(k = 0; k < m_numCarPathLinks; k++){
|
||||||
if(m_naviNodes[k].dirX == tempnodes[j].dirX &&
|
if(m_carPathLinks[k].dirX == tempnodes[j].dirX &&
|
||||||
m_naviNodes[k].dirY == tempnodes[j].dirY &&
|
m_carPathLinks[k].dirY == tempnodes[j].dirY &&
|
||||||
m_naviNodes[k].posX == tempnodes[j].pos.x &&
|
m_carPathLinks[k].posX == tempnodes[j].pos.x &&
|
||||||
m_naviNodes[k].posY == tempnodes[j].pos.y){
|
m_carPathLinks[k].posY == tempnodes[j].pos.y){
|
||||||
m_naviNodeLinks[m_numLinks] = k;
|
m_carPathConnections[m_numConnections] = k;
|
||||||
k = m_numNaviNodes;
|
k = m_numCarPathLinks;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// k is m_numNaviNodes+1 if we found one
|
// k is m_numCarPathLinks+1 if we found one
|
||||||
if(k == m_numNaviNodes){
|
if(k == m_numCarPathLinks){
|
||||||
m_naviNodes[m_numNaviNodes].dirX = tempnodes[j].dirX;
|
m_carPathLinks[m_numCarPathLinks].dirX = tempnodes[j].dirX;
|
||||||
m_naviNodes[m_numNaviNodes].dirY = tempnodes[j].dirY;
|
m_carPathLinks[m_numCarPathLinks].dirY = tempnodes[j].dirY;
|
||||||
m_naviNodes[m_numNaviNodes].posX = tempnodes[j].pos.x;
|
m_carPathLinks[m_numCarPathLinks].posX = tempnodes[j].pos.x;
|
||||||
m_naviNodes[m_numNaviNodes].posY = tempnodes[j].pos.y;
|
m_carPathLinks[m_numCarPathLinks].posY = tempnodes[j].pos.y;
|
||||||
m_naviNodes[m_numNaviNodes].pathNodeIndex = i;
|
m_carPathLinks[m_numCarPathLinks].pathNodeIndex = i;
|
||||||
m_naviNodes[m_numNaviNodes].numLeftLanes = tempnodes[j].numLeftLanes;
|
m_carPathLinks[m_numCarPathLinks].numLeftLanes = tempnodes[j].numLeftLanes;
|
||||||
m_naviNodes[m_numNaviNodes].numRightLanes = tempnodes[j].numRightLanes;
|
m_carPathLinks[m_numCarPathLinks].numRightLanes = tempnodes[j].numRightLanes;
|
||||||
m_naviNodes[m_numNaviNodes].trafficLightType = 0;
|
m_carPathLinks[m_numCarPathLinks].trafficLightType = 0;
|
||||||
m_naviNodeLinks[m_numLinks] = m_numNaviNodes++;
|
m_carPathConnections[m_numConnections] = m_numCarPathLinks++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pathNodes[i].numLinks++;
|
m_pathNodes[i].numLinks++;
|
||||||
m_numLinks++;
|
m_numConnections++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find i inside path segment
|
// Find i inside path segment
|
||||||
|
@ -414,9 +414,9 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
|
||||||
if(objectpathinfo[istart + iseg].next == jseg ||
|
if(objectpathinfo[istart + iseg].next == jseg ||
|
||||||
objectpathinfo[jstart + jseg].next == iseg){
|
objectpathinfo[jstart + jseg].next == iseg){
|
||||||
// Found a link between i and j
|
// Found a link between i and j
|
||||||
m_linkTo[m_numLinks] = j;
|
m_connections[m_numConnections] = j;
|
||||||
dist = m_pathNodes[i].pos - m_pathNodes[j].pos;
|
dist = m_pathNodes[i].pos - m_pathNodes[j].pos;
|
||||||
m_distTo[m_numLinks] = dist.Magnitude();
|
m_distances[m_numConnections] = dist.Magnitude();
|
||||||
|
|
||||||
if(type == PathTypeCar){
|
if(type == PathTypeCar){
|
||||||
posx = (m_pathNodes[i].pos.x + m_pathNodes[j].pos.x)*0.5f;
|
posx = (m_pathNodes[i].pos.x + m_pathNodes[j].pos.x)*0.5f;
|
||||||
|
@ -431,39 +431,39 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
|
||||||
dy = -dy;
|
dy = -dy;
|
||||||
}
|
}
|
||||||
// IMPROVE: use a goto here
|
// IMPROVE: use a goto here
|
||||||
// Find existing navi node
|
// Find existing car path link
|
||||||
for(k = 0; k < m_numNaviNodes; k++){
|
for(k = 0; k < m_numCarPathLinks; k++){
|
||||||
if(m_naviNodes[k].dirX == dx &&
|
if(m_carPathLinks[k].dirX == dx &&
|
||||||
m_naviNodes[k].dirY == dy &&
|
m_carPathLinks[k].dirY == dy &&
|
||||||
m_naviNodes[k].posX == posx &&
|
m_carPathLinks[k].posX == posx &&
|
||||||
m_naviNodes[k].posY == posy){
|
m_carPathLinks[k].posY == posy){
|
||||||
m_naviNodeLinks[m_numLinks] = k;
|
m_carPathConnections[m_numConnections] = k;
|
||||||
k = m_numNaviNodes;
|
k = m_numCarPathLinks;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// k is m_numNaviNodes+1 if we found one
|
// k is m_numCarPathLinks+1 if we found one
|
||||||
if(k == m_numNaviNodes){
|
if(k == m_numCarPathLinks){
|
||||||
m_naviNodes[m_numNaviNodes].dirX = dx;
|
m_carPathLinks[m_numCarPathLinks].dirX = dx;
|
||||||
m_naviNodes[m_numNaviNodes].dirY = dy;
|
m_carPathLinks[m_numCarPathLinks].dirY = dy;
|
||||||
m_naviNodes[m_numNaviNodes].posX = posx;
|
m_carPathLinks[m_numCarPathLinks].posX = posx;
|
||||||
m_naviNodes[m_numNaviNodes].posY = posy;
|
m_carPathLinks[m_numCarPathLinks].posY = posy;
|
||||||
m_naviNodes[m_numNaviNodes].pathNodeIndex = i;
|
m_carPathLinks[m_numCarPathLinks].pathNodeIndex = i;
|
||||||
m_naviNodes[m_numNaviNodes].numLeftLanes = -1;
|
m_carPathLinks[m_numCarPathLinks].numLeftLanes = -1;
|
||||||
m_naviNodes[m_numNaviNodes].numRightLanes = -1;
|
m_carPathLinks[m_numCarPathLinks].numRightLanes = -1;
|
||||||
m_naviNodes[m_numNaviNodes].trafficLightType = 0;
|
m_carPathLinks[m_numCarPathLinks].trafficLightType = 0;
|
||||||
m_naviNodeLinks[m_numLinks] = m_numNaviNodes++;
|
m_carPathConnections[m_numConnections] = m_numCarPathLinks++;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
// Crosses road
|
// Crosses road
|
||||||
if(objectpathinfo[istart + iseg].next == jseg && objectpathinfo[istart + iseg].flag & 1 ||
|
if(objectpathinfo[istart + iseg].next == jseg && objectpathinfo[istart + iseg].flag & 1 ||
|
||||||
objectpathinfo[jstart + jseg].next == iseg && objectpathinfo[jstart + jseg].flag & 1)
|
objectpathinfo[jstart + jseg].next == iseg && objectpathinfo[jstart + jseg].flag & 1)
|
||||||
m_linkFlags[m_numLinks] |= 1;
|
m_connectionFlags[m_numConnections] |= 1;
|
||||||
else
|
else
|
||||||
m_linkFlags[m_numLinks] &= ~1;
|
m_connectionFlags[m_numConnections] &= ~1;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pathNodes[i].numLinks++;
|
m_pathNodes[i].numLinks++;
|
||||||
m_numLinks++;
|
m_numConnections++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -477,35 +477,35 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
|
||||||
for(i = 0; i < m_numPathNodes; i++){
|
for(i = 0; i < m_numPathNodes; i++){
|
||||||
if(m_pathNodes[i].numLinks != 2)
|
if(m_pathNodes[i].numLinks != 2)
|
||||||
continue;
|
continue;
|
||||||
l1 = m_naviNodeLinks[m_pathNodes[i].firstLink];
|
l1 = m_carPathConnections[m_pathNodes[i].firstLink];
|
||||||
l2 = m_naviNodeLinks[m_pathNodes[i].firstLink+1];
|
l2 = m_carPathConnections[m_pathNodes[i].firstLink+1];
|
||||||
|
|
||||||
if(m_naviNodes[l1].numLeftLanes == -1 &&
|
if(m_carPathLinks[l1].numLeftLanes == -1 &&
|
||||||
m_naviNodes[l2].numLeftLanes != -1){
|
m_carPathLinks[l2].numLeftLanes != -1){
|
||||||
done = 0;
|
done = 0;
|
||||||
if(m_naviNodes[l2].pathNodeIndex == i){
|
if(m_carPathLinks[l2].pathNodeIndex == i){
|
||||||
// why switch left and right here?
|
// why switch left and right here?
|
||||||
m_naviNodes[l1].numLeftLanes = m_naviNodes[l2].numRightLanes;
|
m_carPathLinks[l1].numLeftLanes = m_carPathLinks[l2].numRightLanes;
|
||||||
m_naviNodes[l1].numRightLanes = m_naviNodes[l2].numLeftLanes;
|
m_carPathLinks[l1].numRightLanes = m_carPathLinks[l2].numLeftLanes;
|
||||||
}else{
|
}else{
|
||||||
m_naviNodes[l1].numLeftLanes = m_naviNodes[l2].numLeftLanes;
|
m_carPathLinks[l1].numLeftLanes = m_carPathLinks[l2].numLeftLanes;
|
||||||
m_naviNodes[l1].numRightLanes = m_naviNodes[l2].numRightLanes;
|
m_carPathLinks[l1].numRightLanes = m_carPathLinks[l2].numRightLanes;
|
||||||
}
|
}
|
||||||
m_naviNodes[l1].pathNodeIndex = i;
|
m_carPathLinks[l1].pathNodeIndex = i;
|
||||||
}else if(m_naviNodes[l1].numLeftLanes != -1 &&
|
}else if(m_carPathLinks[l1].numLeftLanes != -1 &&
|
||||||
m_naviNodes[l2].numLeftLanes == -1){
|
m_carPathLinks[l2].numLeftLanes == -1){
|
||||||
done = 0;
|
done = 0;
|
||||||
if(m_naviNodes[l1].pathNodeIndex == i){
|
if(m_carPathLinks[l1].pathNodeIndex == i){
|
||||||
// why switch left and right here?
|
// why switch left and right here?
|
||||||
m_naviNodes[l2].numLeftLanes = m_naviNodes[l1].numRightLanes;
|
m_carPathLinks[l2].numLeftLanes = m_carPathLinks[l1].numRightLanes;
|
||||||
m_naviNodes[l2].numRightLanes = m_naviNodes[l1].numLeftLanes;
|
m_carPathLinks[l2].numRightLanes = m_carPathLinks[l1].numLeftLanes;
|
||||||
}else{
|
}else{
|
||||||
m_naviNodes[l2].numLeftLanes = m_naviNodes[l1].numLeftLanes;
|
m_carPathLinks[l2].numLeftLanes = m_carPathLinks[l1].numLeftLanes;
|
||||||
m_naviNodes[l2].numRightLanes = m_naviNodes[l1].numRightLanes;
|
m_carPathLinks[l2].numRightLanes = m_carPathLinks[l1].numRightLanes;
|
||||||
}
|
}
|
||||||
m_naviNodes[l2].pathNodeIndex = i;
|
m_carPathLinks[l2].pathNodeIndex = i;
|
||||||
}else if(m_naviNodes[l1].numLeftLanes == -1 &&
|
}else if(m_carPathLinks[l1].numLeftLanes == -1 &&
|
||||||
m_naviNodes[l2].numLeftLanes == -1)
|
m_carPathLinks[l2].numLeftLanes == -1)
|
||||||
done = 0;
|
done = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -513,11 +513,11 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
|
||||||
// Fall back to default values for number of lanes
|
// Fall back to default values for number of lanes
|
||||||
for(i = 0; i < m_numPathNodes; i++)
|
for(i = 0; i < m_numPathNodes; i++)
|
||||||
for(j = 0; j < m_pathNodes[i].numLinks; j++){
|
for(j = 0; j < m_pathNodes[i].numLinks; j++){
|
||||||
k = m_naviNodeLinks[m_pathNodes[i].firstLink + j];
|
k = m_carPathConnections[m_pathNodes[i].firstLink + j];
|
||||||
if(m_naviNodes[k].numLeftLanes < 0)
|
if(m_carPathLinks[k].numLeftLanes < 0)
|
||||||
m_naviNodes[k].numLeftLanes = 1;
|
m_carPathLinks[k].numLeftLanes = 1;
|
||||||
if(m_naviNodes[k].numRightLanes < 0)
|
if(m_carPathLinks[k].numRightLanes < 0)
|
||||||
m_naviNodes[k].numRightLanes = 1;
|
m_carPathLinks[k].numRightLanes = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -532,7 +532,7 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
|
||||||
if((m_pathNodes[i].flags & PathNodeDeadEnd) == 0){
|
if((m_pathNodes[i].flags & PathNodeDeadEnd) == 0){
|
||||||
k = 0;
|
k = 0;
|
||||||
for(j = 0; j < m_pathNodes[i].numLinks; j++)
|
for(j = 0; j < m_pathNodes[i].numLinks; j++)
|
||||||
if((m_pathNodes[m_linkTo[m_pathNodes[i].firstLink + j]].flags & PathNodeDeadEnd) == 0)
|
if((m_pathNodes[m_connections[m_pathNodes[i].firstLink + j]].flags & PathNodeDeadEnd) == 0)
|
||||||
k++;
|
k++;
|
||||||
if(k < 2){
|
if(k < 2){
|
||||||
m_pathNodes[i].flags |= PathNodeDeadEnd;
|
m_pathNodes[i].flags |= PathNodeDeadEnd;
|
||||||
|
@ -554,9 +554,9 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
|
||||||
m_pathNodes[j] = m_pathNodes[j+1];
|
m_pathNodes[j] = m_pathNodes[j+1];
|
||||||
|
|
||||||
// Fix links
|
// Fix links
|
||||||
for(j = oldNumLinks; j < m_numLinks; j++)
|
for(j = oldNumLinks; j < m_numConnections; j++)
|
||||||
if(m_linkTo[j] >= i)
|
if(m_connections[j] >= i)
|
||||||
m_linkTo[j]--;
|
m_connections[j]--;
|
||||||
|
|
||||||
// Also in treadables
|
// Also in treadables
|
||||||
for(j = 0; j < m_numMapObjects; j++)
|
for(j = 0; j < m_numMapObjects; j++)
|
||||||
|
|
|
@ -40,8 +40,7 @@ struct CPathNode
|
||||||
*/
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: name?
|
struct CCarPathLink
|
||||||
struct NaviNode
|
|
||||||
{
|
{
|
||||||
float posX;
|
float posX;
|
||||||
float posY;
|
float posY;
|
||||||
|
@ -51,8 +50,8 @@ struct NaviNode
|
||||||
int8 numLeftLanes;
|
int8 numLeftLanes;
|
||||||
int8 numRightLanes;
|
int8 numRightLanes;
|
||||||
int8 trafficLightType;
|
int8 trafficLightType;
|
||||||
// probably only padding
|
|
||||||
int8 field15;
|
int8 field15;
|
||||||
|
// probably only padding
|
||||||
int8 field16;
|
int8 field16;
|
||||||
int8 field17;
|
int8 field17;
|
||||||
};
|
};
|
||||||
|
@ -93,28 +92,28 @@ class CPathFind
|
||||||
public:
|
public:
|
||||||
/* For reference VC:
|
/* For reference VC:
|
||||||
CPathNode pathNodes[9650];
|
CPathNode pathNodes[9650];
|
||||||
NaviNode naviNodes[3500];
|
CCarPathLink m_carPathLinks[3500];
|
||||||
CBuilding *mapObjects[1250];
|
CBuilding *m_mapObjects[1250];
|
||||||
// 0x8000 is cross road flag
|
// 0x8000 is cross road flag
|
||||||
// 0x4000 is traffic light flag
|
// 0x4000 is traffic light flag
|
||||||
uint16 linkTo[20400];
|
uint16 m_connections[20400];
|
||||||
uint8 distTo[20400];
|
uint8 m_distances[20400];
|
||||||
int16 naviNodeLinks[20400];
|
int16 m_carPathConnections[20400];
|
||||||
*/
|
*/
|
||||||
CPathNode m_pathNodes[4930];
|
CPathNode m_pathNodes[4930];
|
||||||
NaviNode m_naviNodes[2076];
|
CCarPathLink m_carPathLinks[2076];
|
||||||
CTreadable *m_mapObjects[1250];
|
CTreadable *m_mapObjects[1250];
|
||||||
uint8 m_objectFlags[1250];
|
uint8 m_objectFlags[1250];
|
||||||
int16 m_linkTo[10260];
|
int16 m_connections[10260];
|
||||||
int16 m_distTo[10260];
|
int16 m_distances[10260];
|
||||||
uint8 m_linkFlags[10260];
|
uint8 m_connectionFlags[10260];
|
||||||
int16 m_naviNodeLinks[10260];
|
int16 m_carPathConnections[10260];
|
||||||
int32 m_numPathNodes;
|
int32 m_numPathNodes;
|
||||||
int32 m_numCarPathNodes;
|
int32 m_numCarPathNodes;
|
||||||
int32 m_numPedPathNodes;
|
int32 m_numPedPathNodes;
|
||||||
int16 m_numMapObjects;
|
int16 m_numMapObjects;
|
||||||
int16 m_numLinks;
|
int16 m_numConnections;
|
||||||
int32 m_numNaviNodes;
|
int32 m_numCarPathLinks;
|
||||||
int32 h;
|
int32 h;
|
||||||
uint8 m_numGroups[2];
|
uint8 m_numGroups[2];
|
||||||
CPathNode m_aExtraPaths[872];
|
CPathNode m_aExtraPaths[872];
|
||||||
|
|
Loading…
Reference in a new issue