Wednesday, August 2, 2017

Update to the mesh gags and some legs restraints

Hi !

There is an update available for your gags as well as all the legs restraints that involve a chain. This is more a hotfix than an update, in fact, and won't change the version number of your restraints. Don't worry, no replacement will be needed to get these fixes. Just remember to save your times.

Please note : If you update your gags while wearing them, you will get a warning from the updater saying it cannot replace the "OpenMouth" item. It isn't clear but it actually means the "OpenMouth" animation, but it will update your "OpenMouth" plugin anyway, so don't mind that warning if you've already got your "OpenMouth" animation updated (it was to be replaced during 1.30 because of a permission issue).

Here is the list of all the changes contained in this small (but very useful) update :

1. Chained legs deforming the shoulders

It has come to my attention that the "Taut_w" animation, which is the animation played when you are walking in the "Taut" lock when the legs are restrained with a chain, was deforming the shoulders of the avatar, even though I paid attention NOT to include bone translation information in that animation. To get this issue fixed, you need to rez the restraint on the ground (the right ankle part, whatever the product is) because the animation is no-copy, so it cannot be downloaded into an attachment directly. There will be no loss of content if you forget, but the updater will just tell you it cannot do it. Please note that not all the legs restraints need this fix, only those that have the "Taut" lock : the Police Legirons, the legs Serious Shackles, the legs Restrained Elegance, the legs Vixens and the legs Deluxe Straps. Thank you Ashlana20 for the heads-up !

The reason for this bug was *probably* the tool itself. I'm not one to blame my tools usually, but this time this is the only reason I can think of, because I specifically paid attention to NOT include bone translation information (what deforms the skeleton) into this animation when I uploaded it the first time, and yet it did anyway. Then I updated the tool before re-uploading the animation, not changing anything else otherwise, and surprise, no bone translation information anymore. Go figure.

2. Deluxe gag chin strap moving by itself

The Deluxe gag's chin strap (and the chin strap of its Bridle if you have it too) tends to move by itself in laggy areas, but it is not the fault of the chin strap, but of the OpenMouth plugin which is contained into every gag. You could update only your Deluxe Gag and it would fix the bug for it, but know that there might be other attachments monitoring the system mouth's animation state, such as the Need For Seed from Marine's Goodies, and those products are impacted by the bug in the OpenMouth plugin as well, which means every single RR gag (except the Isolation Hood which does not have this plugin) should be fixed if you intend to use them along with these other products. But the most immediate and visible occurrence of this bug is the chin strap of the Deluxe Gag, so it is up to you to decide whether to upade the rest or not. Thank you Bunny Hastings for helping me test this bug, and also for your patience because it took a while. Read the end of this blog post for technical details, because this bug was really a weird one to track and fix.

3. Every gag's default animation was named "Default ="

Yeah. Bad me. I don't even know if it caused any weird behavior at all but it sure looked silly on the menu.

4. The override animations of the gags stopped on some furniture

Now this one was really weird. When sitting down on some furniture (such as MP Noir's bunk bed but there are others), all your animations were stopped, which freaked out the OpenMouth plugin if you had set it to use one of its "OpenMouthXXX" override animations. Those animations are special in the sense that they work better on Catwa than the default ones due to the way they are designed, but may cause issues when "Loop" is active and you're sitting on something. Same thing when standing up from what you were sitting on, if the furniture suddenly stops all your animations. To fix this, the gag now waits a few cycles (generally a second or two) before attempting to restart the animation after sitting down or standing up.

5. The Deluxe Gag confuses third-party plugins by controlling ring straps when it shouldn't

The Deluxe Gag's config notecard (with or without bridle) involves ring-related parts when locked on "harness ball", which might confuse some third-party plugins. Now this one is NOT part of this update, unless you want to replace your Deluxe Gag, but you can fix it yourself manually by opening its "*Style config" notecard and removing all the capital "R" letters from the two lines that begin with "4:" and "7:" (these are used by the "Harness ball" and "Total ball" locks of the gag). Save, and it's fixed. Thank you Aida Beorn for the report !

Here is what those two lines should look like after the fix :

4:Harness ball;BJUVY,Harness cock;BQJUVY,Harness bit;BJUIVY,Half cock;BQJVY,Just cock;Q,Half ball;BJVY,Half bit;BJIVY,Invisible;
7:Harness ball;BJUVY,Harness cock;BQJUVY,Harness bit;BJUIVY,Half cock;BQJVY,Just cock;Q,Half ball;BJVY,Half bit;BJIVY,Invisible;

You can find an updater at the following places in-world :

My little shop

Dark Wishes

Roper's Dark Playground

Chorazin's main store

It looks like an orb floating above a pedestal, just click on it and follow the instructions.

Have fun !


PS : So, on to the technical stuff about the chin strap. It works like this : the OpenMouth plugin opens the system mouth (the mouth of your system avatar, you can't see it if you're wearing a mesh head, but it's there) twice per second, while the chin strap checks the mouth's open state once per second. You could ask, why do these two script not communicate together directly instead of relying on an animation state ? Simply because there can be any kind of attachment needing to monitor the mouth's state, and they're not all made by me.

The problem is that the OpenMouth plugin actually has to close the mouth right before opening it again (it doesn't work well otherwise, SL tends to ignore the second animation trigger if the animation is the same, and as this animation is not looped, the mouth closes completely before opening again, when the animation has finally ended). This means that if the chin strap checks the mouth's state at this exact moment, it believes the mouth is closed while it is simply refreshing, and it resizes itself.

And the second problem is that if this happens once, it has a good chance to happen again the next second, and the next one and so on, because both scripts are now stuck in phase (only the former goes twice as fast as the latter) and will remain in phase for a while. This is what made the chin strap move rapidly like that.

The fix was therefore to make the OpenMouth plugin's cycle not be a divisor of 1 second, while staying close to half a second (that's the speed at which the mouth needs to be refreshed in order to look constantly open). I chose 0.47 second. That way, even though the chin strap might still do a check exactly when the OpenMouth plugin refreshes the mouth, it will resize itself once (and back to where it was) but won't stay in phase and won't flap like it did.