From 27f182ac54ffee16da730b2053480944f9ca5412 Mon Sep 17 00:00:00 2001 From: MW Date: Sat, 1 Dec 2007 14:20:37 +0000 Subject: Part 1 of a commit. This revision will not compile, part 2 will be added in a couple of minutes that should fix that. Some work towards persisting Avatar Appearance (what is being worn). Added OnAvatarNowWearing event to IClientAPI that is triggered by AgentIsNowWearing packets. stub code to subscribe to this event in AvatarFactoryModule. Todo: code needs to be added to AvatarFactoryModule to save the uuids to a database and then read them back when that modules TryGetIntialAvatarAppearance() method is called. Done some changes to Scene to make it easier to subclass it: including changed some private fields to protected and made some methods virtual. --- OpenSim/Region/ClientStack/ClientView.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/ClientStack') diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 86efac1..e3a40ea 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs @@ -568,6 +568,7 @@ namespace OpenSim.Region.ClientStack public event Action OnRegionHandShakeReply; public event GenericCall2 OnRequestWearables; public event SetAppearance OnSetAppearance; + public event AvatarNowWearing OnAvatarNowWearing; public event GenericCall2 OnCompleteMovementToRegion; public event UpdateAgent OnAgentUpdate; public event AgentRequestSit OnAgentRequestSit; @@ -2662,6 +2663,19 @@ namespace OpenSim.Region.ClientStack OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam); } break; + case PacketType.AgentIsNowWearing: + if (OnAvatarNowWearing != null) + { + AgentIsNowWearingPacket nowWearing = (AgentIsNowWearingPacket)Pack; + AvatarWearingArgs wearingArgs = new AvatarWearingArgs(); + for (int i = 0; i < nowWearing.WearableData.Length; i++) + { + AvatarWearingArgs.Wearable wearable = new AvatarWearingArgs.Wearable(nowWearing.WearableData[i].ItemID, nowWearing.WearableData[i].WearableType); + wearingArgs.NowWearing.Add(wearable); + } + OnAvatarNowWearing(this, wearingArgs); + } + break; case PacketType.SetAlwaysRun: SetAlwaysRunPacket run = (SetAlwaysRunPacket)Pack; @@ -3606,10 +3620,6 @@ namespace OpenSim.Region.ClientStack OpenSim.Framework.Console.MainLog.Instance.Verbose("CLIENT", "unhandled packet " + Pack.ToString()); break; - case PacketType.AgentIsNowWearing: - // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack; - OpenSim.Framework.Console.MainLog.Instance.Verbose("CLIENT", "unhandled packet " + Pack.ToString()); - break; case PacketType.ObjectScale: OpenSim.Framework.Console.MainLog.Instance.Verbose("CLIENT", "unhandled packet " + Pack.ToString()); break; -- cgit v1.1