前提:
1.Ogitor附带的DotSceneLoader,其使用rapidxml进行xml解析;
2.OgreMax导出场景,导出的用户自定义以CDATA格式存在于生成的xml中。
实例:
1.编写OgreMax自定义数据{
我编写的自定义类型: 路点
<userDataTypes> <class name="WayPoint"> <data name="ID" type="int"/> <data name="x" type="int"/> <data name="y" type="int"/> <data name="z" type="int"/> </class> </userDataTypes>
在OgreMax->Object Settings->User Data中载入,中选择"WayPoint"类型,它会按照xml中定义的数据显示。
在场景导出后的数据:
<userData> <![CDATA[
<WayPoint>
<ID>1</ID>
<x>45</x>
<y>0</y>
<z>45</z>
</WayPoint>
]]> </userData>
}
2.DotSceneLoader常规解析;
3.调用processUserDataReference{
//在processNode或processEntity最后:
// Process userDataReference (?) pElement = XMLNode->first_node("userData"); if(pElement) processUserDataReference(pElement, pNode);
}
4.CDATA数据的二次解析{
rapidxml::xml_document<> cdata_doc;
cdata_doc.parse<0>(XMLNode->first_node()->value()); rapidxml::xml_node<>* cdata_node = cdata_doc.first_node("WayPoint");
Ogre::String strID = cdata_node ->first_node("ID")->value();
......
}