forked from 0ad/0ad
Fixed support for extra-new actor format. Updated binaries.
This was SVN commit r2050.
This commit is contained in:
parent
c11465cfbf
commit
2073733761
@ -1,272 +1,158 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<actor>
|
||||
<castshadow>true</castshadow>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<name>Base</name>
|
||||
<frequency>100</frequency>
|
||||
<mesh>art/meshes/skeletal/m_dress_a.pmd</mesh>
|
||||
<material>art/materials/player_trans.xml</material>
|
||||
<texture>art/textures/skins/skeletal/plac_rome_e.dds</texture>
|
||||
<animations>
|
||||
<animation>
|
||||
<name>Idle</name>
|
||||
<file>art/animation/biped/dudeidle.psa</file>
|
||||
<speed>200</speed>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>Walk</name>
|
||||
<file>art/animation/biped/dudewalk_swordshield.psa</file>
|
||||
<speed>700</speed>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>Build</name>
|
||||
<file>art/animation/biped/dudebuild.psa</file>
|
||||
<speed>150</speed>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>Chop</name>
|
||||
<file>art/animation/biped/dudechop.psa</file>
|
||||
<speed>150</speed>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>Death</name>
|
||||
<file>art/animation/biped/dudedeath_sword.psa</file>
|
||||
<speed>200</speed>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>Decay</name>
|
||||
<file>art/animation/biped/dudedecay_sword.psa</file>
|
||||
<speed>100</speed>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>Attack</name>
|
||||
<file>art/animation/biped/dudeattack.psa</file>
|
||||
<speed>300</speed>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>Attack1</name>
|
||||
<file>art/animation/biped/dudeattack1.psa</file>
|
||||
<speed>300</speed>
|
||||
</animation>
|
||||
</animations>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<name>Helmet</name>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>helmet</attachpoint>
|
||||
<model>Elite Helmet</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<name>Head</name>
|
||||
<frequency>50</frequency>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>head</attachpoint>
|
||||
<model>Dude Head</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
<frequency>1</frequency>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>l_hand</attachpoint>
|
||||
<model>Axe B</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>l_forearm</attachpoint>
|
||||
<model>Left Glove</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>l_shoulder</attachpoint>
|
||||
<model>Left Shoulder</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>r_hand</attachpoint>
|
||||
<model>Axe A</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>r_forearm</attachpoint>
|
||||
<model>Right Glove</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>r_shoulder</attachpoint>
|
||||
<model>Right Shoulder</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>chest</attachpoint>
|
||||
<model>Breastplate</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>back</attachpoint>
|
||||
<model>Quiver</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>shoulders</attachpoint>
|
||||
<model>Cape</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>l_leg</attachpoint>
|
||||
<model>Left Boot</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>r_leg</attachpoint>
|
||||
<model>Right Boot</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>l_hip</attachpoint>
|
||||
<model>Left Sheath</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop>
|
||||
<attachpoint>r_hip</attachpoint>
|
||||
<model>Right Sheath</model>
|
||||
</prop>
|
||||
</props>
|
||||
</variant>
|
||||
<variant>
|
||||
<name>None</name>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
</actor>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<actor version="1">
|
||||
|
||||
<castshadow/>
|
||||
|
||||
<group>
|
||||
<variant frequency="100" name="Base">
|
||||
<animations>
|
||||
<animation file="biped/dudeidle.psa" name="Idle" speed="200"/>
|
||||
<animation file="biped/dudewalk_swordshield.psa" name="Walk" speed="700"/>
|
||||
<animation file="biped/dudebuild.psa" name="Build" speed="150"/>
|
||||
<animation file="biped/dudechop.psa" name="Chop" speed="150"/>
|
||||
<animation file="biped/dudedeath_sword.psa" name="Death" speed="200"/>
|
||||
<animation file="biped/dudedecay_sword.psa" name="Decay" speed="100"/>
|
||||
<animation file="biped/dudeattack.psa" name="Attack" speed="300"/>
|
||||
<animation file="biped/dudeattack1.psa" name="Attack1" speed="300"/>
|
||||
</animations>
|
||||
<mesh>skeletal/m_dress_a.pmd</mesh>
|
||||
<texture>skeletal/plac_rome_e.dds</texture>
|
||||
</variant>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant name="Helmet">
|
||||
<props>
|
||||
<prop actor="props/temp/plac_helmet_e.xml" attachpoint="helmet"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant frequency="50" name="Head">
|
||||
<props>
|
||||
<prop actor="props/head/dude_head.xml" attachpoint="head"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant frequency="1" name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/weapon/weap_axe_b.xml" attachpoint="l_hand"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/l_glove.xml" attachpoint="l_forearm"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/l_shoulder.xml" attachpoint="l_shoulder"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/weapon/weap_axe_a.xml" attachpoint="r_hand"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/r_glove.xml" attachpoint="r_forearm"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/r_shoulder.xml" attachpoint="r_shoulder"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/breastplate.xml" attachpoint="chest"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/quiver.xml" attachpoint="back"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/cape.xml" attachpoint="shoulders"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/l_boot.xml" attachpoint="l_leg"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/r_boot.xml" attachpoint="r_leg"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/l_sheath.xml" attachpoint="l_hip"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<variant>
|
||||
<props>
|
||||
<prop actor="props/temp/r_sheath.xml" attachpoint="r_hip"/>
|
||||
</props>
|
||||
</variant>
|
||||
<variant name="None"/>
|
||||
</group>
|
||||
|
||||
</actor>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
|
||||
|
||||
<Entity Tag="test_dude" Parent="combat_dude_roman_a">
|
||||
<Actor>test_dude</Actor>
|
||||
<Actor>test_dude.xml</Actor>
|
||||
</Entity>
|
||||
|
||||
|
@ -140,22 +140,24 @@ bool CObjectBase::Load(const char* filename)
|
||||
|
||||
// Define all the elements used in the XML file
|
||||
#define EL(x) int el_##x = XeroFile.getElementID(#x)
|
||||
#define AT(x) int at_##x = XeroFile.getAttributeID(#x)
|
||||
EL(castshadow);
|
||||
EL(material);
|
||||
EL(group);
|
||||
EL(variant);
|
||||
EL(animations);
|
||||
EL(animation);
|
||||
EL(file);
|
||||
EL(name);
|
||||
EL(speed);
|
||||
EL(props);
|
||||
EL(prop);
|
||||
EL(attachpoint);
|
||||
EL(model);
|
||||
EL(frequency);
|
||||
EL(mesh);
|
||||
EL(texture);
|
||||
AT(file);
|
||||
AT(name);
|
||||
AT(speed);
|
||||
AT(attachpoint);
|
||||
AT(actor);
|
||||
AT(frequency);
|
||||
#undef AT
|
||||
#undef EL
|
||||
|
||||
// (This code is rather worryingly verbose...)
|
||||
@ -172,21 +174,25 @@ bool CObjectBase::Load(const char* filename)
|
||||
{
|
||||
m_Variants.back().resize(m_Variants.back().size()+1);
|
||||
|
||||
XERO_ITER_ATTR(variant, attr)
|
||||
{
|
||||
if (attr.Name == at_name)
|
||||
m_Variants.back().back().m_VariantName = attr.Value;
|
||||
|
||||
else if (attr.Name == at_frequency)
|
||||
m_Variants.back().back().m_Frequency = CStr(attr.Value).ToInt();
|
||||
}
|
||||
|
||||
|
||||
XERO_ITER_EL(variant, option)
|
||||
{
|
||||
int option_name = option.getNodeName();
|
||||
|
||||
if (option_name == el_name)
|
||||
m_Variants.back().back().m_VariantName = option.getText();
|
||||
|
||||
else if (option_name == el_frequency)
|
||||
m_Variants.back().back().m_Frequency = CStr(option.getText()).ToInt();
|
||||
|
||||
else if (option_name == el_mesh)
|
||||
if (option_name == el_mesh)
|
||||
m_Variants.back().back().m_ModelFilename = "art/meshes/" + CStr(option.getText());
|
||||
|
||||
else if (option_name == el_texture)
|
||||
m_Variants.back().back().m_TextureFilename = "art/textures/" + CStr(option.getText());
|
||||
m_Variants.back().back().m_TextureFilename = "art/textures/skins/" + CStr(option.getText());
|
||||
|
||||
else if (option_name == el_animations)
|
||||
{
|
||||
@ -194,16 +200,15 @@ bool CObjectBase::Load(const char* filename)
|
||||
{
|
||||
Anim anim;
|
||||
|
||||
XERO_ITER_EL(anim_element, ae)
|
||||
XERO_ITER_ATTR(anim_element, ae)
|
||||
{
|
||||
int ae_name = ae.getNodeName();
|
||||
if (ae_name == el_name)
|
||||
anim.m_AnimName = ae.getText();
|
||||
else if (ae_name == el_file)
|
||||
anim.m_FileName = "art/animation/" + CStr(ae.getText());
|
||||
else if (ae_name == el_speed)
|
||||
if (ae.Name == at_name)
|
||||
anim.m_AnimName = ae.Value;
|
||||
else if (ae.Name == at_file)
|
||||
anim.m_FileName = "art/animation/" + CStr(ae.Value);
|
||||
else if (ae.Name == at_speed)
|
||||
{
|
||||
anim.m_Speed = CStr(ae.getText()).ToInt() / 100.f;
|
||||
anim.m_Speed = CStr(ae.Value).ToInt() / 100.f;
|
||||
if (anim.m_Speed <= 0.0) anim.m_Speed = 1.0f;
|
||||
}
|
||||
else
|
||||
@ -219,13 +224,12 @@ bool CObjectBase::Load(const char* filename)
|
||||
{
|
||||
Prop prop;
|
||||
|
||||
XERO_ITER_EL(prop_element, pe)
|
||||
XERO_ITER_ATTR(prop_element, pe)
|
||||
{
|
||||
int pe_name = pe.getNodeName();
|
||||
if (pe_name == el_attachpoint)
|
||||
prop.m_PropPointName = pe.getText();
|
||||
else if (pe_name == el_model)
|
||||
prop.m_ModelName = pe.getText();
|
||||
if (pe.Name == at_attachpoint)
|
||||
prop.m_PropPointName = pe.Value;
|
||||
else if (pe.Name == at_actor)
|
||||
prop.m_ModelName = pe.Value;
|
||||
else
|
||||
; // unrecognised element
|
||||
}
|
||||
|
@ -124,11 +124,11 @@ bool CObjectEntry::BuildModel()
|
||||
m_Model->AddProp(proppoint,propmodel);
|
||||
if (oe->m_WalkAnim) propmodel->SetAnimation(oe->m_WalkAnim);
|
||||
} else {
|
||||
LOG(ERROR, LOG_CATEGORY, "Failed to build prop model \"%s\" on actor \"%s\"",(const char*) m_Base->m_Name,(const char*) prop.m_ModelName);
|
||||
LOG(ERROR, LOG_CATEGORY, "Failed to build prop model \"%s\" on actor \"%s\"", (const char*)prop.m_ModelName, (const char*)m_Base->m_Name);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
LOG(ERROR, LOG_CATEGORY, "Failed to matching prop point called \"%s\" in model \"%s\"", (const char*)prop.m_PropPointName, modelfilename);
|
||||
LOG(ERROR, LOG_CATEGORY, "Failed to find matching prop point called \"%s\" in model \"%s\" on actor \"%s\"", (const char*)prop.m_PropPointName, modelfilename, (const char*)prop.m_ModelName);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user