Helios++
Helios software for LiDAR simulations
XmlAssetsLoader Class Reference

Class for asset loading from XML file. More...

#include <XmlAssetsLoader.h>

Inheritance diagram for XmlAssetsLoader:
Collaboration diagram for XmlAssetsLoader:

Public Member Functions

 XmlAssetsLoader (std::string &filePath, std::string &assetsDir)
 Build a XmlAssetsLoader for given XML file and assets directory. More...
 
std::shared_ptr< AssetgetAssetById (std::string type, std::string id)
 Get asset by its identifier. More...
 
std::shared_ptr< AssetgetAssetByLocation (std::string type, std::string location)
 Get asset by location. More...
 
std::shared_ptr< AssetcreateAssetFromXml (std::string type, tinyxml2::XMLElement *assetNode)
 Create an asset from given XML element (node) More...
 
Color4f createColorFromXml (tinyxml2::XMLElement *node)
 Create a color from given XML element (node) More...
 
std::map< std::string, ObjectT > createParamsFromXml (tinyxml2::XMLElement *paramsNode)
 Create a map of parameters from given XML element (node) More...
 
std::shared_ptr< PlatformcreatePlatformFromXml (tinyxml2::XMLElement *platformNode)
 Create a platform from given XML element (node) More...
 
std::shared_ptr< PlatformSettingscreatePlatformSettingsFromXml (tinyxml2::XMLElement *node)
 Create platform settings from given XML element (node) More...
 
std::shared_ptr< ScannercreateScannerFromXml (tinyxml2::XMLElement *scannerNode)
 Create scanner from given XML element (node) More...
 
std::shared_ptr< ScannerSettingscreateScannerSettingsFromXml (tinyxml2::XMLElement *node)
 Create scanner settings from given XML element (node) More...
 
std::shared_ptr< FWFSettingscreateFWFSettingsFromXml (tinyxml2::XMLElement *node, std::shared_ptr< FWFSettings > settings=nullptr)
 Create FWF settings from given XML element (node) More...
 
std::shared_ptr< ScenecreateSceneFromXml (tinyxml2::XMLElement *sceneNode, std::string path)
 Create scene from given XML element (node) More...
 
Rotation createRotationFromXml (tinyxml2::XMLElement *rotGroupNode)
 Create a rotation from given XML element (node) More...
 
glm::dvec3 createVec3dFromXml (tinyxml2::XMLElement *node, std::string attrPrefix)
 Create a 3D vector from given XML element (node) More...
 

Static Public Member Functions

static std::shared_ptr< NoiseSource< double > > createNoiseSource (tinyxml2::XMLElement *noise)
 Create a noise source from given XML element (node) More...
 

Public Attributes

tinyxml2::XMLDocument doc
 XML file through tinyxml2 library.
 
SceneLoadingSpecification sceneSpec
 Scene loading specification. More...
 

Protected Member Functions

ObjectT getAttribute (tinyxml2::XMLElement *element, std::string attrName, std::string type, ObjectT defaultVal)
 Obtain attribute from XML. More...
 

Protected Attributes

std::string assetsDir
 Assets directory.
 
std::string xmlDocFilename = "unknown.xml"
 Name of the XML file.
 
std::string xmlDocFilePath = ""
 Path to the XML file.
 
std::unordered_map< std::string, std::shared_ptr< ScannerSettings > > scannerTemplates
 Map containing all scanner templates that were loading while building from XML file. No repetitions, each template appears only one time. More...
 

Detailed Description

Class for asset loading from XML file.

Constructor & Destructor Documentation

◆ XmlAssetsLoader()

XmlAssetsLoader::XmlAssetsLoader ( std::string &  filePath,
std::string &  assetsDir 
)

Build a XmlAssetsLoader for given XML file and assets directory.

Parameters
filePathPath to XML File
assetsDirPath to assets directory

Member Function Documentation

◆ createAssetFromXml()

std::shared_ptr< Asset > XmlAssetsLoader::createAssetFromXml ( std::string  type,
tinyxml2::XMLElement *  assetNode 
)

Create an asset from given XML element (node)

Parameters
typeAsset type
assetNodeXML element (node) containing asset data
Returns
Shared pointer to created asset
See also
Asset

◆ createColorFromXml()

Color4f XmlAssetsLoader::createColorFromXml ( tinyxml2::XMLElement *  node)

Create a color from given XML element (node)

Parameters
nodeXML element (node) containing color data
Returns
Created color
See also
Color4f

◆ createFWFSettingsFromXml()

std::shared_ptr< FWFSettings > XmlAssetsLoader::createFWFSettingsFromXml ( tinyxml2::XMLElement *  node,
std::shared_ptr< FWFSettings settings = nullptr 
)

Create FWF settings from given XML element (node)

Parameters
nodeXML element (node) containing FWF settings data
settingsSpecify the FWFSettings instance to use as output. If nullptr is specified, then a new instance of FWFSettings is used
Returns
Shared pointer to created FWF settings
See also
FWFSettings

◆ createNoiseSource()

std::shared_ptr< NoiseSource< double > > XmlAssetsLoader::createNoiseSource ( tinyxml2::XMLElement *  noise)
static

Create a noise source from given XML element (node)

Parameters
noiseXML element (node) containing noise source specification
Returns
Shared pointer to created noise source
See also
NoiseSource

◆ createParamsFromXml()

std::map< std::string, ObjectT > XmlAssetsLoader::createParamsFromXml ( tinyxml2::XMLElement *  paramsNode)

Create a map of parameters from given XML element (node)

Parameters
paramsNodeXML element (node) containing parameters
Returns
Map with parameters, so each one is identified by a different string

◆ createPlatformFromXml()

std::shared_ptr< Platform > XmlAssetsLoader::createPlatformFromXml ( tinyxml2::XMLElement *  platformNode)

Create a platform from given XML element (node)

Parameters
platformNodeXML element (node) containing platform data
Returns
Shared pointer to created platform
See also
Platform

◆ createPlatformSettingsFromXml()

std::shared_ptr< PlatformSettings > XmlAssetsLoader::createPlatformSettingsFromXml ( tinyxml2::XMLElement *  node)

Create platform settings from given XML element (node)

Parameters
nodeXML element (node) containing platform settings data
Returns
Shared pointer to created platform settings
See also
PlatformSettings

◆ createRotationFromXml()

Rotation XmlAssetsLoader::createRotationFromXml ( tinyxml2::XMLElement *  rotGroupNode)

Create a rotation from given XML element (node)

Parameters
rotGroupNodeXML element (node) containing rotation data
Returns
Created rotation
See also
Rotation

◆ createScannerFromXml()

std::shared_ptr< Scanner > XmlAssetsLoader::createScannerFromXml ( tinyxml2::XMLElement *  scannerNode)

Create scanner from given XML element (node)

Parameters
scannerNodeXML element (node) containing scanner data
Returns
Shared pointer to created scanner
See also
Scanner

◆ createScannerSettingsFromXml()

std::shared_ptr< ScannerSettings > XmlAssetsLoader::createScannerSettingsFromXml ( tinyxml2::XMLElement *  node)

Create scanner settings from given XML element (node)

Parameters
nodeXML element (node) containing scanner settings data
Returns
Shared pointer to created scanner settings
See also
ScannerSettings

◆ createSceneFromXml()

std::shared_ptr< Scene > XmlAssetsLoader::createSceneFromXml ( tinyxml2::XMLElement *  sceneNode,
std::string  path 
)

Create scene from given XML element (node)

Parameters
sceneNodeXML element (node) containing scene data
pathPath to scene file
Returns
Shared pointer to created scene
See also
Scene

◆ createVec3dFromXml()

glm::dvec3 XmlAssetsLoader::createVec3dFromXml ( tinyxml2::XMLElement *  node,
std::string  attrPrefix 
)

Create a 3D vector from given XML element (node)

Parameters
nodeXML element (node) containing 3D vector data
attrPrefixAttribute prefix. It will be used so x component is "attrPrefix" + "x" and so on for y and z components too.
Returns
Created 3D vector
See also
glm::dvec3

◆ getAssetById()

std::shared_ptr< Asset > XmlAssetsLoader::getAssetById ( std::string  type,
std::string  id 
)

Get asset by its identifier.

Parameters
typeType of the asset
idIdentifier of the asset
Returns
Shared pointer to requested asset

◆ getAssetByLocation()

std::shared_ptr< Asset > XmlAssetsLoader::getAssetByLocation ( std::string  type,
std::string  location 
)

Get asset by location.

Parameters
typeType of the asset
locationLocation of the asset
Returns
Shared pointer to requested asset

◆ getAttribute()

ObjectT XmlAssetsLoader::getAttribute ( tinyxml2::XMLElement *  element,
std::string  attrName,
std::string  type,
ObjectT  defaultVal 
)
protected

Obtain attribute from XML.

Parameters
elementXML element (node) where the attribute must be taken from
attrNameName of the attribute to be obtained
typeType of the attribute to be obtained
defaultValDefault value to be used in case attribute was not found
Returns
Obtained attribute or default value if attribute was not found

Member Data Documentation

◆ scannerTemplates

std::unordered_map<std::string, std::shared_ptr<ScannerSettings> > XmlAssetsLoader::scannerTemplates
protected

Map containing all scanner templates that were loading while building from XML file. No repetitions, each template appears only one time.

The id of the template is used as the key, while the template itself is the value (ScannerSettings object)

◆ sceneSpec

SceneLoadingSpecification XmlAssetsLoader::sceneSpec

Scene loading specification.

See also
SceneLoadingSpecification

The documentation for this class was generated from the following files: