So, da bin ich mal wieder :p
Zwar keine Frage über fsanf, aber hat immerhin was mit Dateien zu tun.
(Ich hoffe, ich bin hier im richtig Forum)
Mittlerweile bin ich beim Leveledtor, und der soll die Position der Objekte ja auch irgendwie speichern. Ich abeite mit Irrlicht, also war es naheliegend irrlicht XML-Writer (Reader) zu benutzen. Klappt auch ganz gut, bis zu dem Punkt, wo ich die Position (Skalierung, Rotation...) der Objekte einlesen will. Ich krieg es einfach nicht hin Zahlen einzulesen.
Hier mal mein Code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
void CMap::LoadFromFile(char *filename)
{
/******************************************/
/* Dateistruktur:
- Nodeweise
- Terrainnode:
- Heightmap
- Textur
- Detailmap
- Objektnode:
- Anzahlobjekte
(für jedes Object:)
- Typ
- Modelname
- Materialname
- Position
- Rotation
- Skalierung
- Dateiende */
/******************************************/
iNumObjects = 0;
io::IXMLReader* xml = g_pMGame->device->getFileSystem()->createXMLReader(filename);
while(xml && xml->read())
{
if (core::stringw("Terrain") == xml->getNodeName())
{
heightmap = xml->getAttributeValue(L"hm"); // Heightmap
textur = xml->getAttributeValue(L"tx"); // Textur
detailmap = xml->getAttributeValue(L"dm"); // Detailmap
}
else if (core::stringw("StaticObject") == xml->getNodeName())
{
objects[iNumObjects] = new CStaticWorldObject();
objects[iNumObjects]->model = xml->getAttributeValue(L"model");
objects[iNumObjects]->mate = xml->getAttributeValue(L"material");
objects[iNumObjects]->position.X = xml->getNodeData();
objects[iNumObjects]->position.Y = xml->getAttributeValue(L"positionY");
// [....] restliche Positions, Rotations und Skalierungsdaten einlesen
iNumObjects++;
}
}
if (xml)
xml->drop();
}
|
So, dabei gibt es aber Konvertieerungsprobleme. Die Positionen sind irr::f32, die Daten aus der xml aber const wchar_t*
Ich habs schon mit einem Umweg über char* versucht, das funktioniert auch, wenn man für die Positionen int nimmt. Das will Irrlicht dann aber nicht. (Ich benutze irr::vector3df, und das benutzt halt f32)
Hoffentlich kann mir jemand helfen,
schonmal danke im voraus
mfg DoubleM