Discussion:
Feature Request: osAvatarSit(key avatar, key object, integer options)
Justin Clark-Casey
2014-10-17 01:08:19 UTC
Permalink
Vegaslon and others contributed an osForceOtherSit() patch in git master commit 00b23e51aecab7902f0fe0a0b138698ad28caea2
which I think does what you need. Vegaslon then documented it at [1].

[1] http://opensimulator.org/index.php?title=OsForceOtherSit
I've been considering scripting a new couples dance ball for clubs in busy regions where keeping the script count to a
minimum and script efficiency to a maximum is key.
The current most popular couples dance machine currently is the venerable "Franks Couples Dance System" and its assorted
permutations which can handle multiple couples but requires one script per **possible** dancer (so often this has 12-16
animation handler scripts), plus the master controller script, etc...not very efficient at all. The version I envision
would be a single script that uses OSSL animation functions to handle all users simultaneously. The only hurdle to
overcome in scripting this is the positioning of the couples in x,y axis in the region since they need to be effectively
on poseballs but I want to make it a completely poseball-free system by having them "sit" on the machine itself and then
use llSetLinkPrimitiveParamsFast() for the positioning.
Frank's machine rezzes a pair of poseballs near the initial toucher's location, then the pair sits and the poseballs are
moved to do the positioning for each dance. To eliminate the poseball usage but maintain the same basic functionality I
would need some way to know the couple's approximate location *prior* to "sitting" on the dance machine (which then
makes them part of the linkset and lets me do all the positional dance controls). The only solution I can come up with
using existing functions is one where one dancer has to first touch the machine to say ""I want to dance so store my
position and then when I sit put me back there" and then a right-click sit to actually sit on the machine....not
something that's very intuitive or user-friendly plus requires multiple clicks. The easiest solution I can think of is a
function that allows me to "force sit" the toucher rather than having him/her have to do so, allowing the first dancer
to touch the device which then checks the location and then force-sits the avi before immediately putting them right
back where they were. Then the partner touches the machine which repeats the process but puts them in the correct
location based on the dance selected. Obviously there would be a few little tricks to correctly matching couples but I
can manage all of that stuff with existing functions so the only stumbling block is the lack of a force-sit command for
avatars.
The "force sit" function I'm proposing would be identical to the existing osNpcSit() function but work on regular
agents. You'd specify the UUIDs of the avatar, the UUID of the target to sit on, and use the equivalent of
OS_NPC_SIT_NOW as its option. Since the function exists already in NPC form, I was hoping that it might require minimal
additional coding to enable it to work on a regular avatar -- possibly as simple as commenting out the presumable check
in the current code that makes sure the agent is an NPC before allowing osNpcSit() to do its thing.
I can envision other applications where this function could very useful (to be able to seat someone who touches an
object). Needless to say it would need to be assigned at least a VeryHigh or even Severe threat level due to its
potential for abuse unless it initiated a permission request check of some sort.
Is this feasible and is there any interest from someone with the necessary coding expertise to implement it? Of can
someone think of a clever way around this hurdle using existing functions?
Cheers!
Aine
_______________________________________________
Opensim-dev mailing list
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
--
Justin Clark-Casey (justincc)
OSVW Consulting
http://justincc.org
http://twitter.com/justincc
Loading...