Kategorie: Objekte
/ Darstellung
Ab Engineversion: 1.0 OC
SetObjDrawTransform
Beschreibung
Transformiert die Grafik des aufrufenden Objektes.
Syntax
bool SetObjDrawTransform(int width, int xskew, int xadjust, int yskew, int height, int yadjust, int overlay_id);
Parameter
- width:
- Breite der Grafik. 1000 ist die Standardbreite, negative Angaben bedeuten eine horizontale Spiegelung der Grafik. Die Grafik wird immer mittig (zentriert) dargestellt.
- xskew:
- Horizontale schräge Streckung der Grafik: 0 bedeutet keine Streckung. 1000 bedeutet eine Verschiebung der horizontalen Kante um 45° nach links (oben nach links, unten nach rechts). Negative Werte bedeuten eine Verschiebung nach rechts.
- xadjust:
- Horizontale Verschiebung der Grafik. Bei 1000 wird die Grafik einen Pixel nach rechts verschoben, bei negativen Angaben wird die Grafik nach links verschoben. Die Grafik um halbe Pixel zu verschieben, ist auch möglich.
- yskew:
- Vertikale schräge Streckung der Grafik: 0 bedeutet keine Streckung. 1000 bedeutet eine Verschiebung der vertikalen Kante um 45° nach unten (links hoch, rechts runter). Negative Werte bedeuten eine Verschiebung nach oben.
- height:
- Höhe der Grafik. 1000 ist die Standardhöhe, negative Angaben bedeuten eine vertikale Spiegelung der Grafik. Die Grafik wird immer mittig (zentriert) dargestellt.
- yadjust:
- Vertikale Verschiebung der Grafik. Bei 1000 wird die Grafik einen Pixel nach unten verschoben, bei negativen Angaben wird die Grafik nach oben verschoben. Die Grafik um halbe Pixel zu verschieben, ist auch möglich.
- overlay_id:
- ID des Overlays, dessen Transformation angepasst werden soll. Bei 0 (default) wird die Hauptgrafik transformiert.
Anmerkung
Sämtliche Angaben der Parameter werden in Promille (1000 = 100%) getätigt, weil es in Clonk keine Floating Point-Werte gibt.
Beispiele
SetObjDrawTransform(1000,0,0,0,1000,0);
Setzt die Transformation zurück.
global func SetDTRotation (int r, int xoff, int yoff, object obj) { var fsin=Sin(r, 1000), fcos=Cos(r, 1000); // set matrix values obj->SetObjDrawTransform ( +fcos, +fsin, (1000-fcos)*xoff - fsin*yoff, -fsin, +fcos, (1000-fcos)*yoff + fsin*xoff, ); }
Rotiert das Objekt ohne es tatsächlich zu rotieren (Vertices usw. bleiben da wo sie sind).
GetHiRank(0)->SetObjDrawTransform(1000,0,0,0,-1000,0);
Dreht den höchstrangigsten Clonk des ersten Spielers um, so dass er auf dem Kopf steht.
SetObjDrawTransform(500,0,0,0,500,GetDefHeight(GetID())*1000/4);
Verkleinert die Grafik um 50% verschiebt die Unterkante der verkleinerten Grafik an die Unterkante des Objektes: Ein so verkleinerter Baum würde nicht in der Luft schweben (weil Grafik zentriert), sondern seine Wurzel da haben wo sie auch vorher war.