Freitag, 16. Januar 2009

Irrlicht Bug gefunden

Es wurde ein neuer Bug entdeckt, bzw. konnte jetzt wirklich auf Irrlicht zurück geführt werden.

getHeight des TerrainSceneNodes hatte eine Access-Violation wegen einer Speicherbereichsüberschreitung. Vertice-Arrays werden intern überschritten. Mittels folgender Abfrage vor der Prüfung kann das Problem vorläufig behoben werden:

Das Gebäude (bounds) muss innerhalb des Terrains sein, sonst wird keine Kollision geprüft!

aabbox3df terrbx = terrain->getTransformedBoundingBox();
if (bounds.MinEdge.X >= terrbx.MinEdge.X && bounds.MaxEdge.X < terrbx.MaxEdge.X &&
bounds.MinEdge.Z >= terrbx.MinEdge.Z && bounds.MaxEdge.Z < terrbx.MaxEdge.Z)
ret.Y = terrain->getHeight(ret.X, ret.Z);

Keine Kommentare:

Kommentar veröffentlichen