LSL Protocol/Restrained Love Relay/Other Implementations/DEM Relay HUD

From Second Life Wiki
Jump to navigation Jump to search

((work in progress))

Think Kink Restrained Life PBA (Personal Bondage Assistant) Multi-Object Relay

©left 2009 Think Kink (Think Kink is Ilana Debevec, Lyssa Daehlie & Chloe1982 Constantine)

the Think Kink Restained Life PBA Relay (tkPBA for short) is released under a modified "CopyLeft" license. The short form without legalese.

This code is provided AS-IS, OPEN-SOURCE and holds NO WARRANTY of accuracy, completeness or performance. It may be distributed in its full source code with this header and disclaimer and is not to be sold withour permission. Optionally it may be distributed in a 'no mod' form within Second Life™ PROVIDED that either a link to the full source IS provided (ie. this page or a .zip or .rar) within the object the code is contained AND/OR a off-world contact point (ie. email) that the source code may be requested from. This somewhat unusual (no-mod) distribution is allowed to maintain the integrity and reliability of the creator reference of in-world objects (scripts). Changes and improvement to this code must be shared with the community so that we ALL benefit.

Based on Maike Short's 1030b relay, with thanks to Tahni Taratal, RL Ansome, Nihal Quah and all of the staff of THINK KINK who helped with the shakedown and development of this device. Recursive thanks to everyone that has gone before on the devlopment of the Restraint Life Relay, including (but not limited to) Maike Short, Felis Darwin, Chorazin Allen, Azoth Amat, Gregor Mougin, Nano Siemens, Cerdita Piek, Satomi Ahn, Marissa Mistwallow and she who started it all Marine Kelley. An extra special personal thanks to Chloe1982 Constantine who was able to help me put ideas into bits when I was buried whisker deep in both SL and RL issue.

In-world (no mod) copies of this relay may be picked up at THINK KINK🖈 or email to Ilana.Debevec@gmail.com for full source.


Design Philosophy

We went into the design of the tkPBA to be as flexible in it's handling of multiple objects as possible. Originally we looked at the single script concept but quickly discarded this as being rather unwieldy and subject to the whims of LSL to it's use of memory. With the all in one design, you can't reliably check on memory utilization, excessive garbage collection with list management and other quirks of LSL. Therefore, we split the relay into three parts -

- the DPU (Dominate Processing Unit) handling all the 'global' tasks of the relay (listens, dialogs, mode (off/ask/auto/hardcore), SAFEWORD and implementation of the !who and !vision commands.
- the SPU (Slave Processing Unit) handling 'object specific' tasks (what object and it's restrictions are in place).
- the GPU (Graphics Processing Unit)) the 'bare metal' interface for the !vision command.

Further, we took the actual architecture of the relay down to the 'prim' level. Since we have made this a HUD ONLY device (a. can't drop scripts in 'no mod' items that may already have their own touch events, b. not enough body attachment points as it is, c. keep it and it's status and control where you can get it at easily), we could divide the scripts among different prims to let them do part of the work.

- the DPU goes in the root, the SPU's go in separate prims (one per # of devices you want to control), the GPU lurks on the back of the root prim and gets prim modification to affect the vision of the user.

- the DPU keeps the UUID of the object currently controlling it and the UUID of the last AV that used it (if available). The DPU, instead of having to pass link messages back and forth, or keep updating an internal list, can find the current state of the object simply by reaching over with ((find proper call)) and get the UUID's of the object/operator or if NULL_KEY see that the SPU is free to use.

!who

(add description of the who command)

This gives the tkPBA the ability to give some useful information on the actions of someone that is attempting to 'use' your relay to help you make informed decisions when your relay is in ASK mode.

((verify the message text))

"Devious Device owned by Random Avatar at RegionBlarf <100,40,50> wants to control your relay, do you accept?" (standard message, no !who passed)
"Crafty Avatar is using the Devious Device owned by Random Avatar at RegionBlrf <120,42,53> want's to control your relay, do you accept?" (basic !who, someone using someelses device)
"Crafty Avatar is using their Devious Device at RegionBlif <120,31,130> to control your relay, do you accept?" (they are using their own device on you)
"Crafty Avatar is using your Devious Device at RegionBillow <42,42,42> to control your relay, do you accept?" (hmmm, using your own stuff against you)
"You have activated Crafty Avatar's AreaRestriction Device at RegionWakkaWakka <233,32,125> to control your relay, do you accept?" (triggering an area effect device, so you are the !who)

((should we add the 'comming attractions' of owner, allowed, verify, banned lists? and/or the configuration orb??))

!vision

((add all info))

The DPU

((insert script))

The SPU

((insert script))

The GPU

((insert script))