![]() |
VR-Forces Developer's Guide
|
Manager which owns element definitions.for one type of element Use the makVrv::DtElementDefinitionTypesManager to get each element definition manager. How DtElementDefinitions work - Element Definitions are used specify which visual elements(Visualizers) will be created for an object; and how those visual elements will be configured. Each visual element is specified and configured with a Visualizer Definition.The specifications for that visual element are provided as Visualizer Attributes.Visualizer Definitions in turn are grouped into Visualizer Definition Sets.
The system supports 6 different model sets, but only 3 are actively used - the 3D model set, the XR model set, and the icon(2D) model set.Each Element Definition has a Visualizer Definition Set for each model set(although the sets for unused model sets may be empty).
Element Definitions are organized hierarchically.Visualizer Definitions are inherited by descendant Element Definitions(within their corresponding Visualizer Definition Sets).Visualizer Attributes can be added or overridden by including a corresponding Visualizer Definition in a descendant Element Definition.
A request for the attributes of a Visualizer Definition in a particular Element Definition will start with the Visualizer Definition(either local or inherited) in that Element Definition and works it's way up the hierarchy adding any inherited attributes that haven't already been seen.
So there is a hierarchical relationship for the Element Definitions, but also a corresponding hierarchy for each Visualizer Definition within any given Element Definition hierarchy.
Within the API(once data is loaded) each Element Definition has a pointer to it's parent Element Definition (if any) and a children's list.Similarly, each Visualizer Definition will have a parent pointer to it's parent Visualizer Definition and a children's list.
In it's archive form (saved in SharedData), just parent info is maintained. Each element definition has a Name and a Parent Name (which specifies it's parent Element Definition's Name). Visualizer Definitions have a UUID string and a parent UUID string.
There is an important different here though.Each Element Definition Name is unique; but Visualizer Definition UUID strings are shared by all the visualizer definitions within a corresponding Element Definition hierarchy.

Public Types | |
| enum | DefinitionFileType { DefinitionFileType::FileTypeHierarchy, DefinitionFileType::FileTypeLeaf, DefinitionFileType::FileTypeBoth } |
| typedef std::map< DtUnicode, DtElementDefinition * > | DefinitionMap |
| typedef std::map< std::string, makArchives::DtElementsRecord > | StringToElementsRecordMap |
| typedef std::vector< const DtElementDefinition * > | ElementDefinitions |
| typedef std::vector < std::string > ::const_iterator | ParentToElementIter |
Public Member Functions | |
| DtElementDefinitionManager ()=delete | |
| DtElementDefinitionManager & | operator= (const DtElementDefinitionManager &)=delete |
| virtual | ~DtElementDefinitionManager () |
| virtual const std::string & | name () const |
| virtual const DtUnicode & | screenName () const |
| virtual const std::string & | rootsFilesname () const |
| virtual unsigned int | numberOfElementDefinitions () const |
| virtual const DefinitionMap & | elementDefinitions () const |
| virtual DtElementDefinition * | findElementDefinition (const DtUnicode &definitionName) |
| virtual const DtElementDefinition * | findElementDefinition (const DtUnicode &definitionName) const |
| virtual DtElementDefinition * | createElementDefinition (const DtUnicode &definitionName) |
| virtual DtElementDefinition * | createElementDefinition (const DtUnicode &definitionName, DtElementDefinition *parentDefinition) |
| virtual void | destroyElementDefinition (DtElementDefinition *) |
| virtual void | destroyElementDefinitionAndChildren (DtElementDefinition *) |
| virtual DtElementDefinition * | copyElementDefinition (DtElementDefinition &def, const DtUnicode &newName) |
| virtual DtBackupInterface * | backup () |
| virtual bool | renameElementDefinition (const DtUnicode &oldName, const DtUnicode &newName) |
| virtual void | loadDefaults () |
| virtual void | loadDefaults (bool loadOnlyFactory) |
| virtual DefinitionMap & | modifiedDefinitions () |
| virtual std::vector< std::string > | retrieveHierFilesToMerge (const std::string &type) |
| virtual std::vector< std::string > | retrieveLeafFilesToMerge (const std::string &type) |
| virtual bool | shouldSkipDefLoading () |
| virtual void | revertSettings () |
| virtual void | saveAsDefaults () |
| virtual void | splitAndWriteToDir (makArchives::DtElementsRecord &elementsRec, const std::string &existingDirName) |
| virtual void | exportSettings (const std::string &fileOrDirName) |
| virtual void | exportSelectedSettings (const std::vector< std::string > &names, const std::string &fileName) |
| virtual void | exportHierSettings (const std::string &fileName) |
| virtual void | exportHierSettings (std::vector< std::string > &fileList) |
| virtual void | exportLeafSettings (std::vector< std::string > &fileList) |
| virtual void | exportSelectedLeafSetting (const std::string &name, const std::string &fileName) |
| virtual void | exportSelectedHierSetting (const std::string &name, const std::string &fileName, bool allLevels=true) |
| virtual void | createFolderFromPathAndSplit (const std::string &fileOrDirName, std::string &newPath, std::string &dirName) |
| virtual bool | importAndReplaceSettings (const std::string &fileName) |
| virtual bool | importAndReplaceHierRecords (StringToElementsRecordMap &recordMap, const std::string &importFileName) |
| virtual void | mergeHierSettings (const std::string &hierFileOrDirName) |
| virtual void | mergeHierSettings (const std::string &hierFileOrDirName, ElementDefinitions &addedDefinitions, ElementDefinitions &skippedDefinitions) |
| virtual void | mergeLeafSettings (const std::string &leafFileOrDirName) |
| virtual void | mergeLeafSettings (const std::string &fileOrDirName, ElementDefinitions &addedDefinitions, ElementDefinitions &skippedDefinitions) |
| virtual void | mergeSettings (const std::string &fileName, ElementDefinitions &addedDefinitions, ElementDefinitions &skippedDefinitions) |
| virtual void | markRecordsAsHier (makArchives::DtElementsRecord &rec) |
| virtual DtDeSettings * | settings () |
| virtual void | setFromRecord (const makArchives::DtElementsRecord &elemRecord) |
| virtual void | setFromRecord (const makArchives::DtElementsRecord &elemRecord, ElementDefinitions &addedDefinitions, ElementDefinitions &skippedDefinitions) |
| virtual void | setFromRecords (StringToElementsRecordMap &elemRecords, ElementDefinitions &addedDefinitions, ElementDefinitions &skippedDefinitions, bool &forceSaveAfterLoad) |
| virtual void | mergeRecords (StringToElementsRecordMap &recordMap, ElementDefinitions &addedDefinitions, ElementDefinitions &skippedDefinitions) |
| virtual void | mergeHierRecord (const makArchives::DtElementsRecord &hierRecord, ElementDefinitions &addedDefinitions, ElementDefinitions &skippedDefinitions) |
| virtual void | mergeLeafRecords (StringToElementsRecordMap &recordMap, ElementDefinitions &addedDefinitions, ElementDefinitions &skippedDefinitions) |
| virtual void | mergeLeafRecord (const makArchives::DtElementsRecord &leafRecord, ElementDefinitions &addedDefinitions, ElementDefinitions &skippedDefinitions) |
| virtual void | getRecord (makArchives::DtElementsRecord &rec) const |
| virtual void | getRecord (makArchives::DtElementsRecord &rec, const std::string &fileName) const |
| virtual void | getRecord (const std::vector< std::string > &elementDefinitions, makArchives::DtElementsRecord &rec) const |
| virtual void | getRecordIncludingParent (const std::vector< std::string > &elementDefinitions, makArchives::DtElementsRecord &rec) const |
| virtual void | splitRecordElemMgr (makArchives::DtElementsRecord &rec, makArchives::DtElementsRecord &recHier, makArchives::DtElementsRecord &recLeaves) |
| virtual void | setAutoSave (bool enabled) |
| virtual bool | validateElementDefinition (const DtElementDefinition &def) |
| virtual bool | validateElementAttribute (const DtVisualizerDefinition::SortedAttributeMap::iterator &attr) |
| virtual DtUnicode | getElementDefinitionError (const DtElementDefinition &def) |
| virtual bool | canUseHierLeaf () |
| virtual bool | modifiedSinceStartup () |
| virtual void | resetModifiedSinceStartupFlag () |
| virtual void | addToModifiedDefinitionsMap (DtElementDefinition *modelDefinition) |
| virtual void | addToAddedDefinitionsMap (DtElementDefinition *modelDefinition) |
| virtual DefinitionMap | getDeletedDefinitionsMap () |
| virtual void | addToDeletedDefinitionsMap (DtElementDefinition *modelDefinition) |
| virtual void | resetModifiedFlags () |
| virtual DtUnicode | findFirstDefWithAttribPair (const DtUnicode &attributeName, const DtUnicode &attributeValue) |
| virtual DtVisualizerAttributeStringVector::StringVector | findAllAttributeValues (const DtUnicode &elementDefName, const DtUnicode &attributeName) |
| virtual std::string | getModelSetDisplayName (DtModelSetId modelSet) const |
| virtual void | removeElementFromChangeMaps (const DtUnicode &definitionName) |
| virtual void | removeElementsFromChangeMaps (DefinitionFileType fileType) |
| virtual void | getChangedFiles (std::vector< std::string > &changedFiles, DefinitionFileType fileType) |
| virtual void | getSplitRecord (std::vector< makArchives::DtElementsRecord > &rec, std::vector< std::string > &fileNames) |
| virtual void | addRecords (makArchives::DtElementsRecord &recs, makArchives::DtElementsRecord &combinedRec) |
| virtual void | enableFilePathReadWriteOnRecord (makArchives::DtElementsRecord &recs) |
Static Public Member Functions | |
| static const DtElementDefinitionManager * | createConstCopy (const DtElementDefinitionManager &orig) |
| static makArchives::DtElementDefinitionRecord | buildElementDefinitionRecord (const DtElementDefinition &elementDef) |
| static void | setupVisualizerDefs (makArchives::DtElementDefinitionRecord &elementRec, const DtElementDefinition &elementDef, DtModelSetId modelSet) |
| static bool | isHierFileName (const std::string &fileName) |
Public Attributes | |
| boost::signalslib::signal< void()> | signal_managerAboutTobeDeleted |
Protected Types | |
| typedef std::pair< std::string, const makArchives::DtElementDefinitionRecord * > | ElementPair |
| typedef std::vector< ElementPair > | ElementGroup |
| typedef std::map< DtUnicode, ElementGroup > | ParentToElementsMap |
| typedef std::map< std::string, DtVisualizerDefinitionValidator * > | VisualizerDefinitionValidatorMap |
| typedef DtRecordSettingsBackup < DtElementDefinitionManager, makArchives::DtElementsRecord > | ElementDefinitionsBackup |
Protected Attributes | |
| VisualizerDefinitionValidatorMap | myValidators |
| std::string | myName |
| std::string | myRootsFilename |
| std::string | myHierName |
| std::string | myLeafName |
| DtUnicode | myScreenName |
| DtDe * | myOptionalDe |
| DefinitionMap | myDefinitions |
| boost::unordered_map < std::string, std::string > | myDefinitionNameCheck |
| bool | myProceduralFlag |
| bool | myAutoSave |
| ElementDefinitionsBackup * | myBackup |
| DefinitionMap | myModifiedDefinitions |
| DefinitionMap | myAddedDefinitions |
| bool | myConvertingHierarchy |
| DefinitionMap | myDeletedDefinitions |
| bool | myConvertWarningsToInfo = false |
| typedef std::map<DtUnicode, DtElementDefinition*> makVrv::DtElementDefinitionManager::DefinitionMap |
Ordered map from element definition name to definition object.
| typedef std::map<std::string, makArchives::DtElementsRecord> makVrv::DtElementDefinitionManager::StringToElementsRecordMap |
Ordered map from a string (fileName) to a DtElementsRecord.
| typedef std::vector<const DtElementDefinition*> makVrv::DtElementDefinitionManager::ElementDefinitions |
List of new element definitions.
| typedef std::vector<std::string>::const_iterator makVrv::DtElementDefinitionManager::ParentToElementIter |
Iterator for parent to element names.
|
protected |
a pair, holding the definition file name in the key and the element definition record in the value
|
protected |
A group of element definition records, used for the following map.
|
protected |
Map from parent element definition name to a group of elements Used to reconstruct the element hierarchy from a flat record in the following functions.
|
protected |
Remove all elements from a definition map.
|
protected |
Remove all elements from a definition map.
|
protected |
Remove all elements from a definition map.
|
protected |
|
protected |
|
delete |
Default constructor- Not implemented.
|
virtual |
Destructor.
|
protected |
Constructor.
|
protected |
Copy constructor.o.
|
static |
Create a constant copy for use in separate threads.
|
static |
Utility function to construct an element definition record from an element definition object.
|
static |
Utility function to construct the visualizer definitions for 2D, 3D, XR.
|
static |
Utility function to determine if fileName is a .hier file (! isHierFileName() means leaf file)
|
delete |
Assignment Operator- Not implemented.
|
virtual |
Get the name of the element definition manager. This name is used to uniquely specify file names.
|
virtual |
Get the screen name of the element definition manager. This name is display the name of the element type to the user.
|
virtual |
This is the name of the .hier file that contains the root element definitions for this type of element If multiple such files are found, setFromRecords will warn and abort.
|
virtual |
Get the number of element definitions.
|
virtual |
Get the element definitions. This map will change if there are any calls to create or destroy elements. Those calls may invalidate any iterators obtained from the map.
|
virtual |
Find an element definition by name.
|
virtual |
Find an element definition by name.
|
virtual |
Create an element definition with a given name.
|
virtual |
Create an element definition with a given name, that inherits an existing definition.
|
virtual |
Destroy an element definition, any inherited definitions will now be Parented under destroyed element's parent.
|
virtual |
Destroys an element definition and all of it's child definitions.
|
virtual |
Create a copy of an element definition, with a new name. The element definition must not be inherited by any other definitions to be copyable. The new definition will share the same parent as the source definition.
|
virtual |
Get the backup object.
|
virtual |
Rename an element definition.
|
virtual |
Load the default definitions.
|
virtual |
Load the default definitions.
|
virtual |
Returns map of modified definitions.
|
virtual |
For command line arguments, list of .hier files from command line for this type (entity, aggregate, tactical graphics, etc)
Reimplemented in makVrf::DtVrfElementDefinitionManager.
|
virtual |
For command line arguments, list of .leaf files from command line for this type (entity, aggregate, tactical graphics, etc)
Reimplemented in makVrf::DtVrfElementDefinitionManager.
|
virtual |
Given command line parameters, should we skip loading definitions from the usual place (currently entity, aggregate, tactical graphics can skip)
Reimplemented in makVrf::DtVrfElementDefinitionManager.
|
virtual |
Revert to startup settings.
|
virtual |
Called to save the current definitions as the defaults.
|
virtual |
Write records as .hier/.leaf to an existing directory.
|
virtual |
Export settings to the named file.
|
virtual |
Export Selected settings to the name file.
|
virtual |
Export hierarchy to the named file.
|
virtual |
Export hierarchy files on the supplied list.
|
virtual |
Export leafs to the name file (elements with no children) fileList is the list of all leaf files in directory This function matches each definition to their matching file name in the fileList.
|
virtual |
Export Selected leafs to the name file (elements with no children)
|
virtual |
Export Selected hierarchy node to the name file (elements with no children)
|
virtual |
For saving out element definitions, make a folder and write a file for the hierarchy, and one for the leaf element definitions.
|
virtual |
Import settings from the named file.
|
virtual |
|
virtual |
Merge in a .hier file or directory that contains .hier files.
|
virtual |
Merge in a .hier file or directory that contains .hier files.
|
virtual |
Merge a .leaf file into the existing hierarchy Replace existing leaves and add new leaves.
|
virtual |
Merge in a .hier file or directory that contains .hier files.
|
virtual |
Merge records from *.elem or *.leaf file.
|
virtual |
Mark all the element definitions in this record as belonging to the element hierarchy (used when records are split into hier/leaf files or when .elem is loaded)
|
virtual |
Get the settings object that manages element definitions on disk.
|
virtual |
Set the element definitions from a record will mark all hier DtelementsRecord as isHier() == true will not mark nodes it determines to be leaves as isHier()=false in case some of those nodes are desired to be in the hierarchy.
|
virtual |
Set the element definitions from a record Fills addedDefinitions with definitions successfully added Fills skippedDefinitions with definitions that could not be added and were different from any existing definition with the same name This function is still needed because it is called in some locations Certain lines of code are nearly identical to setFromRecords but setFromRecords lines contain certain lines specifically for map so they cannot be shared.
|
virtual |
Set the element definitions from a record Fills addedDefinitions with definitions successfully added Fills skippedDefinitions with definitions that could not be added and were different from any existing definition with the same name This takes in a map as opposed to a vector, like setFromRecord does. This is to accommodate the key to hold the definition's file location.
|
virtual |
Merge in the element definitions from records Returns a list of the new elements This takes in a map as opposed to a vector, like mergeRecord does. This is to accommodate the key to hold the definition's file location.
|
virtual |
Merge in the element definitions from a record Returns a list of the new elements.
|
virtual |
Merge in the element definitions from all leaf records Returns a list of the new elements.
|
virtual |
Merge in the element definitions from a record Returns a list of the new elements.
|
virtual |
Fill in a record with the current definitions.
|
virtual |
Get records for definitions from the specified fileName.
|
virtual |
Fill in a record with the passed definitions.
|
virtual |
Fill in a record with the passed definitions and their parents(if exist)
|
virtual |
Back up methods, see DtRecordSettingsBackup.h.
Divide the single DefinitionMap into multiple pieces (hierarchy, leaves for this case) Used for backups
|
virtual |
Take element definitions and append them to the existing element definitions Used for backups.
|
virtual |
Enable reading and writing of the filepaths for each element definition to disk This is required when the element definition back up files are loaded, the original file path can be added to the definition Used for backups.
|
virtual |
Take myDefinitions and split it into two DtElementsRecords One for leaf elements (elements with no children) and one just for hierarchy elements (non-leaf nodes) will mark all hier as hier (isHier() == true)
|
virtual |
Set whether the manager saves itself out as default when changed.
|
virtual |
Validate an element definition against its registered schema validator, if any.
|
virtual |
Validate an element attribute against its registered schema validator, if any.
|
virtual |
Gets the string indicates the errors in an element definition.
|
virtual |
Are these element definitions using the .hier/.leaf setup?
Reimplemented in makVrf::DtVrfElementDefinitionManager.
|
virtual |
return whether the element definitions have modified since start up
|
virtual |
Reset the flag about any changes to element definitions since start up.
|
virtual |
add a model definition to the modifiedDefinitions map
|
virtual |
add a model definition to the addedDefinitions map
|
virtual |
get the map of deleted definitions
|
virtual |
add a model definition to the deletedDefinitions map
|
virtual |
reset the flags about the modification after you have save it.
|
virtual |
search the list of definitions for one with the attribute value pair requested and return the name of the first one found
|
virtual |
search the attributes of a definitions for one with the attribute name requested and return a list of all values for those attributes
|
virtual |
Gets the display name for a modelSet. 0 for "Model Set 3D" etc.
| modelSet | The model set. |
|
virtual |
Removes the specified element definition from any change map it might be on.
|
virtual |
Remove all definitions of the specified file type from any change map it might be on.
|
virtual |
Get a list of files associated with element definitions on any change maps of the type specify.
|
protectedvirtual |
Internal function to register a hierarchy.
|
protectedvirtual |
Build the visualizer definition sets for an element from its record.
|
protectedvirtual |
Build the 2D, 3D, XR visualizers for a particular model set.
|
protectedvirtual |
Recursively create the child element definitions for an element using a map from parent names to child records.
|
protectedvirtual |
register the settings backup after the de has initialized the shared settings object
|
protectedvirtual |
Do all visualizers for all model sets match.
|
protectedvirtual |
Does (2D,3D,XR) match (2D,3D,XR) in another definition.
|
protectedvirtual |
Generate data structure mapping parent1 -> vec{child1, child2, child3}.
|
protectedvirtual |
Check if .leaf files contain only leaf nodes.
|
protectedvirtual |
Load .leaf files and add/replace existing entries in the record.
|
protectedvirtual |
Load from appData/definitions/ElementDefinitions.
|
protectedvirtual |
Identify if a record set is entity definitions.
|
protectedvirtual |
Identify if a record set is tactcal graphics definitions.
|
protectedvirtual |
Identify if a record set is unit definitions.
|
protectedvirtual |
Check if an element has the same name but different capitalization or if it has 'Name', 'Name 1', 'Name 2' which happens sometimes with VRF.
|
protectedvirtual |
|
protectedvirtual |
wrapped logging of warning
|
protectedvirtual |
Get the filenames of all the element definitions of the specified type on a definition map.
|
protectedvirtual |
Remove all the elements of the specified type from a definition map.
|
protectedvirtual |
Remove all elements from a definition map.
|
protectedvirtual |
Remove all elements from a definition map.
|
protectedvirtual |
Remove all elements from a definition map.
|
protectedvirtual |
Remove all elements from a definition map.
|
protectedvirtual |
This gets called if we are not in a conversion pass and a leaf node is found without Uuids.
|
protectedvirtual |
Remove all elements from a definition map.
|
friend |
| boost::signalslib::signal<void()> makVrv::DtElementDefinitionManager::signal_managerAboutTobeDeleted |
Signals Signal sent when this manager is about to be deleted.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |