本文整理汇总了C++中XMLNode::GetChild方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLNode::GetChild方法的具体用法?C++ XMLNode::GetChild怎么用?C++ XMLNode::GetChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLNode
的用法示例。
在下文中一共展示了XMLNode::GetChild方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadFromXMLNode
void Firearm::LoadFromXMLNode( XMLNode& reader )
{
CGI_Weapon::LoadFromXMLNode( reader );
m_PrimaryCaliber = GetCaliberFromName( reader.GetChild( "Caliber" ).GetTextContent().c_str() );
// reader.GetChildElementTextContent( "FireInterval", m_fFireInterval );
reader.GetChildElementTextContent( "StandardMagazineCapacity", m_StandardMagazineCapacity );
reader.GetChildElementTextContent( "Grouping", m_fGrouping ); // grouping in 10[m]
// reader.GetChildElementTextContent( "MuzzleSpeedFactor", m_fMuzzleSpeedFactor );
// reader.GetChildElementTextContent( "LocalRecoilForce", m_vLocalRecoilForce );
reader.GetChildElementTextContent( "LocalHammerPivot", m_vLocalHammerPivot );
vector<XMLNode> mags = reader.GetChild( "CompliantMagazines" ).GetImmediateChildren( "Magazine" );
m_ComplientMagazineNames.resize( mags.size() );
for( size_t i=0; i<mags.size(); i++ )
m_ComplientMagazineNames[i] = mags[i].GetTextContent();
/* string fire_sound_name;
reader.GetChildElementTextContent( "FireSound", fire_sound_name );
m_FireSound.SetResourceName( fire_sound_name );
reader.GetChildElementTextContent( "NumBursts", m_iNumBursts );
// reader.GetChildElementTextContent( "fBurstInterval;", m_fBurstInterval );
reader.GetChildElementTextContent( "MuzzleEndLocalPos", m_MuzzleEndLocalPose.vPosition );
*/
}
示例2: GetCacheConfig
void ConfigAdapter::GetCacheConfig(XMLNode *cache)
{
if (cache != NULL)
{
FASSERT(cache->ChildExists("server") == true, "no tcp port available for cache configuration");
FASSERT(cache->ChildExists("expire") == true, "no expiration time available for cache configuration");
m_conf->SetCacheExpire(cache->GetChild("expire")->GetData());
int srvnbr = cache->GetChildrenCount("server");
XMLNode *srvnode;
const char *ip, *port, *expire;
for (int i = 0; i < srvnbr; i++)
{
srvnode = cache->GetChild("server", i);
ip = port = expire = NULL;
if (srvnode->ChildExists("ip"))
{
ip = srvnode->GetChild("ip")->GetData();
}
if (srvnode->ChildExists("port"))
{
port = srvnode->GetChild("port")->GetData();
}
m_conf->AddMemcacheServer(ip, port);
}
}
}
示例3: RenderObject
Gauge::Gauge(XMLNode gaugeNode) : RenderObject()
{
m_Font = globals->m_FontManager->LoadDefaultFont();
double x, y; // temp variables
double scale = globals->m_PrefManager->GetPrefD("DefaultGaugeScale");
double zoom = globals->m_PrefManager->GetPrefD("Zoom");
// Set the scale
if (gaugeNode.HasChild("Scale"))
{
gaugeNode.GetChild("Scale").GetTextAsCoord(x, y);
SetScale(x * zoom * scale, y * zoom * scale);
}
else
{
SetScale(zoom * scale, zoom * scale);
}
// Set the position
if (gaugeNode.HasChild("Position"))
{
gaugeNode.GetChild("Position").GetTextAsCoord(x, y);
SetPosition(x * zoom, y * zoom);
}
else
{
SetPosition(0.0, 0.0);
}
// Set the size
if (gaugeNode.HasChild("Size"))
{
gaugeNode.GetChild("Size").GetTextAsCoord(x, y);
SetSize(x, y);
}
else
{
SetSize(0.0, 0.0);
}
// Set the opaque
if (gaugeNode.HasChild("Opaque")) {
SetOpaque(gaugeNode.GetChild("Opaque").GetTextAsBool());
}
else
{
SetOpaque(true);
}
}
示例4: LoadFromXMLNode
void CRotatableTurret::LoadFromXMLNode( XMLNode& reader )
{
GameItem::LoadFromXMLNode( reader );
string ammo_name, ammo_quantity;
reader.GetChildElementTextContent( "Weapon", m_WeaponName );
vector<XMLNode> vecAmmo = reader.GetImmediateChildren( "Ammunition" );
// m_vecpAmmunition.resize( vecAmmo.size() );
m_vecAmmunition.resize( vecAmmo.size() );
for( size_t i=0; i<vecAmmo.size(); i++ )
{
// name
m_vecAmmunition[i].m_AmmunitionName = vecAmmo[i].GetTextContent();
// quantity
ammo_quantity = vecAmmo[i].GetAttributeText( "quantity" );
if( ammo_quantity == "" )
ammo_quantity = "infinite";
if( ammo_quantity == "infinite" )
{
// TODO: set infinite
ammo_quantity = "100000000";
}
m_vecAmmunition[i].m_InitQuantity = to_int(ammo_quantity);
// m_vecpAmmunition[i] = GetItemDatabaseManager().GetItem<CGI_Ammunition>( ammo_name, to_int(ammo_quantity) );
}
/*
vector<XMLNode> vecAmmoLoading = reader.GetChildElementTextContent( "AmmunitionLoading/Name", ammo_name );
const size_t num_loadings = vecAmmoLoading.size();
m_vecpAmmunitionLoading.reserve( 8 );
for( size_t i=0; i<num_loadings; i++ )
{
ammo_name = vecAmmoLoading[i].GetTextContent();
num_loads = vecAmmoLoading[i].GetAttributeText();
shared_ptr<CGI_Ammunition> pAmmunition = get_ammo( ammo_name );
for( int j=0; j<num_loads; j++ )
m_vecpAmmunitionLoading.push_back( pAmmunition );
}
*/
amorphous::LoadFromXMLNode( reader.GetChild( "Mount/LocalPose" ), m_MountLocalPose );
amorphous::LoadFromXMLNode( reader.GetChild( "Gun/LocalPose" ), m_GunLocalPose );
m_MountMeshTransform = m_MeshTransform * m_MountLocalPose.GetInverseROT();
m_GunMeshTransform = m_MeshTransform * m_GunLocalPose.GetInverseROT();
}
示例5: GetNodeByPath
//----------------------------------------------------------------------------
XMLNode XMLData::GetNodeByPath(const std::string &path)
{
char name[256];
const char *pcur = path.c_str();
XMLNode node = GetRootNode();
while (pcur!=0 && pcur!=0)
{
const char *pdot = strchr(pcur, '.');
if (pdot)
{
size_t len = pdot - pcur;
memcpy(name, pcur, len);
name[len] = 0;
pcur = pdot + 1;
}
else
{
strcpy(name, pcur);
pcur = 0;
}
node = node.GetChild(name);
if (node.IsNull())
return node;
}
return node;
}
示例6: HandleError
MutableConfig *ConfigAdapter::Create(XMLParser *xp)
{
if (xp->Parse() != true)
HandleError(xp->GetError());
m_conf = new MutableConfig();
XMLNode *curnode = xp->GetRootNode();
CheckRoot(curnode);
GetEngineConfig(curnode->GetChild("engine"));
GetDataSourceConfig(curnode->GetChild("datasource"));
GetCacheConfig(curnode->GetChild("cache"));
GetDataMapConfig(curnode->GetChild("datamap"));
return (m_conf);
}
示例7: InitFromXMLNode
void Gauge::InitFromXMLNode(XMLNode gaugeNode)
{
Check(gaugeNode.IsValid() && gaugeNode.GetName() == "Gauge");
double scale = globals->m_PrefManager->GetPrefD("DefaultGaugeScale");
double zoom = globals->m_PrefManager->GetPrefD("Zoom");
double x, y; // temp variables
// Set the units per pixel
if (gaugeNode.HasChild("UnitsPerPixel"))
{
SetUnitsPerPixel(gaugeNode.GetChild("UnitsPerPixel").GetTextAsDouble());
}
else
{
SetUnitsPerPixel(globals->m_PrefManager->GetPrefD("UnitsPerPixel"));
}
// Set the position
if (gaugeNode.HasChild("Position"))
{
gaugeNode.GetChild("Position").GetTextAsCoord(x, y);
SetPosition(x * zoom, y * zoom);
}
else
{
SetPosition(0.0, 0.0);
}
// Set the scale
if (gaugeNode.HasChild("Scale")) {
gaugeNode.GetChild("Scale").GetTextAsCoord(x, y);
SetScale(x * zoom * scale, y * zoom * scale);
}
else
{
SetScale(zoom * scale, zoom * scale);
}
// Set the gauge outline
if (gaugeNode.HasChild("Outline"))
{
SetGaugeOutline(gaugeNode.GetChild("Outline").GetTextAsBool());
}
CustomXMLInit(gaugeNode);
}
示例8: ResolveSubEntities
void ConfigAdapter::ResolveSubEntities(MutableMapInterface **maps, XMLNode *datamap)
{
int entitymapnbr = datamap->GetChildrenCount("entitymap");
for (int i = 0; i < entitymapnbr; i++)
{
XMLNode *entitymap = datamap->GetChild("entitymap", i);
int subentitynbr = entitymap->GetChildrenCount("subentity");
for (int j = 0; j < subentitynbr; j++)
{
CreateSubEntity(maps, i, entitymap->GetChild("subentity", j));
}
}
}
示例9: if
Gmeter::Gmeter(XMLNode gaugeNode) : MarkedDial(gaugeNode)
{
m_minValue = 0.0;
m_maxValue = 0.0;
m_PhysicalSize.x = 44.0;
m_PhysicalSize.y = 50.0;
// Set the gauge label
if (gaugeNode.HasChild("Text")) {
SetLabel(gaugeNode.GetChild("Text").GetText());
}
else
{
SetLabel("");
}
// Set the yellow, red and absolute limits
if (gaugeNode.HasChild("Limit")) {
double maxAbsolute = 0.0, minYellow = 0.0, minRed = 0.0; // temp variables
XMLNode::NodeList nodeList = gaugeNode.GetChildList("Limit");
XMLNode::NodeList::iterator iter;
for (iter = nodeList.begin(); iter != nodeList.end(); ++iter)
{
string color = (*iter).GetProperty("color");
if (color == "yellow")
{
minYellow = (*iter).GetTextAsDouble();
}
else if (color == "red")
{
minRed = (*iter).GetTextAsDouble();
}
else if (color == "")
{
maxAbsolute = (*iter).GetTextAsDouble();
}
}
SetMinMax(-1 * fabs(maxAbsolute), fabs(maxAbsolute));
SetColourRanges(fabs(minYellow), fabs(minRed));
}
else
{
SetMinMax(-8.0, 8.0);
SetColourRanges(2.0, 4.0);
}
}
示例10: if
EngineDial::EngineDial(XMLNode gaugeNode) : GenericDial(gaugeNode)
{
m_PhysicalSize.x = 42.0;
m_PhysicalSize.y = 79.0;
// Set the gauge label
if (gaugeNode.HasChild("Text")) {
SetLabel(gaugeNode.GetChild("Text").GetText());
}
else
{
SetLabel("");
}
// Set the yellow and red limits
if (gaugeNode.HasChild("Limit")) {
double minYellow = 0.0, minRed = 0.0; // temp variables
XMLNode::NodeList nodeList = gaugeNode.GetChildList("Limit");
XMLNode::NodeList::iterator iter;
for (iter = nodeList.begin(); iter != nodeList.end(); ++iter)
{
string color = (*iter).GetProperty("color");
if (color == "yellow")
{
minYellow = (*iter).GetTextAsDouble();
}
else if (color == "red")
{
minRed = (*iter).GetTextAsDouble();
}
}
SetColourRanges(minYellow, minRed);
}
else
{
SetColourRanges(0.0, 0.0);
}
}
示例11: InitFromXMLNode
void GaugePanel::InitFromXMLNode(XMLNode gaugeNode)
{
Check(gaugeNode.IsValid() && gaugeNode.GetName() == "Panel");
// Create gauges as described by the XML file
XMLNode::NodeList nodeList = gaugeNode.GetChildList("Gauge");
XMLNode::NodeList::iterator iter;
for (iter = nodeList.begin(); iter != nodeList.end(); ++iter)
{
Gauge *pGauge = GaugeFactory::CreateGaugeInstance(*iter);
if (pGauge != NULL) {
pGauge->SetParentRenderObject(this);
AddGauge(pGauge);
}
}
double scale = globals->m_PrefManager->GetPrefD("DefaultPanelScale");
double zoom = globals->m_PrefManager->GetPrefD("Zoom");
double x, y; // temp variables
// Set the units per pixel
if (gaugeNode.HasChild("UnitsPerPixel"))
{
SetUnitsPerPixel(gaugeNode.GetChild("UnitsPerPixel").GetTextAsDouble());
}
else
{
SetUnitsPerPixel(globals->m_PrefManager->GetPrefD("UnitsPerPixel"));
}
// Set the scale
if (gaugeNode.HasChild("Scale"))
{
gaugeNode.GetChild("Scale").GetTextAsCoord(x, y);
SetScale(x * zoom * scale, y * zoom * scale);
}
else
{
SetScale(zoom * scale, zoom * scale);
}
// Set the position
if (gaugeNode.HasChild("Position"))
{
gaugeNode.GetChild("Position").GetTextAsCoord(x, y);
SetPosition(x * zoom, y * zoom);
}
else
{
SetPosition(0.0, 0.0);
}
// Set the size
if (gaugeNode.HasChild("Size"))
{
gaugeNode.GetChild("Size").GetTextAsCoord(x, y);
SetSize(x, y);
}
else
{
SetSize(0.0, 0.0);
}
// Set the gauge outline
if (gaugeNode.HasChild("Outline"))
{
SetPanelOutline(gaugeNode.GetChild("Outline").GetTextAsBool());
}
}
示例12: LoadFromXMLNode
void CGI_Aircraft::LoadFromXMLNode( XMLNode& reader )
{
GameItem::LoadFromXMLNode( reader );
reader.GetChildElementTextContent( "Armor", m_fArmor );
reader.GetChildElementTextContent( "RCS", m_fRCS );
reader.GetChildElementTextContent( "Ceiling", m_fCeiling );
reader.GetChildElementTextContent( "CockpitLocalPos", m_CockpitLocalPose.vPosition );
reader.GetChildElementTextContent( "ThirdPersonView/CameraPosition", m_vThirdPersonViewOffset );
// reader.GetChildElementTextContent( m_vecNozzleFlameParams, );
XMLNode accels_reader = reader.GetChild( "Accel" );
accels_reader.GetChildElementTextContent( "Default", m_fAccel );
accels_reader.GetChildElementTextContent( "Boost", m_fBoostAccel );
accels_reader.GetChildElementTextContent( "Brake", m_fBrakeAccel );
// reader.m_PitchRange reader.m_RollRange;
reader.GetChildElementTextContent( "MaxPitchAccel", m_fMaxPitchAccel );
reader.GetChildElementTextContent( "MaxRollAccel", m_fMaxRollAccel );
reader.GetChildElementTextContent( "MaxYawAccel", m_fMaxYawAccel );
reader.GetChildElementTextContent( "GunMuzzleEndPos", m_vGunMuzzleEndLocalPos );
std::vector<XMLNode> payloads = reader.GetImmediateChildren( "AmmoPayload" );
const size_t num_payload_info = payloads.size();
m_vecSupportedAmmo.resize( num_payload_info );
for( size_t i = 0; i<num_payload_info; i++ )
{
m_vecSupportedAmmo[i].LoadFromXMLNode( payloads[i] );
}
XMLNode components_reader = reader.GetChild( "Components" );
std::vector<XMLNode> components = components_reader.GetImmediateChildren();
// std::vector<XMLNode> components = reader.GetImmediateChildren( "Components" );
for( size_t i = 0; i<components.size(); i++ )
{
XMLNode& component_reader = components[i];
shared_ptr<MeshBoneController_AircraftBase> pComponent;
if( component_reader.GetName() == "Flap" )
{
pComponent = shared_ptr<MeshBoneController_AircraftBase>( new MeshBoneController_Flap() );
}
else if( component_reader.GetName() == "VFlap" )
{
pComponent = shared_ptr<MeshBoneController_AircraftBase>( new MeshBoneController_VFlap() );
}
else if( component_reader.GetName() == "Rotor" )
{
pComponent = shared_ptr<MeshBoneController_AircraftBase>( new MeshBoneController_Rotor() );
}
else if( component_reader.GetName() == "GearUnit" )
{
// store to the gear unit array to open/close the gear box(es)
shared_ptr<MeshBoneController_GearUnit> pGearUnit;
pGearUnit = shared_ptr<MeshBoneController_GearUnit>( new MeshBoneController_GearUnit() );
m_vecpGear.push_back( pGearUnit );
pComponent = pGearUnit;
}
if( pComponent )
{
pComponent->LoadFromXMLNode( component_reader );
m_vecpMeshController.push_back( pComponent );
}
}
}
示例13: Initlize
//----------------------------------------------------------------------------
bool FontBitmapImpl::Initlize (int fontWidth, int fontHeight,
const char *fontFilename, CharCodingType codingType, unsigned int fontExtStyle)
{
Font::Initlize(fontWidth, fontHeight, fontFilename, codingType, fontExtStyle);
mFontFilename = fontFilename;
if (CCT_UTF8 == codingType)
{
mCharCodingObj = new0 CharCodingUTF8();
}
else if (CCT_GBK == codingType)
{
mCharCodingObj = new0 CharCodingGBK();
}
mGlyphMap = this;
std::string outPath;
std::string outBaseFilename;
StringHelp::SplitFilename(fontFilename, outPath, outBaseFilename);
int bufferSize = 0;
char *buffer = 0;
if (PX2_RM.LoadBuffer(fontFilename, bufferSize, buffer))
{
XMLData data;
if (data.LoadBuffer(buffer, bufferSize))
{
float imageWidth = 0.0f;
float imageHeight = 0.0f;
XMLNode rootNode = data.GetRootNode();
XMLNode child = rootNode.IterateChild();
while (!child.IsNull())
{
const std::string &nodeName = child.GetName();
if ("image" == nodeName)
{
const char *text = child.GetText();
std::string imagePath = outPath + text;
mFontTex = DynamicCast<Texture2D>(PX2_RM.BlockLoad(imagePath));
if (mFontTex)
{
imageWidth = (float)mFontTex->GetWidth();
imageHeight = (float)mFontTex->GetHeight();
}
}
else if ("symbol" == nodeName)
{
std::string ch = child.GetChild("char").GetText();
int x = StringHelp::StringToInt(child.GetChild("x").GetText());
int y = StringHelp::StringToInt(child.GetChild("y").GetText());
int width = StringHelp::StringToInt(child.GetChild("width").GetText());
int height = StringHelp::StringToInt(child.GetChild("height").GetText());
unsigned int unicode = mCharCodingObj->ToUnicode((const unsigned char*)ch.c_str());
BitmapFontGlyph glyph;
glyph.X = x;
glyph.Y = y;
glyph.numWidth = width;
glyph.numHeight = height;
float u0 = (float)x/imageWidth;
float v0 = 1.0f-(float)(y+height)/imageHeight;
float u1 = (x+width)/imageWidth;
float v1 = v0 + (float)height/imageHeight;
glyph.RectUV = Rectf(u0, v0, u1, v1);
mMapGlyph[unicode] = glyph;
}
child = rootNode.IterateChild(child);
}
}
}
return true;
}
示例14: Load
//----------------------------------------------------------------------------
bool Project::Load(const std::string &filename)
{
std::string name;
int width = 0;
int height = 0;
std::string sceneFilename;
std::string uiFilename;
std::string languageFilename;
char *buffer = 0;
int bufferSize = 0;
if (PX2_RM.LoadBuffer(filename, bufferSize, buffer))
{
XMLData data;
if (data.LoadBuffer(buffer, bufferSize))
{
XMLNode rootNode = data.GetRootNode();
// general
XMLNode generalNode = rootNode.GetChild("general");
if (!generalNode.IsNull())
{
name = generalNode.AttributeToString("name");
SetScreenOrientation(_FromSOStr(generalNode.AttributeToString("screenorientation")));
width = generalNode.AttributeToInt("width");
height = generalNode.AttributeToInt("height");
std::string colorStr = generalNode.AttributeToString("backcolor");
StringTokenizer stk(colorStr, ",");
Float4 color = Float4::MakeColor(
StringHelp::StringToInt(stk[0]),
StringHelp::StringToInt(stk[1]),
StringHelp::StringToInt(stk[2]),
StringHelp::StringToInt(stk[3]));
std::string projcolorStr = generalNode.AttributeToString("projcolor");
StringTokenizer stkprojcolor(projcolorStr, ",");
Float4 projcolor = Float4::MakeColor(
StringHelp::StringToInt(stkprojcolor[0]),
StringHelp::StringToInt(stkprojcolor[1]),
StringHelp::StringToInt(stkprojcolor[2]),
StringHelp::StringToInt(stkprojcolor[3]));
Sizef size = Sizef((float)width, (float)height);
SetName(name);
SetSize(size);
mViewRect = Rectf(0.0f, 0.0f, size.Width, size.Height);
SetBackgroundColor(color);
SetProjBackgroundColor(projcolor);
}
// scene
XMLNode sceneNode = rootNode.GetChild("scene");
if (!sceneNode.IsNull())
{
sceneFilename = sceneNode.AttributeToString("filename");
SetSceneFilename(sceneFilename);
}
XMLNode renderNode = rootNode.GetChild("render_setting");
if (!renderNode.IsNull())
{
}
// language
XMLNode languageNode = rootNode.GetChild("language");
// publish
XMLNode publishNode = rootNode.GetChild("publish");
// setting
XMLNode settingNode = rootNode.GetChild("setting");
if (!settingNode.IsNull())
{
if (settingNode.HasAttribute("uicamerapercent"))
mEdit_UICameraPercent = settingNode.AttributeToFloat("uicamerapercent");
}
// split file names
std::string outPath;
std::string outBaseName;
std::string outExt;
StringHelp::SplitFullFilename(filename, outPath, outBaseName, outExt);
// ui
mUIFilename = outPath + outBaseName + "_ui.px2obj";
}
}
else
{
return false;
}
return true;
}