本文整理汇总了C++中XmlNode::GetAttributeValueF方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlNode::GetAttributeValueF方法的具体用法?C++ XmlNode::GetAttributeValueF怎么用?C++ XmlNode::GetAttributeValueF使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlNode
的用法示例。
在下文中一共展示了XmlNode::GetAttributeValueF方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadOtherDataFromXml
void LevelLoader::loadOtherDataFromXml(XmlNode* otherDataNode) {
XmlNode* dynamicObjNode = otherDataNode->GetFirstChildByNodeName(DYNAMIC_OBJECT_TAG);
while (dynamicObjNode != nullptr) {
int objXmlId = dynamicObjNode->GetAttributeValueI(ID_ATTRIBUTE);
std::string prefab = dynamicObjNode->GetAttributeValueS(PREFAB_ATTRIBUTE);
int xGridPosition = dynamicObjNode->GetAttributeValueI(X_ATTRIBUTE);
float yPosition = dynamicObjNode->GetAttributeValueF(Y_ATTRIBUTE);
int zGridPosition = dynamicObjNode->GetAttributeValueI(Z_ATTRIBUTE);
float rotation = dynamicObjNode->GetAttributeValueF(ROTATION_ATTRIBUTE) inRadians;
GameObject* dynamicObj = PrefabLoader::InstantiateGameObjectFromPrefab(FRAMEWORK->GetFileSystemUtils()->GetDevicePrefabsResourcesPath() + prefab + PREFAB_EXTENSION, ENGINE->GetSceneGraph3D());
idsFromXml[objXmlId] = dynamicObj->GetId();
// Position and orient the object
dynamicObj->GetTransform()->SetPosition(xGridPosition, yPosition, -zGridPosition);
dynamicObj->GetTransform()->SetOrientation(rotation, YAXIS);
// Check for overloaded components
XmlNode* compNode = dynamicObjNode->GetFirstChildByNodeName(COMPONENT_TAG);
while (compNode != nullptr) {
PrefabLoader::LoadComponentFromComponentNodeInPrefab(dynamicObj, compNode);
compNode = compNode->GetNextSiblingByNodeName(COMPONENT_TAG);
}
GridZone* zone = dynamicObj->GetComponent<GridZone>();
if (zone != nullptr) {
SINGLETONS->GetGridManager()->placeZoneOnGrid(dynamicObj->GetId());//GetGrid()->AddGridZone(dynamicObj->GetId());
}
dynamicObjNode = dynamicObjNode->GetNextSiblingByNodeName(DYNAMIC_OBJECT_TAG);
}
// TODO [Implement] Other things such as triggerables
}
示例2: loadCameraDataFromXml
void LevelLoader::loadCameraDataFromXml(XmlNode* cameraNode) {
// The level data file will specify which unit the camera should focus on by default
std::string unitNameStr = cameraNode->GetAttributeValueS(FOCUS_ATTRIBUTE);
// Find the unit that the camera should focus on
UnitType uType = StringToUnitType(unitNameStr);
ObjectIdType id = SINGLETONS->GetGridManager()->GetPlayerUnitIdOfType(uType);
ASSERT(id != OBJECT_ID_INVALID, "Player unit of type %d exists in level", uType);
//SINGLETONS->GetGridManager()->selectedUnitId = id;
PlayerUnit* pU = ENGINE->GetSceneGraph3D()->GetGameObjectById(id)->GetComponent<PlayerUnit>();
// TODO [Implement]: call this when the level starts so the player sees the selection animation
// Tell the grid who the selected unit is
SINGLETONS->GetGridManager()->selectUnitInCell(pU->gridNavRef->GetCurrentCell());
// Tell the select unit they are selected
pU->onSelectedTouch();
// Set the camera's position
GameObject* target = ENGINE->GetSceneGraph3D()->GetGameObjectById(id);
GridNavigator* gNav = target->GetComponent<GridNavigator>();
ASSERT(gNav != nullptr, "Object with id %d has GridNavigator component", id);
GridCell* cell = gNav->GetCurrentCell();
ASSERT(cell != nullptr, "Object with id %d is on grid", id);
// load in start and overview pos
glm::vec3 startPos;
bool startPosNodeIsNull = true;
XmlNode* startNode = cameraNode->GetFirstChildByNodeName(START_TAG);
if (startNode != nullptr) {
float startX = startNode->GetAttributeValueF(X_ATTRIBUTE);
float startY = startNode->GetAttributeValueF(Y_ATTRIBUTE);
float startZ = startNode->GetAttributeValueF(Z_ATTRIBUTE);
startPos = glm::vec3(startX, startY, startZ);
startPosNodeIsNull = false;
}
glm::vec3 overviewPos;
bool overviewNodeIsNull = true;
XmlNode* overviewNode = cameraNode->GetFirstChildByNodeName(OVERVIEW_TAG);
if (overviewNode != nullptr) {
float overviewX = overviewNode->GetAttributeValueF(X_ATTRIBUTE);
float overviewY = overviewNode->GetAttributeValueF(Y_ATTRIBUTE);
float overviewZ = overviewNode->GetAttributeValueF(Z_ATTRIBUTE);
overviewPos = glm::vec3(overviewX, overviewY, overviewZ);
overviewNodeIsNull = false;
}
// If a level does not have an overview node something is wrong
ASSERT(!overviewNodeIsNull, "level XML has information for overview camera");
SINGLETONS->GetGridManager()->GetShadyCamera()->loadCameraData(pU->gridNavRef->GetCurrentCell(), overviewPos, startPos, !startPosNodeIsNull);
}
示例3: loadUnitDataFromXml
void LevelLoader::loadUnitDataFromXml(XmlNode* unitBaseNode) {
// Start with player units
XmlNode* unitNode = unitBaseNode->GetFirstChildByNodeName("");
while (unitNode != nullptr) {
int unitXmlId = unitNode->GetAttributeValueI(ID_ATTRIBUTE);
std::string unitPrefab = unitNode->GetAttributeValueS(PREFAB_ATTRIBUTE);
GameObject* unitObj = PrefabLoader::InstantiateGameObjectFromPrefab(FRAMEWORK->GetFileSystemUtils()->GetDevicePrefabsResourcesPath() + unitPrefab + PREFAB_EXTENSION, ENGINE->GetSceneGraph3D());
idsFromXml[unitXmlId] = unitObj->GetId();
// Units require a GridNavigator component
GridNavigator* gNav = unitObj->GetComponent<GridNavigator>();
ASSERT(gNav != nullptr, "Unit with id %d has GridNavigator component", unitObj->GetId());
// Read the initial position of the unit
int gX = unitNode->GetAttributeValueI(X_ATTRIBUTE);
int gZ = unitNode->GetAttributeValueI(Z_ATTRIBUTE);
float rotation = unitNode->GetAttributeValueF(ROTATION_ATTRIBUTE) inRadians;
// Add the unit to the grid
SINGLETONS->GetGridManager()->placeUnitOnGrid(unitObj->GetId(), gX, gZ);
// Orient the unit.
unitObj->GetTransform()->SetOrientation(rotation, YAXIS);
// Check unit type
if (unitNode->GetName() == ENEMY_UNIT_TAG) {
EnemyUnit* enemyUnit = unitObj->GetComponent<EnemyUnit>();
ASSERT(enemyUnit != nullptr, "Enemy unit with id %d has EnemyUnit component", unitObj->GetId());
enemyUnit->Activate();
AiPerception* aiPerception = unitObj->GetComponent<AiPerception>();
ASSERT(aiPerception != nullptr, "Enemy unit with id %d has AiPerception component", unitObj->GetId());
aiPerception->Activate();
AiRoutine* aiRoutine = unitObj->GetComponent<AiRoutine>();
ASSERT(aiRoutine != nullptr, "Enemy unit with id %d has AiRoutine component", unitObj->GetId());
// Load the AI routine.
XmlNode* aiCommandNode = unitNode->GetFirstChildByNodeName(AI_COMMAND_TAG);
std::vector<std::string> commands;
while (aiCommandNode != nullptr) {
std::string command = aiCommandNode->GetValue();
commands.push_back(command);
aiCommandNode = aiCommandNode->GetNextSiblingByNodeName(AI_COMMAND_TAG);
}
aiRoutine->SetBehavior(commands);
}
GridZone* zone = unitObj->GetComponent<GridZone>();
if (zone != nullptr) {
SINGLETONS->GetGridManager()->placeZoneOnGrid(unitObj->GetId());//GetGrid()->AddGridZone(dynamicObj->GetId());
}
unitNode = unitNode->GetNextSiblingByNodeName("");
}
}
示例4: loadStaticDataFromXml
void LevelLoader::loadStaticDataFromXml(XmlNode* staticNode) {
XmlNode* staticObjNode = staticNode->GetFirstChildByNodeName(STATIC_OBJECT_TAG);
while (staticObjNode != nullptr) {
int objXmlId = staticObjNode->GetAttributeValueI(ID_ATTRIBUTE);
std::string prefab = staticObjNode->GetAttributeValueS(PREFAB_ATTRIBUTE);
int westBound = staticObjNode->GetAttributeValueI(X_ATTRIBUTE);
float yPosition = staticObjNode->GetAttributeValueF(Y_ATTRIBUTE);
int southBound = staticObjNode->GetAttributeValueI(Z_ATTRIBUTE);
int objWidth = staticObjNode->GetAttributeValueI(WIDTH_ATTRIBUTE);
int objHeight = staticObjNode->GetAttributeValueI(HEIGHT_ATTRIBUTE);
float rotation = staticObjNode->GetAttributeValueF(ROTATION_ATTRIBUTE) inRadians;
GameObject* staticObj = PrefabLoader::InstantiateGameObjectFromPrefab(FRAMEWORK->GetFileSystemUtils()->GetDevicePrefabsResourcesPath() + prefab + PREFAB_EXTENSION, ENGINE->GetSceneGraph3D());
idsFromXml[objXmlId] = staticObj->GetId();
// Add the object to the grid
SINGLETONS->GetGridManager()->placeStaticObjectOnGrid(staticObj->GetId(), westBound, southBound, objWidth, objHeight);
staticObj->GetTransform()->Translate(yPosition, YAXIS);
staticObj->GetTransform()->SetOrientation(rotation, YAXIS);
staticObjNode = staticObjNode->GetNextSiblingByNodeName(STATIC_OBJECT_TAG);
}
}