From 6753578465f1853ed95d3f8850d7d6f5089501b3 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 18 Jun 2008 22:56:04 +0000 Subject: [PATCH] commit justin's grafitti board to the base OpenSim script library. --- bin/assets/ScriptsAssetSet/GrafittiBoard.lsl | 74 +++++++++++++++++++ .../ScriptsAssetSet/ScriptsAssetSet.xml | 8 ++ .../ScriptsLibrary/ScriptsLibraryItems.xml | 15 +++- 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 bin/assets/ScriptsAssetSet/GrafittiBoard.lsl diff --git a/bin/assets/ScriptsAssetSet/GrafittiBoard.lsl b/bin/assets/ScriptsAssetSet/GrafittiBoard.lsl new file mode 100644 index 0000000000..d30e8f08e6 --- /dev/null +++ b/bin/assets/ScriptsAssetSet/GrafittiBoard.lsl @@ -0,0 +1,74 @@ +// Grafitti board 0.0.2 for OpenSim +// By Justin Clark-Casey (justincc) +// http://justincc.wordpress.com + +// This script is available under the BSD License + +string text = ""; + +int LISTENING_CHANNEL = 43; + +// XXX Only putting this here as well to get around OpenSim's int -> string casting oddness +string LISTENING_CHANNEL_STRING = "43"; + +// FIXME: Should be dynamic! +int CHARS_WIDTH = 42; + +default +{ + state_entry() + { + llSetText( + "Say /" + LISTENING_CHANNEL_STRING + " to add text." + + " Say /" + LISTENING_CHANNEL_STRING + + " !clear to clear board", + <0.0, 1.0, 0.0>, 1.0); + + llListen(LISTENING_CHANNEL, "", NULL_KEY, ""); + + addGraffiti("justincc's graffiti board v0.0.2"); + addGraffiti("Now with primitive word wrap!"); + draw(); + } + + listen(integer channel, string name, key id, string message) + { + if (message == "!clear") + { + clearGraffiti(); + } + else + { + addGraffiti(message); + } + + draw(); + } +} + +// Add some additional graffiti +void addGraffiti(string message) +{ + while (llStringLength(message) > CHARS_WIDTH) + { + text += "\n\n" + llGetSubString(message, 0, CHARS_WIDTH - 1); + message = llDeleteSubString(message, 0, CHARS_WIDTH - 1); + } + + text += "\n\n" + message; +} + +// Clear the existing graffiti +void clearGraffiti() +{ + text = ""; +} + +// Actually fires the graffiti out to the dynamic texture module +void draw() +{ + //llSay(0, text); + string drawList = "PenColour BLACK; MoveTo 40,220; FontSize 32; Text " + text + ";"; + + osSetDynamicTextureData("", "vector", drawList, "1024", 0); +} diff --git a/bin/assets/ScriptsAssetSet/ScriptsAssetSet.xml b/bin/assets/ScriptsAssetSet/ScriptsAssetSet.xml index 8f850274b5..4fd18c1c73 100644 --- a/bin/assets/ScriptsAssetSet/ScriptsAssetSet.xml +++ b/bin/assets/ScriptsAssetSet/ScriptsAssetSet.xml @@ -146,4 +146,12 @@ +
+ + + + + +
+ diff --git a/bin/inventory/ScriptsLibrary/ScriptsLibraryItems.xml b/bin/inventory/ScriptsLibrary/ScriptsLibraryItems.xml index 3f674ebb88..4cf30817e0 100644 --- a/bin/inventory/ScriptsLibrary/ScriptsLibraryItems.xml +++ b/bin/inventory/ScriptsLibrary/ScriptsLibraryItems.xml @@ -303,7 +303,7 @@
- + @@ -313,4 +313,17 @@
+
+ + + + + + + + + + + +