From 6753578465f1853ed95d3f8850d7d6f5089501b3 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 18 Jun 2008 22:56:04 +0000 Subject: commit justin's grafitti board to the base OpenSim script library. --- bin/assets/ScriptsAssetSet/GrafittiBoard.lsl | 74 ++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 bin/assets/ScriptsAssetSet/GrafittiBoard.lsl (limited to 'bin/assets/ScriptsAssetSet/GrafittiBoard.lsl') diff --git a/bin/assets/ScriptsAssetSet/GrafittiBoard.lsl b/bin/assets/ScriptsAssetSet/GrafittiBoard.lsl new file mode 100644 index 0000000..d30e8f0 --- /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); +} -- cgit v1.1