diff options
author | Diva Canto | 2010-01-12 09:22:58 -0800 |
---|---|---|
committer | Diva Canto | 2010-01-12 09:22:58 -0800 |
commit | 66920a9047b54db947d02f252e17409b7fc32ef0 (patch) | |
tree | 8e5b34a510885183e400796616f224faceb4a142 /OpenSim | |
parent | Fixed a couple of bugs with Appearance. Appearance is all good now. (diff) | |
download | opensim-SC_OLD-66920a9047b54db947d02f252e17409b7fc32ef0.zip opensim-SC_OLD-66920a9047b54db947d02f252e17409b7fc32ef0.tar.gz opensim-SC_OLD-66920a9047b54db947d02f252e17409b7fc32ef0.tar.bz2 opensim-SC_OLD-66920a9047b54db947d02f252e17409b7fc32ef0.tar.xz |
Fixed more appearance woes that showed up using remote connectors. Appearance is now being passed with AgentCircuitData, as it should be.
Diffstat (limited to 'OpenSim')
10 files changed, 93 insertions, 28 deletions
diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index c0168e2..ad29950 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs | |||
@@ -155,6 +155,31 @@ namespace OpenSim.Framework | |||
155 | args["secure_session_id"] = OSD.FromUUID(SecureSessionID); | 155 | args["secure_session_id"] = OSD.FromUUID(SecureSessionID); |
156 | args["session_id"] = OSD.FromUUID(SessionID); | 156 | args["session_id"] = OSD.FromUUID(SessionID); |
157 | args["start_pos"] = OSD.FromString(startpos.ToString()); | 157 | args["start_pos"] = OSD.FromString(startpos.ToString()); |
158 | args["appearance_serial"] = OSD.FromInteger(Appearance.Serial); | ||
159 | |||
160 | // We might not pass this in all cases... | ||
161 | if ((Appearance.Wearables != null) && (Appearance.Wearables.Length > 0)) | ||
162 | { | ||
163 | OSDArray wears = new OSDArray(Appearance.Wearables.Length); | ||
164 | foreach (AvatarWearable awear in Appearance.Wearables) | ||
165 | { | ||
166 | wears.Add(OSD.FromUUID(awear.ItemID)); | ||
167 | wears.Add(OSD.FromUUID(awear.AssetID)); | ||
168 | } | ||
169 | args["wearables"] = wears; | ||
170 | } | ||
171 | |||
172 | Dictionary<int, UUID[]> attachments = Appearance.GetAttachmentDictionary(); | ||
173 | if ((attachments != null) && (attachments.Count > 0)) | ||
174 | { | ||
175 | OSDArray attachs = new OSDArray(attachments.Count); | ||
176 | foreach (KeyValuePair<int, UUID[]> kvp in attachments) | ||
177 | { | ||
178 | AttachmentData adata = new AttachmentData(kvp.Key, kvp.Value[0], kvp.Value[1]); | ||
179 | attachs.Add(adata.PackUpdateMessage()); | ||
180 | } | ||
181 | args["attachments"] = attachs; | ||
182 | } | ||
158 | 183 | ||
159 | return args; | 184 | return args; |
160 | } | 185 | } |
@@ -209,8 +234,35 @@ namespace OpenSim.Framework | |||
209 | if (args["session_id"] != null) | 234 | if (args["session_id"] != null) |
210 | SessionID = args["session_id"].AsUUID(); | 235 | SessionID = args["session_id"].AsUUID(); |
211 | if (args["start_pos"] != null) | 236 | if (args["start_pos"] != null) |
212 | Vector3.TryParse(args["start_pos"].AsString(), out startpos); | 237 | Vector3.TryParse(args["start_pos"].AsString(), out startpos); |
213 | 238 | ||
239 | Appearance = new AvatarAppearance(AgentID); | ||
240 | if (args["appearance_serial"] != null) | ||
241 | Appearance.Serial = args["appearance_serial"].AsInteger(); | ||
242 | if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array) | ||
243 | { | ||
244 | OSDArray wears = (OSDArray)(args["wearables"]); | ||
245 | for (int i = 0; i < wears.Count / 2; i++) | ||
246 | { | ||
247 | Appearance.Wearables[i].ItemID = wears[i*2].AsUUID(); | ||
248 | Appearance.Wearables[i].AssetID = wears[(i*2)+1].AsUUID(); | ||
249 | } | ||
250 | } | ||
251 | |||
252 | if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) | ||
253 | { | ||
254 | OSDArray attachs = (OSDArray)(args["attachments"]); | ||
255 | AttachmentData[] attachments = new AttachmentData[attachs.Count]; | ||
256 | int i = 0; | ||
257 | foreach (OSD o in attachs) | ||
258 | { | ||
259 | if (o.Type == OSDType.Map) | ||
260 | { | ||
261 | attachments[i++] = new AttachmentData((OSDMap)o); | ||
262 | } | ||
263 | } | ||
264 | Appearance.SetAttachments(attachments); | ||
265 | } | ||
214 | 266 | ||
215 | } | 267 | } |
216 | } | 268 | } |
diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 56fcc15..5ec9283 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs | |||
@@ -566,6 +566,16 @@ namespace OpenSim.Framework | |||
566 | 566 | ||
567 | private Dictionary<int, UUID[]> m_attachments = new Dictionary<int, UUID[]>(); | 567 | private Dictionary<int, UUID[]> m_attachments = new Dictionary<int, UUID[]>(); |
568 | 568 | ||
569 | public void SetAttachments(AttachmentData[] data) | ||
570 | { | ||
571 | foreach (AttachmentData a in data) | ||
572 | { | ||
573 | m_attachments[a.AttachPoint] = new UUID[2]; | ||
574 | m_attachments[a.AttachPoint][0] = a.ItemID; | ||
575 | m_attachments[a.AttachPoint][1] = a.AssetID; | ||
576 | } | ||
577 | } | ||
578 | |||
569 | public void SetAttachments(Hashtable data) | 579 | public void SetAttachments(Hashtable data) |
570 | { | 580 | { |
571 | m_attachments.Clear(); | 581 | m_attachments.Clear(); |
@@ -595,6 +605,11 @@ namespace OpenSim.Framework | |||
595 | } | 605 | } |
596 | } | 606 | } |
597 | 607 | ||
608 | public Dictionary<int, UUID[]> GetAttachmentDictionary() | ||
609 | { | ||
610 | return m_attachments; | ||
611 | } | ||
612 | |||
598 | public Hashtable GetAttachments() | 613 | public Hashtable GetAttachments() |
599 | { | 614 | { |
600 | if (m_attachments.Count == 0) | 615 | if (m_attachments.Count == 0) |
diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index b6b7996..fee71f0 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs | |||
@@ -334,6 +334,7 @@ namespace OpenSim.Framework | |||
334 | args["left_axis"] = OSD.FromString(LeftAxis.ToString()); | 334 | args["left_axis"] = OSD.FromString(LeftAxis.ToString()); |
335 | args["up_axis"] = OSD.FromString(UpAxis.ToString()); | 335 | args["up_axis"] = OSD.FromString(UpAxis.ToString()); |
336 | 336 | ||
337 | |||
337 | args["changed_grid"] = OSD.FromBoolean(ChangedGrid); | 338 | args["changed_grid"] = OSD.FromBoolean(ChangedGrid); |
338 | args["far"] = OSD.FromReal(Far); | 339 | args["far"] = OSD.FromReal(Far); |
339 | args["aspect"] = OSD.FromReal(Aspect); | 340 | args["aspect"] = OSD.FromReal(Aspect); |
@@ -353,7 +354,7 @@ namespace OpenSim.Framework | |||
353 | args["agent_access"] = OSD.FromString(AgentAccess.ToString()); | 354 | args["agent_access"] = OSD.FromString(AgentAccess.ToString()); |
354 | 355 | ||
355 | args["active_group_id"] = OSD.FromUUID(ActiveGroupID); | 356 | args["active_group_id"] = OSD.FromUUID(ActiveGroupID); |
356 | 357 | ||
357 | if ((Groups != null) && (Groups.Length > 0)) | 358 | if ((Groups != null) && (Groups.Length > 0)) |
358 | { | 359 | { |
359 | OSDArray groups = new OSDArray(Groups.Length); | 360 | OSDArray groups = new OSDArray(Groups.Length); |
@@ -378,6 +379,7 @@ namespace OpenSim.Framework | |||
378 | // args["agent_textures"] = textures; | 379 | // args["agent_textures"] = textures; |
379 | //} | 380 | //} |
380 | 381 | ||
382 | |||
381 | if ((AgentTextures != null) && (AgentTextures.Length > 0)) | 383 | if ((AgentTextures != null) && (AgentTextures.Length > 0)) |
382 | args["texture_entry"] = OSD.FromBinary(AgentTextures); | 384 | args["texture_entry"] = OSD.FromBinary(AgentTextures); |
383 | 385 | ||
@@ -393,6 +395,7 @@ namespace OpenSim.Framework | |||
393 | args["wearables"] = wears; | 395 | args["wearables"] = wears; |
394 | } | 396 | } |
395 | 397 | ||
398 | |||
396 | if ((Attachments != null) && (Attachments.Length > 0)) | 399 | if ((Attachments != null) && (Attachments.Length > 0)) |
397 | { | 400 | { |
398 | OSDArray attachs = new OSDArray(Attachments.Length); | 401 | OSDArray attachs = new OSDArray(Attachments.Length); |
@@ -401,9 +404,11 @@ namespace OpenSim.Framework | |||
401 | args["attachments"] = attachs; | 404 | args["attachments"] = attachs; |
402 | } | 405 | } |
403 | 406 | ||
407 | |||
404 | if ((CallbackURI != null) && (!CallbackURI.Equals(""))) | 408 | if ((CallbackURI != null) && (!CallbackURI.Equals(""))) |
405 | args["callback_uri"] = OSD.FromString(CallbackURI); | 409 | args["callback_uri"] = OSD.FromString(CallbackURI); |
406 | 410 | ||
411 | |||
407 | return args; | 412 | return args; |
408 | } | 413 | } |
409 | 414 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs index f20a2a9..aa3b30d 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs | |||
@@ -337,15 +337,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
337 | 337 | ||
338 | private UUID GetSessionID(UUID userID) | 338 | private UUID GetSessionID(UUID userID) |
339 | { | 339 | { |
340 | ScenePresence sp = null; | ||
341 | if (m_Scene.TryGetAvatar(userID, out sp)) | ||
342 | { | ||
343 | return sp.ControllingClient.SessionId; | ||
344 | } | ||
345 | |||
346 | m_log.DebugFormat("[INVENTORY CONNECTOR]: scene presence for {0} not found", userID); | ||
347 | return UUID.Zero; | 340 | return UUID.Zero; |
348 | |||
349 | } | 341 | } |
350 | 342 | ||
351 | } | 343 | } |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index c6c6af0..723973c 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs | |||
@@ -172,12 +172,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
172 | { | 172 | { |
173 | if (s.RegionInfo.RegionHandle == destination.RegionHandle) | 173 | if (s.RegionInfo.RegionHandle == destination.RegionHandle) |
174 | { | 174 | { |
175 | m_log.DebugFormat("[LOCAL COMMS]: Found region {0} to send SendCreateChildAgent", destination.RegionName); | 175 | m_log.DebugFormat("[LOCAL SIMULATION CONNECTOR]: Found region {0} to send SendCreateChildAgent", destination.RegionName); |
176 | return s.NewUserConnection(aCircuit, teleportFlags, out reason); | 176 | return s.NewUserConnection(aCircuit, teleportFlags, out reason); |
177 | } | 177 | } |
178 | } | 178 | } |
179 | 179 | ||
180 | m_log.DebugFormat("[LOCAL COMMS]: Did not find region {0} for SendCreateChildAgent", destination.RegionName); | 180 | m_log.DebugFormat("[LOCAL SIMULATION CONNECTOR]: Did not find region {0} for SendCreateChildAgent", destination.RegionName); |
181 | reason = "Did not find region " + destination.RegionName; | 181 | reason = "Did not find region " + destination.RegionName; |
182 | return false; | 182 | return false; |
183 | } | 183 | } |
@@ -191,9 +191,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
191 | { | 191 | { |
192 | if (s.RegionInfo.RegionHandle == destination.RegionHandle) | 192 | if (s.RegionInfo.RegionHandle == destination.RegionHandle) |
193 | { | 193 | { |
194 | //m_log.DebugFormat( | 194 | m_log.DebugFormat( |
195 | // "[LOCAL COMMS]: Found region {0} {1} to send ChildAgentUpdate", | 195 | "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate", |
196 | // s.RegionInfo.RegionName, regionHandle); | 196 | s.RegionInfo.RegionName, destination.RegionHandle); |
197 | 197 | ||
198 | s.IncomingChildAgentDataUpdate(cAgentData); | 198 | s.IncomingChildAgentDataUpdate(cAgentData); |
199 | return true; | 199 | return true; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index db7b3ff..6c8068c 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -3708,8 +3708,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3708 | /// <returns>true if we handled it.</returns> | 3708 | /// <returns>true if we handled it.</returns> |
3709 | public virtual bool IncomingChildAgentDataUpdate(AgentData cAgentData) | 3709 | public virtual bool IncomingChildAgentDataUpdate(AgentData cAgentData) |
3710 | { | 3710 | { |
3711 | // m_log.DebugFormat( | 3711 | m_log.DebugFormat( |
3712 | // "[SCENE]: Incoming child agent update for {0} in {1}", cAgentData.AgentID, RegionInfo.RegionName); | 3712 | "[SCENE]: Incoming child agent update for {0} in {1}", cAgentData.AgentID, RegionInfo.RegionName); |
3713 | 3713 | ||
3714 | // We have to wait until the viewer contacts this region after receiving EAC. | 3714 | // We have to wait until the viewer contacts this region after receiving EAC. |
3715 | // That calls AddNewClient, which finally creates the ScenePresence | 3715 | // That calls AddNewClient, which finally creates the ScenePresence |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index ae586a1..c7a457e 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -2575,9 +2575,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2575 | if (m_appearance.AvatarHeight > 0) | 2575 | if (m_appearance.AvatarHeight > 0) |
2576 | SetHeight(m_appearance.AvatarHeight); | 2576 | SetHeight(m_appearance.AvatarHeight); |
2577 | 2577 | ||
2578 | AvatarData adata = new AvatarData(m_appearance); | 2578 | // This is not needed, because only the transient data changed |
2579 | 2579 | //AvatarData adata = new AvatarData(m_appearance); | |
2580 | m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); | 2580 | //m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); |
2581 | 2581 | ||
2582 | SendAppearanceToAllOtherAgents(); | 2582 | SendAppearanceToAllOtherAgents(); |
2583 | if (!m_startAnimationSet) | 2583 | if (!m_startAnimationSet) |
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index 76558aa..bd72570 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs | |||
@@ -210,12 +210,12 @@ namespace OpenSim.Services.Connectors.Simulation | |||
210 | 210 | ||
211 | public bool UpdateAgent(GridRegion destination, AgentData data) | 211 | public bool UpdateAgent(GridRegion destination, AgentData data) |
212 | { | 212 | { |
213 | return UpdateAgent(destination, data); | 213 | return UpdateAgent(destination, (IAgentData)data); |
214 | } | 214 | } |
215 | 215 | ||
216 | public bool UpdateAgent(GridRegion destination, AgentPosition data) | 216 | public bool UpdateAgent(GridRegion destination, AgentPosition data) |
217 | { | 217 | { |
218 | return UpdateAgent(destination, data); | 218 | return UpdateAgent(destination, (IAgentData)data); |
219 | } | 219 | } |
220 | 220 | ||
221 | private bool UpdateAgent(GridRegion destination, IAgentData cAgentData) | 221 | private bool UpdateAgent(GridRegion destination, IAgentData cAgentData) |
@@ -231,7 +231,7 @@ namespace OpenSim.Services.Connectors.Simulation | |||
231 | m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent update. Reason: " + e.Message); | 231 | m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent update. Reason: " + e.Message); |
232 | return false; | 232 | return false; |
233 | } | 233 | } |
234 | //Console.WriteLine(" >>> DoChildAgentUpdateCall <<< " + uri); | 234 | Console.WriteLine(" >>> DoAgentUpdateCall <<< " + uri); |
235 | 235 | ||
236 | HttpWebRequest ChildUpdateRequest = (HttpWebRequest)WebRequest.Create(uri); | 236 | HttpWebRequest ChildUpdateRequest = (HttpWebRequest)WebRequest.Create(uri); |
237 | ChildUpdateRequest.Method = "PUT"; | 237 | ChildUpdateRequest.Method = "PUT"; |
@@ -276,12 +276,12 @@ namespace OpenSim.Services.Connectors.Simulation | |||
276 | ChildUpdateRequest.ContentLength = buffer.Length; //Count bytes to send | 276 | ChildUpdateRequest.ContentLength = buffer.Length; //Count bytes to send |
277 | os = ChildUpdateRequest.GetRequestStream(); | 277 | os = ChildUpdateRequest.GetRequestStream(); |
278 | os.Write(buffer, 0, strBuffer.Length); //Send it | 278 | os.Write(buffer, 0, strBuffer.Length); //Send it |
279 | //m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Posted ChildAgentUpdate request to remote sim {0}", uri); | 279 | m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Posted AgentUpdate request to remote sim {0}", uri); |
280 | } | 280 | } |
281 | //catch (WebException ex) | 281 | catch (WebException ex) |
282 | catch | 282 | //catch |
283 | { | 283 | { |
284 | //m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on ChildAgentUpdate {0}", ex.Message); | 284 | m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on AgentUpdate {0}", ex.Message); |
285 | 285 | ||
286 | return false; | 286 | return false; |
287 | } | 287 | } |
diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index 564c406..de3bcf9 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs | |||
@@ -123,7 +123,7 @@ namespace OpenSim.Services.Interfaces | |||
123 | if (_kvp.Value != null) | 123 | if (_kvp.Value != null) |
124 | result[_kvp.Key] = _kvp.Value; | 124 | result[_kvp.Key] = _kvp.Value; |
125 | } | 125 | } |
126 | return null; | 126 | return result; |
127 | } | 127 | } |
128 | 128 | ||
129 | public AvatarData(AvatarAppearance appearance) | 129 | public AvatarData(AvatarAppearance appearance) |
diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs index 95007f1..781b89b 100644 --- a/OpenSim/Services/InventoryService/InventoryService.cs +++ b/OpenSim/Services/InventoryService/InventoryService.cs | |||
@@ -298,6 +298,7 @@ namespace OpenSim.Services.InventoryService | |||
298 | if ((folder.Type != (short)AssetType.Folder) && (folder.Type != (short)AssetType.Unknown)) | 298 | if ((folder.Type != (short)AssetType.Folder) && (folder.Type != (short)AssetType.Unknown)) |
299 | folders[(AssetType)folder.Type] = folder; | 299 | folders[(AssetType)folder.Type] = folder; |
300 | } | 300 | } |
301 | m_log.DebugFormat("[INVENTORY SERVICE]: Got {0} system folders for {1}", folders.Count, userID); | ||
301 | return folders; | 302 | return folders; |
302 | } | 303 | } |
303 | } | 304 | } |