- Timestamp:
- 06/03/04 15:20:36 (21 years ago)
- File:
-
- 1 edited
-
ps/trunk/source/graphics/ObjectEntry.cpp (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ps/trunk/source/graphics/ObjectEntry.cpp
r364 r381 6 6 #include "UnitManager.h" 7 7 8 // xerces XML stuff 9 #include <xercesc/dom/DOM.hpp> 10 #include <xercesc/parsers/XercesDOMParser.hpp> 11 #include <xercesc/framework/LocalFileInputSource.hpp> 12 #include <xercesc/util/XMLString.hpp> 13 #include <xercesc/util/PlatformUtils.hpp> 14 15 // Gee's custom error handler 16 #include "ps/XercesErrorHandler.h" 8 #include "XML.h" 17 9 18 10 #ifdef _MSC_VER … … 59 51 60 52 // build filename 61 CStr modelfilename("mods \\official\\");53 CStr modelfilename("mods/official/"); 62 54 modelfilename+=m_ModelName; 63 55 … … 68 60 modeldef=CModelDef::Load((const char*) modelfilename); 69 61 } catch (...) { 62 LOG(ERROR, "CObjectEntry::BuildModel(): Model %s failed to load\n", modelfilename.c_str()); 70 63 return false; 71 64 } … … 84 77 if( m_Animations[t].m_FileName.Length() > 0 ) 85 78 { 86 CStr animfilename( "mods \\official\\" );79 CStr animfilename( "mods/official/" ); 87 80 animfilename += m_Animations[t].m_FileName; 88 81 m_Animations[t].m_AnimData = m_Model->BuildAnimation((const char*) animfilename,m_Animations[t].m_Speed); … … 153 146 } 154 147 155 CStr Transcode(const XMLCh* xmltext)156 {157 char* str=XMLString::transcode(xmltext);158 CStr result(str);159 XMLString::release(&str);160 return result;161 }162 163 148 bool CObjectEntry::Load(const char* filename) 164 149 { … … 187 172 CXercesErrorHandler *errorHandler = new CXercesErrorHandler(); 188 173 parser->setErrorHandler(errorHandler); 174 175 CVFSEntityResolver *entityResolver = new CVFSEntityResolver(filename); 176 parser->setEntityResolver(entityResolver); 189 177 190 178 // Push the CLogger to mark it's reading this file. 191 179 192 180 // Get main node 193 XMLCh* xfilename=XMLString::transcode(filename);194 LocalFileInputSource source(xfilename);195 XMLString::release(&xfilename);196 197 // Parse file198 parser->parse(source);199 200 // Check how many errors201 parseOK = parser->getErrorCount() == 0;202 181 CVFSInputSource source; 182 parseOK = source.OpenFile(filename) == 0; 183 if (parseOK) 184 { 185 // Parse file 186 parser->parse(source); 187 188 // Check how many errors 189 parseOK = parser->getErrorCount() == 0; 190 } 203 191 if (parseOK) { 204 192 // parsed successfully - grab our data … … 207 195 208 196 // root_name should be Object 209 CStr root_name = Transcode( element->getNodeName() );197 CStr root_name = XMLTranscode( element->getNodeName() ); 210 198 211 199 // should have at least 3 children - Name, ModelName and TextureName … … 222 210 DOMElement *child_element = (DOMElement*)child; 223 211 224 CStr element_name = Transcode( child_element->getNodeName() );212 CStr element_name = XMLTranscode( child_element->getNodeName() ); 225 213 DOMNode *value_node= child_element->getChildNodes()->item(0); 226 CStr element_value=value_node ? Transcode(value_node->getNodeValue()) : "";214 CStr element_value=value_node ? XMLTranscode(value_node->getNodeValue()) : ""; 227 215 228 216 if (element_name==CStr("Name")) { … … 237 225 for (uint j=0; j<animations->getLength(); ++j) { 238 226 DOMElement *anim_element = (DOMElement*) animations->item(j); 239 CStr element_name = Transcode( anim_element->getNodeName() );227 CStr element_name = XMLTranscode( anim_element->getNodeName() ); 240 228 DOMNamedNodeMap* attributes=anim_element->getAttributes(); 241 229 if (attributes) { … … 243 231 244 232 DOMNode *nameattr=attributes->getNamedItem(nametext); 245 anim.m_AnimName= Transcode(nameattr->getChildNodes()->item(0)->getNodeValue());233 anim.m_AnimName=XMLTranscode(nameattr->getChildNodes()->item(0)->getNodeValue()); 246 234 DOMNode *fileattr=attributes->getNamedItem(filetext); 247 anim.m_FileName= Transcode(fileattr->getChildNodes()->item(0)->getNodeValue());235 anim.m_FileName=XMLTranscode(fileattr->getChildNodes()->item(0)->getNodeValue()); 248 236 249 237 DOMNode *speedattr=attributes->getNamedItem(speedtext); 250 CStr speedstr= Transcode(speedattr->getChildNodes()->item(0)->getNodeValue());238 CStr speedstr=XMLTranscode(speedattr->getChildNodes()->item(0)->getNodeValue()); 251 239 252 240 anim.m_Speed=float(atoi((const char*) speedstr))/100.0f; … … 261 249 for (uint j=0; j<props->getLength(); ++j) { 262 250 DOMElement *prop_element = (DOMElement*) props->item(j); 263 CStr element_name = Transcode( prop_element->getNodeName() );251 CStr element_name = XMLTranscode( prop_element->getNodeName() ); 264 252 DOMNamedNodeMap* attributes=prop_element->getAttributes(); 265 253 if (attributes) { … … 267 255 268 256 DOMNode *nameattr=attributes->getNamedItem(attachpointtext); 269 prop.m_PropPointName= Transcode(nameattr->getChildNodes()->item(0)->getNodeValue());257 prop.m_PropPointName=XMLTranscode(nameattr->getChildNodes()->item(0)->getNodeValue()); 270 258 DOMNode *modelattr=attributes->getNamedItem(modeltext); 271 259 prop.m_ModelName=XMLString::transcode(modelattr->getChildNodes()->item(0)->getNodeValue()); … … 287 275 delete parser; 288 276 delete errorHandler; 277 delete entityResolver; 289 278 } 290 279 XMLPlatformUtils::Terminate(); … … 300 289 // write XML header 301 290 fprintf(fp,"<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>\n\n"); 302 fprintf(fp,"<!DOCTYPE Object SYSTEM \".. \\object.dtd\">\n\n");291 fprintf(fp,"<!DOCTYPE Object SYSTEM \"../object.dtd\">\n\n"); 303 292 304 293 // write the object itself
Note:
See TracChangeset
for help on using the changeset viewer.
