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
- Erstellen mit CreatePicture
- Löschen mit XDelete
...->Source gibt den Ausschnitt aus der Textur an
...->TCInverted (false) rotiert die Textur um 90°
...->Color.a wird als Transparenz (Sichtbarkeit) benutzt
Text-Anzeigen ed
Stellt einen String als Textelement auf dem Bildschirm dar.
- Variablen-Typ text
- Erstellen mit CreateText
- Löschen mit XDelete
...->Centric (false) richtet den Text mit ...->Pos als Mittelpunkt aus
...->Vertical (false) ordnet die Buchstaben übereinander an
...->Color.a wird als Transparenz (Sichtbarkeit) benutzt
...->Size ist die Höhe der Zeichen pro Bildschirm-(Target)-Höhe
...->Font (DefaultFont) ist ein mit LoadXFont zu ladender BitMap-Font
3D-Modelle in den Anzeigen ed
Ein 3d-Modell wird auf die 2-dimensionale Bildschirm-Ebene projeziert.
- Variablen-Typ picture3d
- Erstellen mit CreatePicture3D
- Löschen mit XDelete
...->Relative (true) gibt an, ob ein [0,1][0,1]-Koordinatensystem oder Bildschirm-Pixel-Angaben benutzt werden sollen
...->Lighting (false) lässt die Modelle von Lichtquellen beleuchten
...->Matrix Transformations-Matrix von Modell- nach Anzeige-Koordinaten
...->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 grouping
- Erstellen mit CreateGrouping
- Löschen mit XDelete
...->Pos ist die kollektive Position, die den Elementen hinzuaddiert werden soll
...->Color ist die farbe, mit der die Farben der Elemente multipliziert werden sollen
Die Variable CurrentGrouping legt fest, ob und zu welcher Gruppe neue Elemente beim Erstellen hinzugefügt werden sollen. (siehe Beispiel)
Beispiel ed
Beispiel:
void main()
{
// eine alles einhuellende Gruppe
grouping group = CreateGrouping( vector( 0.2f, 0.2f, 0.1f ), // Position
White, // keine Einfaerbung
true ); // die folgenden Anzeigen der Gruppe hinzufuegen
// ein Bildchen
picture pic = CreatePicture( vector( 0.1f, 0.1f, 0 ), // Position
0.2f, 0.2f, // Groesse relativ zum Bildschirm
LoadTexture( "irgend_eine_textur.jpg" ), // kein Ausschnitt, die komplette Textur verwenden
r01, // Textur-Ausschnitt ("komplett")
White ); // keine Einfaerbung
// Text
text txt = CreateText( vector( 0.1f, 0.2f, 0 ), // Position
0.04f, // Schriftgroesse (relativ zum Bildschirm)
Blue, // blau
"test" ); // eigentlicher Text
// ein Modell
matrix mat;
MatrixRotation( mat, vector( 0.5f, 1.1f, 0 ) );
picture3d p3d = CreatePicture3D( LoadModel( "irgend_ein_model" ), // ein Modell
&mat, // die Drehung
0.1f); // Bildschirm-Tiefe
// Gruppierung abschliessen
CurrentGrouping = NULL;
float t = 0;
while( true ){
// Text-Anzeige fuer die Lebenspunkte verwenden
txt->Str = "Lebenspunkte: " + f2s( ego->Life, 1 );
// die komplette Gruppe blinken lassen
t += elapsed * 2;
group->Color.a = 0.7f + 0.3f * sin( t );
wait_of();
}
}