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
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev