OSSL TextureDrawing/de

From OpenSimulator

Revision as of 07:03, 24 September 2018 by Manni (Talk | contribs)

Jump to: navigation, search


Allgemeine Fähigkeiten

Die OSSL-Texturzeichnungsfunktionen ermöglichen es dem Scripter, dynamisch eine Textur aus dem Kontext eines Skripts dynamisch zu generieren. (Es kann in LSL, C # oder einer anderen unterstützten Skriptsprache geschrieben werden.)

Die Skriptsprache unterstützt Text und Bilder sowie drei einfache Zeichenelemente: Linie, Rechteck und Ellipse. Farbe und Stiftattribute sind enthalten. Schrift, Größe und Stil werden für Text unterstützt. Ein Bild wird als URL angegeben.

Ein Zeichenskript kann direkt in der Texturzeichnungssprache angegeben werden oder kann mithilfe von Hilfsfunktionen in der Skriptsprache erstellt werden. Beispiele für beide Ansätze sind nachstehend gezeigt.

Für die Texturwiedergabe stehen mehrere zusätzliche Parameter zur Verfügung. Dazu gehören die Höhe und Breite der Textur sowie die Hintergrundfarbe und der Alpha-Wert. Ein Anweisungsabschlusszeichen kann ebenfalls angegeben werden.

LSL Helper Funktionen

string osMovePen(string drawList, int x, int y);
string osDrawLine(string drawList, int startX, int startY, int endX, int endY);
string osDrawLine(string drawList, int endX, int endY);
string osDrawText(string drawList, string text);
string osDrawEllipse(string drawList, int width, int height);
string osDrawRectangle(string drawList, int width, int height);
string osDrawFilledRectangle(string drawList, int width, int height);
string osDrawPolygon(string drawList, LSL_List x, LSL_List y);
string osSetFontSize(string drawList, int fontSize);
string osSetPenSize(string drawList, int penSize);
string osSetPenColor(string drawList, string colour);
string osSetPenCap(string drawList, string direction, string type);
string osDrawImage(string drawList, int width, int height, string imageUrl);

C# Codebeispiel

//cs
public void default_event_state_entry()
{
    string drawList = "";
    drawList = osDrawLine (drawList, 10,20,240,20);
    drawList = osMovePen (drawList, 50,100); 
    drawList = osDrawImage(drawList, 100,100,"http://opensimulator.org/images/d/de/Opensim_Wright_Plaza.jpg" );
    drawList = osSetPenSize (drawList, 1); 
    drawList = osSetPenCap(drawList, "end", "arrow");
    drawList = osMovePen (drawList, 50,70);
    drawList = osDrawEllipse (drawList, 20,20);
    drawList = osMovePen(drawList, 90,70); 
    drawList = osDrawRectangle (drawList, 20,20 );
    drawList = osMovePen (drawList,130,70); 
    drawList = osDrawFilledRectangle(drawList, 20,20);
    drawList = osDrawPolygon(drawList, [50,100,150], [50,100,50]); 
    drawList = osDrawFilledPolygon(drawList, ["50","100","150"], ["50","100","50"]); // It works with integers, float or string as the x and y points
    drawList = osSetFontSize (drawList, 12 );
    drawList = osMovePen (drawList,15,32); 
 
    string regionName = llGetRegionName();
    drawList = osDrawText (drawList, "Hello and welcome to " + regionName );
 
    drawList = osSetFontSize (drawList, 7); 
    drawList = osSetPenColor (drawList, "blue");
    drawList = osMovePen (drawList, 70,220);
    drawList = osDrawText (drawList, "The End");
    osSetDynamicTextureData("", "vector", drawList, "", 0);
}

OS Dynamische Textursprache

iele der OSSL-Zeichnungsfunktionen sind Komfortfunktionen, die beim Erstellen der Befehlszeile für den Datenparameter osSetDynamicTextureData helfen. Es kann einfacher sein, die Zeichenfolge selbst zu erstellen, indem Sie die Zeichnungsbefehle direkt verwenden. Tun Sie dies, indem Sie eine Zeichenkette deklarieren und dann Sätze von Befehlen und Parametern anhängen, bis sie fertig ist. Jeder Befehl ist durch ein Semikolon ";" getrennt. Zusätzliche Parameter können für das Bild mit dem Parameter extraParams festgelegt werden.

osSetDynamicTextureData(string dynamicID, string contentType, string data, string extraParams, int timer)
  • dynamicID noch nicht benutzt – send “”
  • contentType verwendet “vector” zum Zeichnen von Befehlen oder “image” für loadurl
  • data die Grafikbefehle in der Zeichenkette mit dem Format: “MoveTo 20, 20; FillRectangle 60, 60;”;
  • extraParams width, height, alpha, bgcolour, altdatadelim
  • timer Aktualisierungsintervall festlegen

Befehle (data)

MoveTo int x, int y;
Platziert den Pinsel an der x / y-Koordinate
LineTo int x,int y;
Zeichnet die Linie von der aktuellen Stiftposition zur x / y-Koordinate
Text string content;
Text zum Schreiben im Bild
Image float x, float y, string URL
Die X / Y-Platzierungskoordinaten und URL eines zu ladenden Bildes
Rectangle float x, float y;
Zeichnet ein Rechteck mit dem aktuellen Stift von der aktuellen Stiftposition zu den x / y-Koordinaten
FillRectangle float x, float y;
Zeichnet ein gefülltes Rechteck mit dem aktuellen Pinsel von der aktuellen Stiftposition bis zu den x / y-Koordinaten
Ellipse float x, float y;
Zeichnet eine Ellipse mit dem aktuellen Pinsel von der aktuellen Pinselposition zu den x / y-Koordinaten
FontSize int size;
Die Größe der Schriftart für Text
FontProp char;
[B|I|U|S|R]
  • B Bold
  • I Italic
  • U Underline
  • S Strikeout
  • R Regular
FontName string name;
Der Name der zu verwendenden Schriftart
PenSize float size;
Größe des Zeichenstifts
PenColour string color;
Zeichnungsfarbe des Stiftes
PenCap string direction, string type;
Cap besteht aus 3 möglichen Richtungen ("start","end","both") und 4 möglichen Typen ("flat","diamond","arrow","round")

Beispiel

string drawData;
drawData += "PenColour Teal; FillRectangle 1024, 512;";
drawData += "PenColour PowderBlue;";
drawData += "MoveTo 40, 30; FontSize 25; Text 2000 UTC:;";
drawData += "MoveTo 250, 30; Text Speed Build Competition;";
drawData += "MoveTo 40, 70; Text 0120 UTC:;";
drawData += "MoveTo 250, 70;Text Working On Sign;";
drawData += "MoveTo 40, 110; Text 0500 UTC:;";
drawData += "MoveTo 250, 110; Text Going To Sleep!;";
drawData += "MoveTo 40, 150; Text 0600 UTC:;";
drawData += "MoveTo 250, 150; FontProp B,I;Text Waking Up!;";
drawData += "FontProp R;";
drawData += "MoveTo 40, 190; Text Have a great day!!;";
drawData += "PenCap end,arrow; LineTo 50,250; MoveTo 50,250;";
osSetDynamicTextureData("","vector", drawData,"width:1024,height:512,alpha:254", 0);

Zusätzliche Parameter (extraParams)

height
die Höhe für das Bild in Pixel
width
die Breite des Bildes in Pixel
alpha
die Opazität des Bildes
0-255 um die Deckkraft für ein Bild mit einem Alphakanal einzustellen
false für ein Bild ohne Alphakanal
bgcolour
die Hintergrundfarbe des Bildes

Microsoft .net colors

altdatadelim
ein alternatives Trennzeichen für jeden Parameter - nützlich, wenn Sie Text anzeigen möchten, der Semikola enthält, z. B. C # - oder LSL-Code.
Personal tools
General
About This Wiki