Saturday, June 4, 2011

Touch plugin... and its siblings Control, Wear and Unwear

Hi !
Today I am going to talk about not one but four plugins at the same time ! These plugins, although having apparently nothing in common, share the exact same architecture and it is easy to understand what they all do (and how to use them efficiently) when you understand this very architecture.

Let's go. For this tutorial I will use the Touch plugin as an example, but keep in mind that the others work the same way. I will highlight the differences at the end of this post.

If your own Touch and Control plugins do not look like this one, please update your RR products. These versions are still fairly new at the time of this writing.

The Touch plugin is meant to prevent the captive from touching objects, and is normally found in arms restraints (when your hands are restrained, you can't use devices). In the past, it was used only to restrict touching far, since the arms restraints could "block" the captive (i.e. raise a HUD that would take the entire screen, blocking clicks, edit and rez). But recently the RLV has been added a few commands to control what could be touched and what could not, in a much finer grain than before. Hence the new Touch plugin.

Moreso, depending on the way her cuffs are locked, the captive may or may not be able to touch this or that. For example, with her cuffs locked in front, she may still be able to touch someone else's attachments, whereas she couldn't if her hands were cuffed in the back.

So for every lock type (hands in front, hands in back...), the top might wants to be able to decide what can be touched and what cannot, and to not have to set these restrictions everytime the lock changes.

In other words, the restrictions are organized like a matrix. For each lock, indicate which restrictions are to be in effect. And to represent this matrix, locks would be on the X axis, while restrictions would be on the Y axis. Does that make any sense to you ? Don't worry, it will soon.

I click on my Vixen leather handcuffs, and I go to the Touch plugin.

Oh, see ? A matrix ! Surprise ! A full square means "the captive is able to..." while an empty square means "the captive is restricted from...". For now all the squares are full because the restraint is new.

By default all the restrictions are lifted. This means that if you've just bought your restraints, your touch won't be restricted in any way even when you lock them on you. How to set a restriction then ?

Before we do anything, let me explain what is displayed a little. There is a small "x", followed by a row of numbers from 1 to 8, then a "L", and then a "A". And an arrow pointing to the "A".

This row represents the locks. "x" means "unlocked" (but all the restrictions are lifted when the restraint is unlocked, so you don't need to bother with that one, it is displayed for a reason I will explain later), the numbers "1" to "8" correspond to the 8 locks, "L" means simply "locked" (without a pose), and finally "A" means "All locks".

Aha. The arrow points to "A", and the "ALL LOCKS" button is "on". This is because by default the restrictions you set are applied whatever lock you choose.

Wait, doesn't it defeat the very idea of "one different set of restrictions per lock" ? Yes it does, but not everyone wants the fine-grain control that this matrix offers. Although you might want the realism of not being able to touch someone else's attachments only when your hands are cuffed behind your back, you're no here to punch holes into a matrix. You're here to have fun ! Therefore, by default, you simply decide what restrictions to apply, and that's it. If you want finer control, it is as simple as pressing the "ALL LOCKS" button. You'll see in a minute.

But enough talk ! Let's try it. I am wearing my Vixen cuffs now, and I click on them and lock them behind my back. As I didn't change anything on the Touch plugin, I am still able to touch objects in-world, whether they are near or far, and I can touch my own attachments and those worn by other people. As if I wasn't restrained at all.

I click on them and go to the Touch plugin, then press "Touch far". What happens ? Let's see the matrix now :

The matrix has a hole in it now, the square at the intersection of "A" and "Far" is now empty. This means "For ALL the locks, the captive cannot touch objects that are FAR". Farther than arms reach, that is. That's farther than 1.5 meter away, folks. Let's check this... I touch the door over there, nothing happens (it normally opens when touched). I walk closer and try again, ok that works now, I must just be near it. When I touch my collar it gives me its own menu. I can touch everything around me EXCEPT objects that too far away. It makes it feel more realistic, goodbye telekinesis !

Since my hands are cuffed behind my back, it would make sense that I'd be unable to overpower someone nearby, therefore I should be unable to click on their attachments as well. However I should still be able to touch my own attachments (for example a gag, you can still raise your hands at mouth level when cuffed like this, it does not require much flexibility), and objects that are not worn by anyone, like doors. I should be able to open a door in this kind of bondage, I just have to be very close that's all.

So I press the "Touch other" button to set this restriction, and another hole is punched into the matrix, still under "A". This now means "For ALL the locks, the captive cannot touch objects that are FAR, or objects that are worn by OTHER people". Hmm, this bondage is starting to feel real, now...

Ok, this is all good and well, but what if my hands were cuffed in front of me instead of behind my back ? I still wouldn't be able to reach objects that are far, but should I be able to, say, lock someone else's cuffs ? I think so. But how ? If I pressed "Touch far" again now, I would be able to touch far regardless of how my hands are cuffed, that's not very realistic...

This is where I must disengage "ALL LOCKS". This button acts like an override to simplify the handling of restrictions for people who don't want to bother about realism. But I do, so I press it to remove the override. And now the plugin goes from 1D to 2D (no there is no 3D yet :p ).

Notice that the arrow has shifted from the "A" column to the "2" column. Why "2" ? Because my hands are cuffed behind my back, and that is the second lock on the main menu. The first one being "hands in front".

And guess what ? I am totally unrestricted again. I can touch far, and I can touch other people's attachments. Great, did I do all this for nothing ? Not really. Let's see what happened here.

The "A" column has two holes, the ones we've set earlier, "touch other" and "touch far". This has not changed, but the arrow is not on "A" anymore, it is on "2", and "2" has no holes in it. In other words, the restrictions are all lifted again. Now suppose I am lazy and... no wait, scratch the "suppose" part, I AM lazy. I don't want to set the restrictions for every lock, that would be a waste of time that could be better used, for example on having fun. Let's do a little magic that is called copy/pasting. Remember the restrictions are more or less ok when the "ALL LOCKS" override is engaged. I will copy them and paste them to all the locks, individually.

I press "ALL LOCKS" again, engaging the override. Then I press "PASTE TO ALL", and...

What just happened ? The "A" column has been copied and pasted over all the other columns. Now I can tweak each individual lock if I want to. I press "ALL LOCKS" one more time to disengage the override again, and the arrow goes back to "2", the current lock.


On a side note, I can do this the other way around too, by copying the settings of the current lock (when "ALL LOCKS" is disengaged, "PASTE TO ALL" becomes "COPY", which actually pastes the current column to the "A" one, and then I can paste the latter to every column with the method I have shown above), but no need to do this now.

Now, I lock my hands in front. I am still unable to touch far (this is normal), but I would like to be able to touch other people's attachments.


Nothing's easier, I press the "Touch other" button to lift that restriction. And now the matrix looks like this :

A square has been filled, I can now touch other people's attachments again... but only when my hands are cuffed in front. If I cuff them behind my back again, that ability is removed. This is fine-grain control !

Now you know the most part of how the Touch plugin works, and by extension, how the Control plugin works (with its Edit, Rez, Map, Inventory and other restrictions), as well as how Wear and Unwear work (they restrict from wearing or unwearing clothing layers and attachments). Also, since the Touch plugin may be in the same restraint than the Control plugin, there is a shortcut to switch from one to the other. Same for Wear and Unwear (and their common parent "Outfit", for which I will write a full tutorial too).

There are a few things to note though, I know this has been a long read, but you might be interested in this...

I have said that the "x" column was unused. This is not entirely true. The top is actually able to set the restrictions on the captive even when the restraint is unlocked. Although this doesn't make sense at first glance, this is actually very handy when used in conjunction with, say, an autolock. When the restraint is unlocked, every button pressed on the Touch plugin will modify the "x" column. When the restraint is finally locked, the contents of the "x" column are pasted onto the current lock, or on the "A" column, depending on the override. But this happens only if the "x" column has been changed since the last unlock. Long story short, if you modify the restrictions while the restraint is unlocked, no problem. They will be applied next time it is locked, as intended. You won't even have to bother about it.

Lastly, it is possible to save the matrix and to load it again. After all, this matrix is just a series of 0s and 1s, right ? It is just text. And as such it can be copied to a text file and said on the chat.

I press the "Save/Load" button, and immediately I hear this from the cuffs :

Leather right wrist cuff (r forearm) whispers: Current configuration (save it in a text file for later) :
If you want to load another configuration, please type it on the public chat channel.

This is the contents of the memory at this time, after I have set the restrictions how I like them. So I copy them to a text file somewhere on my computer.

Now let's assume some time passed and the plugin was reset for some reason (for example after an update), the restrictions would be clear again, and I don't want to set them one by one again. The menu would look like this, leaving me a whole lot of work to do again :

This is where the "Save/Load" button helps me again, I press it, and I hear this :

Leather right wrist cuff (r forearm) whispers: Current configuration (save it in a text file for later) :
If you want to load another configuration, please type it on the public chat channel.

Now it's telling me the contents of its memory again, but it's clear. However it also tells me that it is listening to my chat, in case I'd have some data to give it. It just so happens, I do ! I copy the contents of my text file directly on the chat :

Me: 111111111110000000000011111111111010000000001111111111111111111111111111111111111111111111111111111,0

Yeah, I speak binary fluently. Hehe. At least binary that this plugin can understand. And it does understand it, because now the matrix shown on the menu is exactly the same as it was before it got reset. I just loaded the old configuration :

Personally, here is the configuration I use on the Vixen cuffs :


This means that with the hands in front (first and third locks), I can touch other people's attachments, and with the hands chained simply together (front or back, that's first and second locks), I can touch my own. In all other locks, I can neither touch my attachments not other people's, and under no circumstances can I touch objects that are far. But since the Vixen cuffs do not cover the hands (contrary to, say, the armbinder), I can always touch objects in-world.

If you're interested, here are my favorite configurations for different arms restraints of mine. Just press "Save/Load" on the plugin menu and say one of these on the chat, and you'll get the same configuration :

Elegance cuffs : 111100011110000000000011010001111110000011111111111111111111111111111111111111111111111111111111111,0

Armbinder : 010000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111,0

Police cuffs : 111101011110000000000011010001111110000011111111111111111111111111111111111111111111111111111111111,0

Vixen cuffs : 111111111110000000000001100000000110100000001111111111111111111111111111111111111111111111111111111,0

You're still here ? Oh, yes, forgive me I forgot. This post is about 4 plugins, not just Touch... Well there is not much else to say, what I have explained for Touch also applies to Control, Wear and Unwear. Here are the main differences though :

- Control also allows the top to add exceptions to the channels restriction (which prevents the captive from sending messages on non-public channels).
- Wear prevents not only from wearing clothing layers and attachments, but also all the folders that contain anything that is meant to be worn on said layers and attachment points. For example, if you restrict "top", the captive will not only be unable to wear a shirt, undershirt or jacket, or anything on spine or chest, but even folders that contain shirts, undershirts etc. You don't want her to wear anything to cover the upper part of her body, that's what this option means.
- Likewise, Unwear prevents not only from removing clothing layers and attachments, but also any folder that contains clothes or attachments worn on the specified points. If you restrict "top", she will be unable to detach her spine and chest attachments, as well as remove her shirt, undershirt or jacket, as well as any accessory contained in a folder that also contains one of these parts.

There, I think that's it. Whew ! Thank you for reading this far !

Have fun,