SetObjDrawTransform

Kategorie: Objekte / Darstellung
Ab Engineversion: 4.9.5.0 CE

Beschreibung

Transformiert die Grafik des angegebenen Objektes.

Syntax

bool SetObjDrawTransform (int iWidth, int iXSkew, int iXAdjust, int iYSkew, int iHeight, int iYAdjust, object pObj, int iOverlayID);

Parameter

iWidth:
Breite der Grafik. 1000 ist die Standardbreite, negative Angaben bedeuten eine horizontale Spiegelung der Grafik. Die Grafik wird immer mittig (zentriert) dargestellt.
iXSkew:
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.
iXAdjust:
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.
iYSkew:
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.
iHeight:
Höhe der Grafik. 1000 ist die Standardhöhe, negative Angaben bedeuten eine vertikale Spiegelung der Grafik. Die Grafik wird immer mittig (zentriert) dargestellt.
iYAdjust:
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.
pObj:
Das Objekt dessen Grafik transformiert dargestellt werden soll. 0 bei lokalem Aufruf.
iOverlayID:
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
  SetObjDrawTransform (
    +fcos, +fsin, (1000-fcos)*xoff - fsin*yoff,
    -fsin, +fcos, (1000-fcos)*yoff + fsin*xoff,
    obj
  );
}
Rotiert das Objekt ohne es tatsächlich zu rotieren (Vertices usw. bleiben da wo sie sind).
SetObjDrawTransform(1000,0,0,0,-1000,0,GetHiRank(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.
Clonkonaut, Mai 2008