[sldev] Re: More on Mute Visibility

Argent Stonecutter secret.argent at gmail.com
Thu Jun 21 07:45:51 PDT 2007


> 3.    All the textures on the object are replaced with a solid- 
> white texture.

I suggest using "smoke", which is the old "loading texture", instead.

> 1.    It is possible to mute buildings -- houses, clubs, skyboxes,  
> etc. This
> seems like an obvious statement, but I hadn't considered the  
> implications of
> it until I tried muting my house. At first this was mildly amusing,  
> but it
> does raise some very important privacy concerns.

Not really. There's nothing this lets you do that "disable camera  
constraints" doesn't let you do already.

> 2.    Muting lots of individual, unlinked objects -- like lots of  
> ad cubes
> or billboards or whatever -- is a pain. I might jam in a Client  
> menu item
> and a keyboard accelerator, just because clicking the object pie  
> menus over
> and over is really annoying.

"Mute selected"
"Mute all objects in selected land"

> Getting the border geometry of a parcel also requires a request and  
> reply message from and two the viewer.

If you have an area selected, you have that. If you haven't swept an  
area out, or are just looking at the land info rather than the  
editor, that will be the whole parcel. That will also significantly  
reduce the complexity of the process.

I think that for a first pass, mute by object ID and having  
"selected" and "selected land" as methods of grabbing a lot of object  
IDs at once is plenty.

It would also be interesting to have "listen to mute requests on  
'channel'", with appropriate checks (eg, fetch the owner of the  
object sending the message and ignore it if it's not owned by you or  
by the owner of the land you're on) so you could have an in-world  
object doing something like this:

sensor(integer n)
{
   integer i;
   for(i = 0; i < n; i++) {
     key k = llDetectedKey(i);
     if(shouldBeMuted(k)) {
       if(llListFindList(alreadyMuted,[k]) == -1) {
	alreadyMuted += [llTime()+TIMEOUT,k];
         llSay(CHANNEL, (string)k);
       }
     }
   }
}

timer()
{
   integer n = llGetListLength(alreadyMuted);
   integer i;
   float t = llTime();
   list l = [];
   for(i = 0; i < n; i+= 2) {
     if(llList2Float(alreadyMuted,i) > t) {
       l += llList2List(alreadyMuted, i, i+1);
     }
   }
   alreadyMuted = l;
}


More information about the SLDev mailing list