[C++] Klassen-Properties für Transformationen
Verfasst: 02.05.2013, 17:47
Hallo von C# her kennt man ja Builtin-Properties für Klassen. In meinem Fall geht es allerdings um C++ und ich brauche hier Properties für folgenden Fall:
Ich habe eine Szene, in der beliebige Spiel-Objekte vorhanden sein können (Baumstruktur). Spiel-Objekte können ihrerseits wieder aus mehreren anderen Spiel-Objekten zusammengesetzt sein. Möchte ich nun ein Spiel-Objekt transformieren, so sollen die Kind-Objekte entsprechend mit transformiert werden. Also was ganz Gewöhnliches.
Die Spielobjekte haben Member für Position, Rotation und Skalierung. Mein Ziel war nun, dass man direkt diese Membervariablen ändern kann und die Transformation automatisch an die Kind-Objekte weitergegeben wird. In C# könnte man das wie gesagt als Property implementieren und im Setter einfach für alle Kind-Elemente ebenfalls deren Properties ändern. In C++ geht das leider nicht so einfach.
Bislang löse ich das Problem, indem ich Methoden wie setPosition, move, setRotation, rotate, setScale und scale anbiete. Allerdings schränkt das wieder ein, da die Position ein Vektor ist und z.B. Multiplikationen wieder durch zusätzliche Methoden wie mulPosition oder Ähnliches realisiert werden muss.
Mir schwebt sowas vor:
Meine Idee wäre jetzt eine Hilfsklasse, die z.B. einen Vektor kapselt und irgendwelche Events für Änderungen enthält. Aber das kann für so einen Fall ja auch keine Lösung sein.
Wie löst ihr sowas bzw. habt ihr da ein paar Vorschläge zu?
Ich habe eine Szene, in der beliebige Spiel-Objekte vorhanden sein können (Baumstruktur). Spiel-Objekte können ihrerseits wieder aus mehreren anderen Spiel-Objekten zusammengesetzt sein. Möchte ich nun ein Spiel-Objekt transformieren, so sollen die Kind-Objekte entsprechend mit transformiert werden. Also was ganz Gewöhnliches.
Die Spielobjekte haben Member für Position, Rotation und Skalierung. Mein Ziel war nun, dass man direkt diese Membervariablen ändern kann und die Transformation automatisch an die Kind-Objekte weitergegeben wird. In C# könnte man das wie gesagt als Property implementieren und im Setter einfach für alle Kind-Elemente ebenfalls deren Properties ändern. In C++ geht das leider nicht so einfach.
Bislang löse ich das Problem, indem ich Methoden wie setPosition, move, setRotation, rotate, setScale und scale anbiete. Allerdings schränkt das wieder ein, da die Position ein Vektor ist und z.B. Multiplikationen wieder durch zusätzliche Methoden wie mulPosition oder Ähnliches realisiert werden muss.
Mir schwebt sowas vor:
Code: Alles auswählen
myGameObject.Position *= myVector;
myGameObject.Scale.X = 0.5f;
...
Wie löst ihr sowas bzw. habt ihr da ein paar Vorschläge zu?