From 966d295429c52bb08b36ca891812e2c9f851818c Mon Sep 17 00:00:00 2001 From: iobyte Date: Mon, 12 Sep 2022 17:59:20 +0000 Subject: [PATCH] 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 --- src/tools/trackgen/objects.cpp | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/tools/trackgen/objects.cpp b/src/tools/trackgen/objects.cpp index 71d42e9a7..96b2dc7f7 100644 --- a/src/tools/trackgen/objects.cpp +++ b/src/tools/trackgen/objects.cpp @@ -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;