18 #include <matrix/vlVector.h>
20 #include <tbb/queuing_rw_mutex.h>
21 #include <tbb/mutex.h>
22 #include <tbb/tbb_thread.h>
32 class DtDynamicLibrary;
34 namespace MAKVRinTerra
37 class DtFeatureGeometry;
42 class GeneratorInputOutput;
43 class GeneratorSector;
57 std::vector<unsigned long> navTagData;
108 status = GenerationNotRequested;
113 tbb::atomic<SectorGenerationStatus>
status;
135 const DtVector& p2 = DtVector::zero(),
unsigned t = 0)
136 : point1(p1), point2(p2), tag(t) {};
146 : point(pt), tag(t) {};
161 std::list<NavEdgePoints>* edges,
void* usr);
171 std::list<NavEdgePoints>* edges,
void* usr);
181 int sectorX,
int sectorY,
unsigned edgeTag,
182 std::list<NavEdgePoints>* edges,
void* usr);
197 std::list<NavPoint>* points,
void* usr);
207 std::list<NavPoint>* points,
void* usr);
217 int sectorX,
int sectorY,
unsigned pointTag,
218 std::list<NavPoint>* points,
void* usr);
233 const DtFilename& navGenConfigFile,
234 const DtFilename& runtimeConfigFile,
235 const DtFilename& outputPath,
236 const DtFilename& terrainFile,
237 bool generateFeatureTagVolumes);
243 void addNavEdgeFromDynamicTerrainFunction(
const DtString& name,
244 DynamicTerrainNavEdgeFunction fcn,
void* usr);
250 void addNavEdgeFromFeatureDataFunction(
const DtString& name, FeatureDataNavEdgeFunction fcn,
257 void addGeneralNavEdgeFunction(
const DtString& name, GeneralNavEdgeFunction fcn,
264 void addNavPointFromDynamicTerrainFunction(
const DtString& name,
265 DynamicTerrainNavPointFunction fcn,
void* usr);
271 void addNavPointFromFeatureDataFunction(
const DtString& name, FeatureDataNavPointFunction fcn,
278 void addGeneralNavPointFunction(
const DtString& name, FeatureDataNavPointFunction fcn,
282 virtual void setTransitionPointSpacing(
double spacing);
285 virtual double transitionPointSpacing()
const;
291 virtual bool generate();
320 virtual bool terrainHeight(
const DtPoint& p,
double& height,
double* min = 0,
double* max = 0)
const;
323 static void setCreator(DtNavDataGeneratorCreatorFcn creatorFcn);
326 static void setNavDataDirectory(
const DtFilename& navDataDir);
329 static const DtFilename& navDataDirectory();
333 static DtFilename replaceSubstrings(
const DtFilename& original);
342 virtual void loadPlugins(
const std::set<DtFilename>& pluginFiles);
345 virtual void unloadPlugins();
348 virtual bool checkPluginVersion(DtDynamicLibrary* plugin)
const;
365 static void trianglesFinalizeCallback(
int status,
void* usr);
366 virtual void processTrianglesFinalize(
int status,
DtNavTriangles& triangles);
370 virtual std::list<DtVector> calculateTransitionPointLocations();
376 virtual bool generateProfileNavData(
381 virtual bool generateSectorNavData(
390 Kaim::GeneratorInputOutput& generatorInputOutput,
391 const DtString& randomId,
const DtFilename& navDataOutputDir);
397 Kaim::GeneratorSector* sector,
const DtString& randomId,
398 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
399 std::vector<char>* buffer = 0,
405 Kaim::GeneratorInputOutput& generatorInputOutput,
406 const DtString& randomId,
const DtFilename& navDataOutputDir);
412 Kaim::GeneratorSector* sector,
const DtString& randomId,
413 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
414 std::vector<char>* buffer = 0,
420 Kaim::GeneratorInputOutput& generatorInputOutput,
421 const DtString& randomId,
const DtFilename& navDataOutputDir);
427 Kaim::GeneratorSector* sector,
const DtString& randomId,
428 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
429 std::vector<char>* buffer = 0,
434 int sectorX,
int sectorY,
const DtExtent& sectorExtent,
436 std::list<NavEdgePoints>& navEdges);
441 Kaim::GeneratorInputOutput& generatorInputOutput,
442 const DtString& randomId,
const DtFilename& navDataOutputDir);
448 Kaim::GeneratorSector* sector,
const DtString& randomId,
449 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
450 std::vector<char>* buffer = 0,
455 int sectorX,
int sectorY,
const DtExtent& sectorExtent,
457 std::list<NavPoint>& navPoints);
462 virtual void setNumberOfProgressSteps(
int steps);
463 virtual void nextProgressStep(
const DtString& stepName,
int numSubSteps = 0);
464 virtual void nextProgressSubStep();
465 virtual void progressComplete();
466 virtual void outputProgress(
const DtString& stepName = DtString::nullString());
474 virtual DtOutputStream& detailOutput();
477 virtual DtOutputStream& milestoneOutput();
480 virtual DtOutputStream& notableOutput();
483 virtual DtOutputStream& errorOutput();