18 #include <matrix/vlVector.h>
20 #include <tbb/queuing_rw_mutex.h>
21 #include <tbb/mutex.h>
22 #include <tbb/tbb_thread.h>
33 namespace MAKVRinTerra
36 class DtFeatureGeometry;
41 class GeneratorInputOutput;
42 class GeneratorSector;
56 std::vector<unsigned long> navTagData;
107 status = GenerationNotRequested;
112 tbb::atomic<SectorGenerationStatus>
status;
134 const DtVector& p2 = DtVector::zero(),
unsigned t = 0)
135 : point1(p1), point2(p2), tag(t) {};
142 std::list<EdgePoints>* edges,
int sectorX,
int sectorY,
unsigned edgeTag,
void* usr);
144 std::list<EdgePoints>* edges,
int sectorX,
int sectorY,
unsigned edgeTag,
void* usr);
157 const DtFilename& navGenConfigFile,
158 const DtFilename& runtimeConfigFile,
159 const DtFilename& outputPath,
160 const DtFilename& terrainFile,
161 bool generateFeatureTagVolumes);
164 void addNavEdgeFromDynamicTerrainFunction(
const DtString& name, DynamicTerrainNavEdgeFunction fcn,
void* usr);
167 void addNavEdgeFromFeatureDataFunction(
const DtString& name, FeatureDataNavEdgeFunction fcn,
void* usr);
170 virtual void setTransitionPointSpacing(
double spacing);
173 virtual double transitionPointSpacing()
const;
179 virtual bool generate();
197 static void setCreator(DtNavDataGeneratorCreatorFcn creatorFcn);
200 static void setNavDataDirectory(
const DtFilename& navDataDir);
203 static const DtFilename& navDataDirectory();
207 static DtFilename replaceSubstrings(
const DtFilename& original);
230 static void trianglesFinalizeCallback(
int status,
void* usr);
231 virtual void processTrianglesFinalize(
int status,
DtNavTriangles& triangles);
235 virtual std::list<DtVector> calculateTransitionPointLocations();
241 virtual bool generateProfileNavData(
246 virtual bool generateSectorNavData(
255 Kaim::GeneratorInputOutput& generatorInputOutput,
256 const DtString& randomId,
const DtFilename& navDataOutputDir);
262 Kaim::GeneratorSector* sector,
const DtString& randomId,
263 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
264 std::vector<char>* buffer = 0,
270 Kaim::GeneratorInputOutput& generatorInputOutput,
271 const DtString& randomId,
const DtFilename& navDataOutputDir);
277 Kaim::GeneratorSector* sector,
const DtString& randomId,
278 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
279 std::vector<char>* buffer = 0,
285 Kaim::GeneratorInputOutput& generatorInputOutput,
286 const DtString& randomId,
const DtFilename& navDataOutputDir);
292 Kaim::GeneratorSector* sector,
const DtString& randomId,
293 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
294 std::vector<char>* buffer = 0,
298 virtual void registerDefaultNavEdgeGenerationFunctions();
308 std::list<EdgePoints>* edges,
int sectorX,
int sectorY,
unsigned edgeTag,
void* usr);
317 std::list<EdgePoints>* edges,
int sectorX,
int sectorY,
unsigned edgeTag,
void* usr);
330 virtual bool terrainHeight(
const DtPoint& p,
double& height,
double* min=0,
double* max=0)
const;
334 virtual void setNumberOfProgressSteps(
int steps);
335 virtual void nextProgressStep(
const DtString& stepName,
int numSubSteps = 0);
336 virtual void nextProgressSubStep();
337 virtual void progressComplete();
338 virtual void outputProgress(
const DtString& stepName = DtString::nullString());
346 virtual DtOutputStream& detailOutput();
349 virtual DtOutputStream& milestoneOutput();
352 virtual DtOutputStream& notableOutput();
355 virtual DtOutputStream& errorOutput();