aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorDiva Canto2010-01-12 09:22:58 -0800
committerDiva Canto2010-01-12 09:22:58 -0800
commit66920a9047b54db947d02f252e17409b7fc32ef0 (patch)
tree8e5b34a510885183e400796616f224faceb4a142 /OpenSim
parentFixed a couple of bugs with Appearance. Appearance is all good now. (diff)
downloadopensim-SC-66920a9047b54db947d02f252e17409b7fc32ef0.zip
opensim-SC-66920a9047b54db947d02f252e17409b7fc32ef0.tar.gz
opensim-SC-66920a9047b54db947d02f252e17409b7fc32ef0.tar.bz2
opensim-SC-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')
-rw-r--r--OpenSim/Framework/AgentCircuitData.cs54
-rw-r--r--OpenSim/Framework/AvatarAppearance.cs15
-rw-r--r--OpenSim/Framework/ChildAgentDataUpdate.cs7
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs8
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs10
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs6
-rw-r--r--OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs14
-rw-r--r--OpenSim/Services/Interfaces/IAvatarService.cs2
-rw-r--r--OpenSim/Services/InventoryService/InventoryService.cs1
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 }