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;
126 status = GenerationNotRequested;
131 tbb::atomic<SectorGenerationStatus>
status;
153 const DtVector& p2 = DtVector::zero(),
unsigned t = 0)
154 : point1(p1), point2(p2), tag(t) {};
164 : point(pt), tag(t) {};
179 std::list<NavEdgePoints>* edges,
void* usr);
189 std::list<NavEdgePoints>* edges,
void* usr);
199 int sectorX,
int sectorY,
unsigned edgeTag,
200 std::list<NavEdgePoints>* edges,
void* usr);
215 std::list<NavPoint>* points,
void* usr);
225 std::list<NavPoint>* points,
void* usr);
235 int sectorX,
int sectorY,
unsigned pointTag,
236 std::list<NavPoint>* points,
void* usr);
251 const DtFilename& navGenConfigFile,
252 const DtFilename& runtimeConfigFile,
253 const DtFilename& outputPath,
254 const DtFilename& terrainFile,
255 bool generateFeatureTagVolumes);
261 void addNavEdgeFromDynamicTerrainFunction(
const DtString& name,
262 DynamicTerrainNavEdgeFunction fcn,
void* usr);
268 void addNavEdgeFromFeatureDataFunction(
const DtString& name, FeatureDataNavEdgeFunction fcn,
275 void addGeneralNavEdgeFunction(
const DtString& name, GeneralNavEdgeFunction fcn,
282 void addNavPointFromDynamicTerrainFunction(
const DtString& name,
283 DynamicTerrainNavPointFunction fcn,
void* usr);
289 void addNavPointFromFeatureDataFunction(
const DtString& name, FeatureDataNavPointFunction fcn,
296 void addGeneralNavPointFunction(
const DtString& name, GeneralNavPointFunction fcn,
300 virtual void setTransitionPointSpacing(
double spacing);
303 virtual double transitionPointSpacing()
const;
309 virtual bool generate();
338 virtual bool terrainHeight(
const DtPoint& p,
double& height,
double* min = 0,
double* max = 0)
const;
341 static void setCreator(DtNavDataGeneratorCreatorFcn creatorFcn);
344 static void setNavDataDirectory(
const DtFilename& navDataDir);
347 static const DtFilename& navDataDirectory();
351 static DtFilename replaceSubstrings(
const DtFilename& original);
360 virtual void loadPlugins(
const std::set<DtFilename>& pluginFiles);
363 virtual void unloadPlugins();
366 virtual bool checkPluginVersion(DtDynamicLibrary* plugin)
const;
383 static void trianglesFinalizeCallback(
int status,
void* usr);
384 virtual void processTrianglesFinalize(
int status,
DtNavTriangles& triangles);
388 virtual std::list<DtVector> calculateTransitionPointLocations();
394 virtual bool generateProfileNavData(
399 virtual bool generateSectorNavData(
408 Kaim::GeneratorInputOutput& generatorInputOutput,
409 const DtString& randomId,
const DtFilename& navDataOutputDir);
415 Kaim::GeneratorSector* sector,
const DtString& randomId,
416 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
417 std::vector<char>* buffer = 0,
423 Kaim::GeneratorInputOutput& generatorInputOutput,
424 const DtString& randomId,
const DtFilename& navDataOutputDir);
430 Kaim::GeneratorSector* sector,
const DtString& randomId,
431 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
432 std::vector<char>* buffer = 0,
438 Kaim::GeneratorInputOutput& generatorInputOutput,
439 const DtString& randomId,
const DtFilename& navDataOutputDir);
445 Kaim::GeneratorSector* sector,
const DtString& randomId,
446 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
447 std::vector<char>* buffer = 0,
452 int sectorX,
int sectorY,
const DtExtent& sectorExtent,
454 std::list<NavEdgePoints>& navEdges);
459 Kaim::GeneratorInputOutput& generatorInputOutput,
460 const DtString& randomId,
const DtFilename& navDataOutputDir);
466 Kaim::GeneratorSector* sector,
const DtString& randomId,
467 const DtFilename& navDataOutputDir = DtFilename::nullFilename(),
468 std::vector<char>* buffer = 0,
473 int sectorX,
int sectorY,
const DtExtent& sectorExtent,
475 std::list<NavPoint>& navPoints);
480 virtual void setNumberOfProgressSteps(
int steps);
481 virtual void nextProgressStep(
const DtString& stepName,
int numSubSteps = 0);
482 virtual void nextProgressSubStep();
483 virtual void progressComplete();
484 virtual void outputProgress(
const DtString& stepName = DtString::nullString());
492 virtual DtOutputStream& detailOutput();
495 virtual DtOutputStream& milestoneOutput();
498 virtual DtOutputStream& notableOutput();
501 virtual DtOutputStream& errorOutput();
Definition: navGeneration.h:139
static const double HighCoverHeightCheck
Definition: navGeneration.h:110
DtTime timeToComplete
Definition: navGeneration.h:135
DtNavigationGeneratorInput myNavGenInput
The current input for the navigation generator.
Definition: navGeneration.h:523
SectorGenerationStatus
Definition: navGeneration.h:100
RwMutex myFeatureTagVolumeGeneratorMutex
Mutex for myFeatureTagVolumeGenerator.
Definition: navGeneration.h:547
tbb::atomic< bool > stop
Definition: navGeneration.h:134
int myCurrentProgressSubStep
Definition: navGeneration.h:565
Definition: navGeneration.h:88
double myTransitionPointSpacing
The spacing to be used between transition points for exiting the nav area.
Definition: navGeneration.h:551
SectorGenerationThreadMap mySectorThreads
Sector generation threads by sector name.
Definition: navGeneration.h:554
std::vector< DtNavTriangle > DtNavTriangles
Definition: navTriangle.h:38
Aids in creating and parsing nav sector names.
Definition: navSectorName.h:25
unsigned tag
Definition: navGeneration.h:167
bool myIsInitialized
Indicates whether initialize() has been successfully called.
Definition: navGeneration.h:560
int myNumberOfProgressSteps
Definition: navGeneration.h:562
std::map< DtString, DynamicTerrainNavPointFunctionInfo > myDynamicTerrainNavPointFunctions
Functions used to create nav points from dynamic terrain features.
Definition: navGeneration.h:578
static const double LowCoverHeightCheck
Definition: navGeneration.h:109
Definition: navGeneration.h:104
NavEdgePoints(const DtVector &p1=DtVector::zero(), const DtVector &p2=DtVector::zero(), unsigned t=0)
Definition: navGeneration.h:152
static const unsigned NumCoverCheckAngles
Definition: navGeneration.h:111
unsigned int blue
Definition: navGeneration.h:51
unsigned tag
Definition: navGeneration.h:158
std::pair< FeatureDataNavEdgeFunction, void * > FeatureDataNavEdgeFunctionInfo
Definition: navGeneration.h:203
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
Definition: navGeneration.h:82
std::list< DtDynamicLibrary * > myLoadedPlugins
Definition: navGeneration.h:589
DtFeatureTagVolumeGenerator * myFeatureTagVolumeGenerator
Whether feature tags will be generated.
Definition: navGeneration.h:544
DtTerrainInterface * myTerrainInterface
The terrain interface for the terrain on which nav data is being generated.
Definition: navGeneration.h:520
tbb::mutex Mutex
Definition: navGeneration.h:115
Definition: navGeneration.h:119
tbb::queuing_rw_mutex RwMutex
Definition: navGeneration.h:114
Definition: navGeneration.h:102
Definition: navGeneration.h:150
std::map< DtString, DtString > ProfileRandomIdMap
Definition: navGeneration.h:146
Definition: terrainProcessPolygonsBox.h:25
Configuration data for a set of navigation data that is loaded by the sim engine and used at runtime...
Definition: rwNavRuntimeConfig.h:60
std::pair< FeatureDataNavPointFunction, void * > FeatureDataNavPointFunctionInfo
Definition: navGeneration.h:239
Defines settings for navData generation, to allow navData to be generated differently for different t...
Definition: rwNavigationProfile.h:25
RwMutex myNavGenInputMutex
Mutex for myNavGenInput.
Definition: navGeneration.h:526
DtString statusMsg
Definition: navGeneration.h:132
DtFilename myTerrainFile
The terrain file for which nav data is being generated.
Definition: navGeneration.h:541
Definition: rwNavGenConfig.h:26
std::pair< GeneralNavPointFunction, void * > GeneralNavPointFunctionInfo
Definition: navGeneration.h:240
std::map< DtString, GeneralNavEdgeFunctionInfo > myGeneralNavEdgeFunctions
Functions used to create nav edges using a user defined algorithm that does not use dynamic terrain f...
Definition: navGeneration.h:575
DtTerrainInterface allows access to common terrain calls without having to know the terrain implement...
Definition: terrainInterface.h:84
std::vector< DtInputNavTag > navTagDataList
Definition: navGeneration.h:84
std::pair< DynamicTerrainNavPointFunction, void * > DynamicTerrainNavPointFunctionInfo
Definition: navGeneration.h:238
static DtFilename theNavDataDir
Definition: navGeneration.h:591
std::auto_ptr< tbb::tbb_thread > thread
Definition: navGeneration.h:133
Definition: navGeneration.h:161
DtRwNavRuntimeConfig myNavRuntimeConfig
The runtime configuration for the nav.
Definition: navGeneration.h:517
DtClock myClock
Definition: navGeneration.h:587
std::pair< DynamicTerrainNavEdgeFunction, void * > DynamicTerrainNavEdgeFunctionInfo
Definition: navGeneration.h:202
unsigned int green
Definition: navGeneration.h:50
DtNavDataGenerator * generator
Definition: navGeneration.h:141
Definition: navGeneration.h:46
DtVector point2
Definition: navGeneration.h:157
Definition: navGeneration.h:64
MAKVRinTerra::DtFeatureGeometry myExtentFeatureGeometry
The nav area extents as a feature geometry.
Definition: navGeneration.h:557
Definition: navGeneration.h:103
std::map< DtString, FeatureDataNavEdgeFunctionInfo > myFeatureDataNavEdgeFunctions
Functions used to create nav edges from terrain feature data.
Definition: navGeneration.h:571
std::vector< DtInputNavTagVolume > navTagVolumeList
Definition: navGeneration.h:85
Definition: navGeneration.h:70
DtFilename myRuntimeConfigFile
The path of the runtime config file.
Definition: navGeneration.h:535
This class is used to generate nav data for an area on a terrain.
Definition: navGeneration.h:96
std::pair< GeneralNavEdgeFunction, void * > GeneralNavEdgeFunctionInfo
Definition: navGeneration.h:204
std::map< DtNavSectorDataType, std::vector< char > > NavDataOutputMap
Definition: navGeneration.h:117
#define DT_DLL_vrfNavigation
This file is used to determine how to build.
Definition: vrfNavigationDefines.h:26
static DtNavDataGeneratorCreatorFcn theCreatorFcn
Definition: navGeneration.h:592
static const double CoverChordLengthFactor
Definition: navGeneration.h:112
std::map< DtString, FeatureDataNavPointFunctionInfo > myFeatureDataNavPointFunctions
Functions used to create nav points from terrain feature data.
Definition: navGeneration.h:581
Definition: rwStringList.h:20
Definition: featureTagVolumeGenerator.h:15
std::map< DtString, DynamicTerrainNavEdgeFunctionInfo > myDynamicTerrainNavEdgeFunctions
Functions used to create nav edges from dynamic terrain features.
Definition: navGeneration.h:568
DtNavTriangles triangles
Definition: navGeneration.h:142
static Mutex theNavDataGenMutex
Mutex for the period when data is actually being generated.
Definition: navGeneration.h:529
DtFilename myOutputPath
Where nav data files should be generated.
Definition: navGeneration.h:538
Represents a GIS feature.
Definition: feature.h:37
Definition: rwNavigationProfile.h:133
DtFilename myNavGenConfigFile
The path of the navigation generator config file.
Definition: navGeneration.h:532
std::map< DtString, GeneralNavPointFunctionInfo > myGeneralNavPointFunctions
Functions used to create nav points using a user defined algorithm that does not use dynamic terrain ...
Definition: navGeneration.h:585
NavDataOutputMap outputData
Definition: navGeneration.h:130
int myNumberOfProgressSubSteps
Definition: navGeneration.h:563
SectorGenerationThreadInfo(const DtNavSectorName &sn)
Definition: navGeneration.h:121
DtNavSectorName sectorName
Definition: navGeneration.h:129
Represents a feature geometry.
Definition: featureGeometry.h:35
Definition: navGeneration.h:105
std::map< DtNavSectorName, SectorGenerationThreadInfo * > SectorGenerationThreadMap
Definition: navGeneration.h:137
tbb::atomic< SectorGenerationStatus > status
Definition: navGeneration.h:131
int myCurrentProgressStep
Definition: navGeneration.h:564