trackgen: make global variable GroupRoot local
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@8496 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 653fb615656e65a3da03d4dda8abc36762a43a85 Former-commit-id: 7c604688871e2e23cdad12eb54118acefbea2e33
This commit is contained in:
parent
fb1b6f9fa0
commit
966d295429
1 changed files with 13 additions and 19 deletions
|
@ -48,8 +48,6 @@
|
|||
static char path[1024];
|
||||
static char buf[1024];
|
||||
|
||||
static ssgRoot *GroupRoot = nullptr;
|
||||
|
||||
struct group
|
||||
{
|
||||
ssgBranch *br;
|
||||
|
@ -98,7 +96,7 @@ ApplyTransform(sgMat4 m, ssgBase *node)
|
|||
{
|
||||
((ssgLeaf *)node)->transform(m);
|
||||
}
|
||||
else
|
||||
else if (node->isAKindOf(ssgTypeBranch()))
|
||||
{
|
||||
ssgBranch *br = (ssgBranch *)node;
|
||||
|
||||
|
@ -247,7 +245,7 @@ AddToRoot(ssgRoot *Root, ssgEntity *node)
|
|||
{
|
||||
Root->addKid(node);
|
||||
}
|
||||
else
|
||||
else if (node->isAKindOf(ssgTypeBranch()))
|
||||
{
|
||||
ssgBranch *br = (ssgBranch *)node;
|
||||
|
||||
|
@ -480,7 +478,7 @@ ssgSaveACInner (ssgEntity *ent, FILE *save_fd)
|
|||
|
||||
/* insert one leaf in group */
|
||||
static void
|
||||
InsertInGroup(ssgEntity *ent)
|
||||
InsertInGroup(ssgEntity *ent, ssgRoot* GroupRoot)
|
||||
{
|
||||
int grIdx;
|
||||
struct group *curGrp;
|
||||
|
@ -505,7 +503,7 @@ InsertInGroup(ssgEntity *ent)
|
|||
|
||||
/* insert leaves in groups */
|
||||
static void
|
||||
InsertInner(ssgEntity *ent)
|
||||
InsertInner(ssgEntity *ent, ssgRoot* GroupRoot)
|
||||
{
|
||||
/* WARNING - RECURSIVE! */
|
||||
|
||||
|
@ -515,28 +513,21 @@ InsertInner(ssgEntity *ent)
|
|||
|
||||
for (int i = 0; i < br->getNumKids (); i++)
|
||||
{
|
||||
InsertInner(br->getKid (i));
|
||||
InsertInner(br->getKid (i), GroupRoot);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
InsertInGroup (ent);
|
||||
InsertInGroup (ent, GroupRoot);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
Group(tTrack *track, void *TrackHandle, ssgRoot *Root)
|
||||
Group(tTrack *track, void *TrackHandle, ssgRoot *Root, ssgRoot *GroupRoot)
|
||||
{
|
||||
tdble Margin;
|
||||
|
||||
if (GroupRoot)
|
||||
{
|
||||
delete (GroupRoot);
|
||||
}
|
||||
|
||||
GroupRoot = new ssgRoot();
|
||||
|
||||
Margin = GfParmGetNum(TrackHandle, TRK_SECT_TERRAIN, TRK_ATT_BMARGIN, nullptr, 100.0);
|
||||
GroupSize = GfParmGetNum(TrackHandle, TRK_SECT_TERRAIN, TRK_ATT_GRPSZ, nullptr, 100.0);
|
||||
XGroupOffset = track->min.x - Margin;
|
||||
|
@ -553,7 +544,7 @@ Group(tTrack *track, void *TrackHandle, ssgRoot *Root)
|
|||
|
||||
Groups = (struct group *)calloc(GroupNb, sizeof (struct group));
|
||||
|
||||
InsertInner(Root);
|
||||
InsertInner(Root, GroupRoot);
|
||||
}
|
||||
|
||||
|
||||
|
@ -631,7 +622,9 @@ GenerateObjects(tTrack *track, void *TrackHandle, void *CfgHandle, FILE *save_fd
|
|||
}
|
||||
}
|
||||
|
||||
Group(track, TrackHandle, Root);
|
||||
ssgRoot *GroupRoot = new ssgRoot();
|
||||
|
||||
Group(track, TrackHandle, Root, GroupRoot);
|
||||
|
||||
const char *extName = GfParmGetStr(CfgHandle, "Files", "object", "obj");
|
||||
sprintf(buf, "%s-%s-%d.ac", outputFile.c_str(), extName, index);
|
||||
|
@ -644,7 +637,8 @@ GenerateObjects(tTrack *track, void *TrackHandle, void *CfgHandle, FILE *save_fd
|
|||
ssgSaveACInner(GroupRoot, save_fd);
|
||||
}
|
||||
|
||||
delete (Root);
|
||||
delete Root;
|
||||
delete GroupRoot;
|
||||
} while (!GfParmListSeekNext(TrackHandle, path));
|
||||
|
||||
delete TrackRoot;
|
||||
|
|
Loading…
Reference in a new issue