Aktuelle Zeit: 13.05.2025, 21:30

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Umgang mit XML-Datei
BeitragVerfasst: 17.07.2008, 14:08 
Offline

Registriert: 20.03.2007, 20:33
Beiträge: 19
Wohnort: Ahaus
Hi,

folgende Sache: Ich möchte meine Levels in einer XML-Datei speichern. So weit, so gut.
Jetzt würde mich aber interessieren, wie ihr die Datei auslesen würdet bzw. wie ihr ein level in eine solche Datei speichern würdet.

Gehen wir einfach von einem TerrainSceneNode aus, das inklusive all seiner Eigenschaften in einer Datei gespeichert und nacher wieder ausgelesen werden soll.

Eigentlich ist das ja kein Problem, aber der Code wird total ätzend lang beim Auslesen:
Code:
while(xml_reader && xml_reader->read())
{
   switch(xml_reader->getNodeType())
   {       
      case irr::io::EXN_TEXT:
                   break;
      case irr::io::EXN_ELEMENT:
                {
         if(irr::core::stringw("TerrainSceneNode") == xml_reader->getNodeName())
         {
            position = StringToVector3df(xml_reader->getAttributeValue("pos"));
            id = (xml_reader->getAttributeValueAsInt("id");
            // usw.
         }
      break;
      }
   }
}


Da man das ja dann für jeden Typ einzeln machen muss (also if(irr::core::stringw("MeshSceneNode") == xml_reader->getNodeName()), if(irr::core::stringw("AnimatedMeshSceneNode") == xml_reader->getNodeName()) etc. wird der Code enorm lang und imho auch unübersichtlich.

Meie Frage: Wie kann man das vereinfachen/ändern?

Ich bin in der Doku auf irr::io::IAttributes gestoßen - aber habe nicht verstanden, was genau es damit auf sich hat und ob/wie mir das evtl. bei der Lösung meines Problems helfen könnte.

Für hilfreiche Antworten bin ich sehr Dankbar
Grüße
IRRe


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Umgang mit XML-Datei
BeitragVerfasst: 17.07.2008, 16:51 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
SceneNode::serializeAttributes zum speichern und ISceneNode::deserializeAttributes zum laden.
Das macht genau das, was du da selber vorhast ^^
Wenn du irgendwelche selbstgemachten SceneNodes hast, musst du diese beiden Methoden dann natürlich entsprechend implementieren.

Bzw. direkt vom ISceneManager loadScene() und saveScene()

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Umgang mit XML-Datei
BeitragVerfasst: 17.07.2008, 19:32 
Offline

Registriert: 20.03.2007, 20:33
Beiträge: 19
Wohnort: Ahaus
Den Funktionen SerializeAttributes und DeserializeAttributes muss ich ja jeweils ein Objekt der Klasse io::IAttributes übergeben - aber wie erstelle ich ein neues Objekt davon? Mit "new io::IAttributes"? denn die Klasse ist ja Abstrakt...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Umgang mit XML-Datei
BeitragVerfasst: 17.07.2008, 19:46 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
IFileSystem::createEmptyAttributes() erzeugt dir das.

Ansonsten einfach mal im source von loadScene und saveScene gucken.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Umgang mit XML-Datei
BeitragVerfasst: 17.07.2008, 20:01 
Offline

Registriert: 20.03.2007, 20:33
Beiträge: 19
Wohnort: Ahaus
ok, vielen Dank


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de