[Opensim-dev] Forcing attachments to rezz

Neil Canham neil at knowsense.co.uk
Thu Nov 25 09:10:51 UTC 2010


Excellent - that works.  Thanks Justin.  I won't be calling the full update
often - just once on login of each AV if they don't already have the
relevant attachment, fingers crossed I get no issues.

Neil

On Wed, Nov 24, 2010 at 11:43 PM, Justin Clark-Casey <
jjustincc at googlemail.com> wrote:

> On 24/11/10 19:01, Neil Canham wrote:
>
>> Hi
>>   I'm writing a region module for managing appearance / outfits.  One
>> issue I have is that attachments only appear
>> after a relog.  During the client login I'm using this to attach:
>>
>>  m_scenes[0].RezSingleAttachment(client, item.ID,
>> (uint)AttachmentPoint.HUDTop);
>>
>> in 0.6.9 - and I find I have to log out and then back in to see the
>> attachment, I assume because the client didn't
>> request the attachment it isn't looking out for it?  Is there any way that
>> I can force the attachment to happen (I tried
>> a ScenePresence SendWearables() but that seemed to not know about the
>> attachment)
>>
>
> In 0.7 (I think) and later, it's possible to attach (and move) hud objects
> with code like
>
> <paste>
> IAttachmentsModule module =
> client.Scene.RequestModuleInterface<IAttachmentsModule>();
> UUID sceneObjectId
>    = module.RezSingleAttachmentFromInventory(client, itemId,
> (uint)AttachmentPoint.HUDTop);
> SceneObjectGroup sog = scene.GetSceneObjectPart(sceneObjectId).ParentGroup;
>
> // Move HUD
>
> // A temporary messy solution to an occasional race where the attached hud
> sometimes ends up positioned
> // on the avatar itself and does not show up as attached within inventory.
> Thread.Sleep(1000);
>
> Vector3 newPos = new Vector3(0, 0, -0.1f);
> m_log.DebugFormat("[EXAMPLE]: Resetting HUD position to {0}", newPos);
> module.UpdateAttachmentPosition(client, sog, newPos);
> </paste>
>
> However, the attachment code has changed a lot since 0.6.9 (for starters,
> it had no separate AttachmentsModule).  You might want to try something like
>
> sog.HasGroupChanged = true;
> sog.ScheduleGroupForFullUpdate();
>
> to make sure the server sends an object notification to the viewer.
>  However, don't overuse this, since unnecessary multiple updates can
> sometimes lead to race conditions and viewer update glitches.
>
> --
> Justin Clark-Casey (justincc)
> http://justincc.org
> http://twitter.com/justincc
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20101125/e9d45f9c/attachment-0001.html>


More information about the Opensim-dev mailing list