Table of Contents

Root

The root of the build contains most of the script.

Main

The main script is responsible for reading all the textures present in the root of the build and then sending the asset UUID to the picture frame whenever the owner of the build touches the picture in order to change the pictures on the picture frame.

Similarly, the main script allows the user to change the displayed text by clicking the build by sending messages to a Furware text system. Usually, Wizardry and Steamworks uses the xyx text system since it is most backward compatible with Snowglobe due to Furware being a mesh-based text system, but for this build it was decided to use mesh instead.

///////////////////////////////////////////////////////////////////////////
//  Copyright (C) Wizardry and Steamworks 2022 - License: GNU GPLv3      //
///////////////////////////////////////////////////////////////////////////
 
integer channel;
list images = [];
 
default
{
    state_entry() {
        integer i = llGetInventoryNumber(INVENTORY_TEXTURE) - 1;
        do {
            key image = llGetInventoryKey(
                llGetInventoryName(
                    INVENTORY_TEXTURE, 
                    i
                )
            );
            images += image;
        } while(--i > -1);
 
        key image = llList2Key(images, 0);
        images = llDeleteSubList(images, 0, 0);
        images += image;
 
        llMessageLinked(LINK_SET, 0, "display", image);
 
        channel = (integer)("0x8" + llGetSubString(llGetOwner(), 0, 6));
        llListen(channel, "", llGetOwner(), "");
 
        llMessageLinked(LINK_SET, 0, "", "fw_reset");
    }
    touch_start(integer num) {
        llTextBox(
            llGetOwner(), 
            "Please type the text to appear on the board (280 characters maximum).",
            channel
        );
    }
    listen(integer channel, string name, key id, string message) {
        llMessageLinked(LINK_SET, 0, message, "fw_data");
    }
    link_message(integer sender, integer num, string str, key id) {
        if(str == "image") {
            key image = llList2Key(images, 0);
            images = llDeleteSubList(images, 0, 0);
            images += image;
 
            llMessageLinked(LINK_SET, 0, "display", image);
 
            return;
        }
 
        if (id == "fw_ready") {
            // Start sending some initialization stuff.
            llMessageLinked(sender, 0, "c=black", "fw_conf");
            //llMessageLinked(sender, 0, "Default text", "fw_data");
 
            return;
        }
    }
    changed(integer change) {
        if(change & CHANGED_INVENTORY) {
            llResetScript();
        }
    }
}

Animate

The animate script is a standard animator script that triggers an avatar animation once the device is worn.

///////////////////////////////////////////////////////////////////////////
//  Copyright (C) Wizardry and Steamworks 2022 - License: GNU GPLv3      //
///////////////////////////////////////////////////////////////////////////
 
default {
    run_time_permissions(integer perm) {
        if(perm & PERMISSION_TRIGGER_ANIMATION) {
            llStartAnimation("asa ba");
        }
    }
 
    attach(key id) {
        if(id) {
            llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
            return;
        }
 
        if(llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) {
            llStopAnimation("asa ba");
        }
    }
}

Animation

The animation is the standard OpenCollar kneel animation.

kneel.bvh

Furware

The Furware script is the standard main controller script provided by the Furware text system.