本文整理汇总了C++中XmlNode::GetNextSiblingByNodeName方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlNode::GetNextSiblingByNodeName方法的具体用法?C++ XmlNode::GetNextSiblingByNodeName怎么用?C++ XmlNode::GetNextSiblingByNodeName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlNode
的用法示例。
在下文中一共展示了XmlNode::GetNextSiblingByNodeName方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadLinkDataFromXml
void LevelLoader::loadLinkDataFromXml (XmlNode* linkBaseNode) {
XmlNode* triggerLinkNode = linkBaseNode->GetFirstChildByNodeName(TRIGGER_LINK_TAG);
while (triggerLinkNode != nullptr) {
int triggerXmlId = triggerLinkNode->GetAttributeValueI(ID_ATTRIBUTE);
ObjectIdType triggerId = idsFromXml[triggerXmlId];
GameObject* triggerObj = ENGINE->GetSceneGraph3D()->GetGameObjectById(triggerId);
ASSERT(triggerObj != nullptr, "Trigger object with id %d exists in level", triggerId);
if (triggerObj != nullptr) {
Triggerable* triggerComp = triggerObj->GetComponent<Triggerable>();
ASSERT((triggerComp != nullptr), "Object with id %d has Triggerable component", triggerId);
if (triggerComp != nullptr) {
XmlNode* switchNode = triggerLinkNode->GetFirstChildByNodeName(SWITCH_TAG);
while (switchNode != nullptr) {
int switchXmlId = switchNode->GetAttributeValueI(ID_ATTRIBUTE);
ObjectIdType switchId = idsFromXml[switchXmlId];
triggerComp->SubscribeToSwitchObject(switchId);
switchNode = switchNode->GetNextSiblingByNodeName(SWITCH_TAG);
}
}
}
triggerLinkNode = triggerLinkNode->GetNextSiblingByNodeName(TRIGGER_LINK_TAG);
}
}
示例2: 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
}
示例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: loadFromDisk
void Bundle::loadFromDisk() {
std::ifstream file;
GetBundleFileHandleForReading(this->bundleName, file);
if (file.good()) {
XmlParser* parser = new XmlParser();
parser->ParseXmlFile(file);
XmlTree* tree = parser->GetXmlTree();
VERIFY(tree != nullptr, "Got xml tree for bundle data in bundle %s", this->bundleName.c_str());
XmlNode* rootNode = tree->GetRootNode();
VERIFY(rootNode != nullptr, "Got root node for bundle data in bundle %s", this->bundleName.c_str());
VERIFY(rootNode->GetName() == BUNDLE_TAG, "Got bundle node for bundle data in bundle %s", this->bundleName.c_str());
XmlNode* dataNode = rootNode->GetFirstChildByNodeName(DATA_TAG);
while(dataNode != nullptr) {
std::string key = dataNode->GetAttributeValueS(KEY_ATTRIBUTE);
std::string value = dataNode->GetAttributeValueS(VALUE_ATTRIBUTE);
this->PutString(key, value);
//
dataNode = dataNode->GetNextSiblingByNodeName(DATA_TAG);
}
delete parser;
}
}
示例5: loadParentConnectionsFromXml
void LevelLoader::loadParentConnectionsFromXml(XmlNode* linkBaseNode) {
XmlNode* parentNode = linkBaseNode->GetFirstChildByNodeName(PARENT_LINK_TAG);
while (parentNode != nullptr) {
int parentXmlId = parentNode->GetAttributeValueI(ID_ATTRIBUTE);
GameObject* parentObj = ENGINE->GetSceneGraph3D()->GetGameObjectById(idsFromXml[parentXmlId]);
if (parentObj != nullptr) {
XmlNode* childNode = parentNode->GetFirstChildByNodeName(CHILD_TAG);
while (childNode != nullptr) {
int childXmlId = childNode->GetAttributeValueI(ID_ATTRIBUTE);
parentObj->AddChild_maintainTransform(idsFromXml[childXmlId]);
childNode = childNode->GetNextSiblingByNodeName(CHILD_TAG);
}
}
parentNode = parentNode->GetNextSiblingByNodeName(PARENT_LINK_TAG);
}
}
示例6: loadEndConditionsFromXml
void LevelLoader::loadEndConditionsFromXml(XmlNode* linkBaseNode) {
XmlNode* winConditionNode = linkBaseNode->GetFirstChildByNodeName(WIN_CONDITION_TAG);
//ASSERT(winConditionNode != nullptr, "Level has a win condition");
while (winConditionNode != nullptr) {
int switchXmlId = winConditionNode->GetAttributeValueI(ID_ATTRIBUTE);
ObjectIdType switchId = idsFromXml[switchXmlId];
SINGLETONS->GetLevelManager()->AddWinCondition(switchId);
winConditionNode = winConditionNode->GetNextSiblingByNodeName(WIN_CONDITION_TAG);
}
XmlNode* loseConditionNode = linkBaseNode->GetFirstChildByNodeName(LOSE_CONDITION_TAG);
while (loseConditionNode != nullptr) {
int switchXmlId = loseConditionNode->GetAttributeValueI(ID_ATTRIBUTE);
ObjectIdType switchId = idsFromXml[switchXmlId];
SINGLETONS->GetLevelManager()->AddLoseCondition(switchId);
loseConditionNode = loseConditionNode->GetNextSiblingByNodeName(LOSE_CONDITION_TAG);
}
// Generate the default lose condition
GameObject* defaultLose = PrefabLoader::InstantiateGameObjectFromPrefab(FRAMEWORK->GetFileSystemUtils()->GetDevicePrefabsResourcesPath() + DEFAULT_LOSE_CONDITION + PREFAB_EXTENSION, ENGINE->GetSceneGraph3D());
SINGLETONS->GetLevelManager()->AddLoseCondition(defaultLose->GetId());
}
示例7: 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);
}
}