2D-Anzeigen mit Scripten programmieren ed
Allgemein ed
Das Koordinaten-System: (x=0)=links, (x=1)=rechts, (y=0)=oben, (y=1)=unten, (z=0)=vorne, (z=1)=hinten
Hiermit können Anzeigen realisiert werden, die unabhängig von der 3d-Welt sind. Sie eignen sich zum Beispiel für Lebenspunkt- und andere Statusanzeigen.
2D-Anzeigen ed
Stellt ein Bild, also ein Stück einer Textur, als ein rein 2-dimensionales Objekt am Bildschirm dar.
- Variablen-Typ Picture
Picture.source (r01) gibt den Ausschnitt aus der Textur an
Picture.tc_inverted (false) rotiert die Textur um 90°
Picture.color.a (White) wird als Transparenz (Sichtbarkeit) benutzt
Text-Anzeigen ed
Stellt einen String als Textelement auf dem Bildschirm dar.
- Variablen-Typ Text
Text.centric (false) richtet den Text mit Text.pos als Mittelpunkt aus
Text.vertical (false) ordnet die Buchstaben übereinander an
Text.color.a wird als Transparenz (Sichtbarkeit) benutzt
Text.size ist die Höhe der Zeichen pro Bildschirm-(Target)-Höhe
Text.font (DefaultFont) ist ein mit LoadFont zu ladender BitMap-Font
3D-Modelle in den Anzeigen ed
Ein 3d-Modell wird auf die 2-dimensionale Bildschirm-Ebene projeziert.
- Variablen-Typ Picture3d
Picture3d.relative (true) gibt an, ob ein [0,1][0,1]-Koordinatensystem oder Bildschirm-Pixel-Angaben benutzt werden sollen
Picture3d.lighting (false) lässt die Modelle von Lichtquellen beleuchten
Picture3d.matrix Transformations-Matrix von Modell- nach Anzeige-Koordinaten
Picture3d.model das eigentliche Modell
Anzeigen-Gruppierungen ed
Fassen mehrere der obigen Elemente zusammen, so dass kollektiv deren Farben und Positionen beeinflusst werden können.
- Variablen-Typ Layer
Layer.pos ist die kollektive Position, die den Elementen hinzuaddiert werden soll
Layer.color (White) ist die farbe, mit der die Farben der Elemente multipliziert werden sollen
Die Variable CurrentLayer legt fest, ob und zu welcher Gruppe neue Elemente beim Erstellen hinzugefügt werden sollen. (siehe Beispiel)
Beispiel ed
Beispiel:
void main()
Layer *group
// eine alles einhuellende Gruppe
grouping group = CreateGrouping( vector(0.2, 0.2, 0.1), // Position
t = 0
White, // keine Einfaerbung
group = new Layer( vector(0.2, 0.2, 0.1), // Position
true ) // die folgenden Anzeigen der Gruppe hinzufügen
// ein Bildchen
picture pic = CreatePicture( vector(0.1, 0.1, 0), // Position
Picture *pic = new Picture( vector(0.1, 0.1, 0), // Position
0.2, 0.2, // Größe relativ zum Bildschirm
LoadTexture("irgend_eine_textur.jpg")) // kein Ausschnitt, die komplette Textur verwenden
White ) // keine Einfaerbung
Text *txt = new Text( vector(0.1, 0.2, 0), // Position
0.04, // Schriftgröße (relativ zum Bildschirm)
Blue, // blau
"test" ) // eigentlicher Text
"test" ) // eigentlicher Text
// ein Modell
matrix mat
Picture3d *p3d = new Picture3d( LoadModel("irgend_ein_model"), // ein Modell
mat, // die Drehung
0.1) // Bildschirm-Tiefe
0.1) // Bildschirm-Tiefe
CurrentLayer = nil
CurrentGrouping = nil
// die komplette Gruppe blinken lassen
t += elapsed * 2Beispiel mit Klassen ed
Beispiel:
class HealthPanel : Text
void __init__()
pos = vector(0.1, 0.1, 0)
size = 0.04
overwrite void onIterate()
// Text-Anzeige für die Lebenspunkte (hier var[1]) verwenden
text = "Lebenspunkte: " + Ego.var[1].str2(1)
group.Color.a = 0.7 + 0.3 * sin(t)
wait_of()