OSSL TextureDrawing/de
From OpenSimulator
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
- 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.