Ich erstelle ein Kollisionssystem für ein Spiel und habe eine Reihe von Bounding Volume-Klassen (AABB, OBB, 18DOP usw.) und sie sind ein Kind von "GameObjectElement" (abstrakte Klasse) . Die Idee jedes Spielobjekts kann einen Vektor von GameObjectElements enthalten.Konvertiere Eltern zurück zu Kind ohne Casting
Das Problem ist, wenn ich einen AABB erstellen und es an ein GameObject anfügen, wird jetzt ein GameObjectElement. Um jedoch nach einer Kollision zu suchen, brauche ich eine AABB und kein GameObjectElement.
Mein erster Instinkt war Gießen, aber während der Universität verachtete mein Dozent dies. Ich habe mich mit Polymorphismus und Upcasting und Downcasting beschäftigt, kann aber keine Lösung zusammensetzen (obwohl ich denke, dass ich alle Teile zum Puzzle habe).
Wenn jemand einen Weg vorschlagen kann, um dieses Problem zu beheben, würde es sehr geschätzt werden.
Danke
Randbemerkung: Wenn Ihr Vektor 'GameObjectElement' Typen enthält, werden Sie möglicherweise Objekt Slicing Probleme laufen in. Wenn es Zeiger auf "GameObjectElement" -Typen enthält, kann die Leistung aufgrund von konstanten Cache-Fehlern schlecht sein, wenn die Objekte nicht in einer Cache-freundlichen Konfiguration im Speicher abgelegt werden. – RyanP