diff options
author | UbitUmarov | 2019-07-30 23:26:29 +0100 |
---|---|---|
committer | UbitUmarov | 2019-07-30 23:26:29 +0100 |
commit | 944a785a324c203c7ca5b8bdf770ec024b7b9a14 (patch) | |
tree | 3df8e0ade9b5891d5ef5da5d671f523f19a14103 /OpenSim/Framework | |
parent | cosmetics (diff) | |
download | opensim-SC-944a785a324c203c7ca5b8bdf770ec024b7b9a14.zip opensim-SC-944a785a324c203c7ca5b8bdf770ec024b7b9a14.tar.gz opensim-SC-944a785a324c203c7ca5b8bdf770ec024b7b9a14.tar.bz2 opensim-SC-944a785a324c203c7ca5b8bdf770ec024b7b9a14.tar.xz |
now i can login on win .net4.8, but just a little drop on a large (broken) OSD ocean. some of this changes are actually good even on good JIT. Failure seems to be on same code pattern, but same points seem to vary with each JIT compilation, sometimes work, others don't, others always fail, etc
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r-- | OpenSim/Framework/AgentCircuitData.cs | 133 | ||||
-rw-r--r-- | OpenSim/Framework/AvatarAppearance.cs | 58 | ||||
-rw-r--r-- | OpenSim/Framework/AvatarAttachment.cs | 15 | ||||
-rw-r--r-- | OpenSim/Framework/AvatarWearable.cs | 6 | ||||
-rw-r--r-- | OpenSim/Framework/EntityTransferContext.cs | 14 | ||||
-rw-r--r-- | OpenSim/Framework/WearableCacheItem.cs | 11 |
6 files changed, 131 insertions, 106 deletions
diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index 330a41e..dcd5cc7 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs | |||
@@ -267,16 +267,17 @@ namespace OpenSim.Framework | |||
267 | /// <param name="args"></param> | 267 | /// <param name="args"></param> |
268 | public void UnpackAgentCircuitData(OSDMap args) | 268 | public void UnpackAgentCircuitData(OSDMap args) |
269 | { | 269 | { |
270 | if (args["agent_id"] != null) | 270 | OSD tmpOSD; |
271 | AgentID = args["agent_id"].AsUUID(); | 271 | if (args.TryGetValue("agent_id", out tmpOSD)) |
272 | if (args["base_folder"] != null) | 272 | AgentID = tmpOSD.AsUUID(); |
273 | BaseFolder = args["base_folder"].AsUUID(); | 273 | if (args.TryGetValue("base_folder", out tmpOSD)) |
274 | if (args["caps_path"] != null) | 274 | BaseFolder =tmpOSD.AsUUID(); |
275 | CapsPath = args["caps_path"].AsString(); | 275 | if (args.TryGetValue("caps_path", out tmpOSD)) |
276 | 276 | CapsPath = tmpOSD.AsString(); | |
277 | if ((args["children_seeds"] != null) && (args["children_seeds"].Type == OSDType.Array)) | 277 | |
278 | if ((args.TryGetValue("children_seeds", out tmpOSD) && tmpOSD is OSDArray)) | ||
278 | { | 279 | { |
279 | OSDArray childrenSeeds = (OSDArray)(args["children_seeds"]); | 280 | OSDArray childrenSeeds = (OSDArray)tmpOSD; |
280 | ChildrenCapSeeds = new Dictionary<ulong, string>(); | 281 | ChildrenCapSeeds = new Dictionary<ulong, string>(); |
281 | foreach (OSD o in childrenSeeds) | 282 | foreach (OSD o in childrenSeeds) |
282 | { | 283 | { |
@@ -285,53 +286,59 @@ namespace OpenSim.Framework | |||
285 | ulong handle = 0; | 286 | ulong handle = 0; |
286 | string seed = ""; | 287 | string seed = ""; |
287 | OSDMap pair = (OSDMap)o; | 288 | OSDMap pair = (OSDMap)o; |
288 | if (pair["handle"] != null) | 289 | if (pair.TryGetValue("handle", out tmpOSD)) |
289 | if (!UInt64.TryParse(pair["handle"].AsString(), out handle)) | 290 | { |
291 | if (!UInt64.TryParse(tmpOSD.AsString(), out handle)) | ||
290 | continue; | 292 | continue; |
291 | if (pair["seed"] != null) | 293 | } |
292 | seed = pair["seed"].AsString(); | ||
293 | if (!ChildrenCapSeeds.ContainsKey(handle)) | 294 | if (!ChildrenCapSeeds.ContainsKey(handle)) |
294 | ChildrenCapSeeds.Add(handle, seed); | 295 | { |
296 | if (pair.TryGetValue("seed", out tmpOSD)) | ||
297 | { | ||
298 | seed = tmpOSD.AsString(); | ||
299 | ChildrenCapSeeds.Add(handle, seed); | ||
300 | } | ||
301 | } | ||
295 | } | 302 | } |
296 | } | 303 | } |
297 | } | 304 | } |
298 | else | 305 | else |
299 | ChildrenCapSeeds = new Dictionary<ulong, string>(); | 306 | ChildrenCapSeeds = new Dictionary<ulong, string>(); |
300 | 307 | ||
301 | if (args["child"] != null) | 308 | if (args.TryGetValue("child", out tmpOSD)) |
302 | child = args["child"].AsBoolean(); | 309 | child = tmpOSD.AsBoolean(); |
303 | if (args["circuit_code"] != null) | 310 | if (args.TryGetValue("circuit_code", out tmpOSD)) |
304 | UInt32.TryParse(args["circuit_code"].AsString(), out circuitcode); | 311 | UInt32.TryParse(tmpOSD.AsString(), out circuitcode); |
305 | if (args["first_name"] != null) | 312 | if (args.TryGetValue("first_name", out tmpOSD)) |
306 | firstname = args["first_name"].AsString(); | 313 | firstname = tmpOSD.AsString(); |
307 | if (args["last_name"] != null) | 314 | if (args.TryGetValue("last_name", out tmpOSD)) |
308 | lastname = args["last_name"].AsString(); | 315 | lastname = tmpOSD.AsString(); |
309 | if (args["inventory_folder"] != null) | 316 | if (args.TryGetValue("inventory_folder", out tmpOSD)) |
310 | InventoryFolder = args["inventory_folder"].AsUUID(); | 317 | InventoryFolder = tmpOSD.AsUUID(); |
311 | if (args["secure_session_id"] != null) | 318 | if (args.TryGetValue("secure_session_id", out tmpOSD)) |
312 | SecureSessionID = args["secure_session_id"].AsUUID(); | 319 | SecureSessionID = tmpOSD.AsUUID(); |
313 | if (args["session_id"] != null) | 320 | if (args.TryGetValue("session_id", out tmpOSD)) |
314 | SessionID = args["session_id"].AsUUID(); | 321 | SessionID = tmpOSD.AsUUID(); |
315 | if (args["service_session_id"] != null) | 322 | if (args.TryGetValue("service_session_id", out tmpOSD)) |
316 | ServiceSessionID = args["service_session_id"].AsString(); | 323 | ServiceSessionID = tmpOSD.AsString(); |
317 | if (args["client_ip"] != null) | 324 | if (args.TryGetValue("client_ip", out tmpOSD)) |
318 | IPAddress = args["client_ip"].AsString(); | 325 | IPAddress = tmpOSD.AsString(); |
319 | if (args["viewer"] != null) | 326 | if (args.TryGetValue("viewer", out tmpOSD)) |
320 | Viewer = args["viewer"].AsString(); | 327 | Viewer = tmpOSD.AsString(); |
321 | if (args["channel"] != null) | 328 | if (args.TryGetValue("channel", out tmpOSD)) |
322 | Channel = args["channel"].AsString(); | 329 | Channel = tmpOSD.AsString(); |
323 | if (args["mac"] != null) | 330 | if (args.TryGetValue("mac", out tmpOSD)) |
324 | Mac = args["mac"].AsString(); | 331 | Mac = tmpOSD.AsString(); |
325 | if (args["id0"] != null) | 332 | if (args.TryGetValue("id0", out tmpOSD)) |
326 | Id0 = args["id0"].AsString(); | 333 | Id0 = tmpOSD.AsString(); |
327 | if (args["teleport_flags"] != null) | 334 | if (args.TryGetValue("teleport_flags", out tmpOSD)) |
328 | teleportFlags = args["teleport_flags"].AsUInteger(); | 335 | teleportFlags = tmpOSD.AsUInteger(); |
329 | 336 | ||
330 | if (args["start_pos"] != null) | 337 | if (args.TryGetValue("start_pos", out tmpOSD)) |
331 | Vector3.TryParse(args["start_pos"].AsString(), out startpos); | 338 | Vector3.TryParse(tmpOSD.AsString(), out startpos); |
332 | 339 | ||
333 | if(args["far"] != null) | 340 | if(args.TryGetValue("far", out tmpOSD)) |
334 | startfar = (float)args["far"].AsReal(); | 341 | startfar = (float)tmpOSD.AsReal(); |
335 | 342 | ||
336 | //m_log.InfoFormat("[AGENTCIRCUITDATA]: agentid={0}, child={1}, startpos={2}", AgentID, child, startpos); | 343 | //m_log.InfoFormat("[AGENTCIRCUITDATA]: agentid={0}, child={1}, startpos={2}", AgentID, child, startpos); |
337 | 344 | ||
@@ -342,12 +349,12 @@ namespace OpenSim.Framework | |||
342 | 349 | ||
343 | // Eventually this code should be deprecated, use full appearance | 350 | // Eventually this code should be deprecated, use full appearance |
344 | // packing in packed_appearance | 351 | // packing in packed_appearance |
345 | if (args["appearance_serial"] != null) | 352 | if (args.TryGetValue("appearance_serial", out tmpOSD)) |
346 | Appearance.Serial = args["appearance_serial"].AsInteger(); | 353 | Appearance.Serial = tmpOSD.AsInteger(); |
347 | 354 | ||
348 | if (args.ContainsKey("packed_appearance") && (args["packed_appearance"].Type == OSDType.Map)) | 355 | if (args.TryGetValue("packed_appearance", out tmpOSD) && (tmpOSD is OSDMap)) |
349 | { | 356 | { |
350 | Appearance.Unpack((OSDMap)args["packed_appearance"]); | 357 | Appearance.Unpack((OSDMap)tmpOSD); |
351 | // m_log.InfoFormat("[AGENTCIRCUITDATA] unpacked appearance"); | 358 | // m_log.InfoFormat("[AGENTCIRCUITDATA] unpacked appearance"); |
352 | } | 359 | } |
353 | else | 360 | else |
@@ -362,31 +369,31 @@ namespace OpenSim.Framework | |||
362 | 369 | ||
363 | ServiceURLs = new Dictionary<string, object>(); | 370 | ServiceURLs = new Dictionary<string, object>(); |
364 | // Try parse the new way, OSDMap | 371 | // Try parse the new way, OSDMap |
365 | if (args.ContainsKey("serviceurls") && args["serviceurls"] != null && (args["serviceurls"]).Type == OSDType.Map) | 372 | if (args.TryGetValue("serviceurls", out tmpOSD) && (tmpOSD is OSDMap)) |
366 | { | 373 | { |
367 | OSDMap urls = (OSDMap)(args["serviceurls"]); | 374 | OSDMap urls = (OSDMap)tmpOSD; |
368 | foreach (KeyValuePair<String, OSD> kvp in urls) | 375 | foreach (KeyValuePair<String, OSD> kvp in urls) |
369 | { | 376 | { |
370 | ServiceURLs[kvp.Key] = kvp.Value.AsString(); | 377 | tmpOSD = kvp.Value; |
378 | ServiceURLs[kvp.Key] = tmpOSD.AsString(); | ||
371 | //System.Console.WriteLine("XXX " + kvp.Key + "=" + ServiceURLs[kvp.Key]); | 379 | //System.Console.WriteLine("XXX " + kvp.Key + "=" + ServiceURLs[kvp.Key]); |
372 | |||
373 | } | 380 | } |
374 | } | 381 | } |
375 | // else try the old way, OSDArray | 382 | // else try the old way, OSDArray |
376 | // OBSOLETE -- soon to be deleted | 383 | // OBSOLETE -- soon to be deleted |
377 | else if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array) | 384 | else if (args.TryGetValue("service_urls", out tmpOSD) && (tmpOSD is OSDArray)) |
378 | { | 385 | { |
379 | OSDArray urls = (OSDArray)(args["service_urls"]); | 386 | OSDArray urls = (OSDArray)tmpOSD; |
380 | for (int i = 0; i < urls.Count / 2; i++) | 387 | OSD tmpOSDb; |
388 | for (int i = 0; i < urls.Count - 1; i += 2) | ||
381 | { | 389 | { |
382 | ServiceURLs[urls[i * 2].AsString()] = urls[(i * 2) + 1].AsString(); | 390 | tmpOSD = urls[i]; |
391 | tmpOSDb = urls[i + 1]; | ||
392 | ServiceURLs[tmpOSD.AsString()] = tmpOSDb.AsString(); | ||
383 | //System.Console.WriteLine("XXX " + urls[i * 2].AsString() + "=" + urls[(i * 2) + 1].AsString()); | 393 | //System.Console.WriteLine("XXX " + urls[i * 2].AsString() + "=" + urls[(i * 2) + 1].AsString()); |
384 | |||
385 | } | 394 | } |
386 | } | 395 | } |
387 | } | 396 | } |
388 | 397 | ||
389 | } | 398 | } |
390 | |||
391 | |||
392 | } | 399 | } |
diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 77a7621..f1713a6 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs | |||
@@ -796,25 +796,33 @@ namespace OpenSim.Framework | |||
796 | /// </summary> | 796 | /// </summary> |
797 | public void Unpack(OSDMap data) | 797 | public void Unpack(OSDMap data) |
798 | { | 798 | { |
799 | if ((data != null) && (data["serial"] != null)) | 799 | SetDefaultWearables(); |
800 | m_serial = data["serial"].AsInteger(); | 800 | SetDefaultTexture(); |
801 | if ((data != null) && (data["height"] != null)) | 801 | SetDefaultParams(); |
802 | m_attachments = new Dictionary<int, List<AvatarAttachment>>(); | ||
803 | |||
804 | if(data == null) | ||
805 | { | ||
806 | m_log.Warn("[AVATAR APPEARANCE]: data to unpack is null"); | ||
807 | return; | ||
808 | } | ||
809 | |||
810 | OSD tmpOSD; | ||
811 | if (data.TryGetValue("serial", out tmpOSD)) | ||
812 | m_serial = tmpOSD.AsInteger(); | ||
813 | if (data.TryGetValue("height", out tmpOSD)) | ||
802 | // m_avatarHeight = (float)data["height"].AsReal(); | 814 | // m_avatarHeight = (float)data["height"].AsReal(); |
803 | SetSize(new Vector3(0.45f,0.6f, (float)data["height"].AsReal())); | 815 | SetSize(new Vector3(0.45f,0.6f, (float)tmpOSD.AsReal())); |
804 | 816 | ||
805 | try | 817 | try |
806 | { | 818 | { |
807 | // Wearables | 819 | // Wearables |
808 | SetDefaultWearables(); | 820 | if (data.TryGetValue("wearables", out tmpOSD) && (tmpOSD is OSDArray)) |
809 | if ((data != null) && (data["wearables"] != null) && (data["wearables"]).Type == OSDType.Array) | ||
810 | { | 821 | { |
811 | OSDArray wears = (OSDArray)(data["wearables"]); | 822 | OSDArray wears = (OSDArray)tmpOSD; |
812 | 823 | m_wearables = new AvatarWearable[wears.Count]; | |
813 | int count = wears.Count; | ||
814 | |||
815 | m_wearables = new AvatarWearable[count]; | ||
816 | 824 | ||
817 | for (int i = 0; i < count; i++) | 825 | for (int i = 0; i < wears.Count; i++) |
818 | m_wearables[i] = new AvatarWearable((OSDArray)wears[i]); | 826 | m_wearables[i] = new AvatarWearable((OSDArray)wears[i]); |
819 | } | 827 | } |
820 | else | 828 | else |
@@ -823,15 +831,15 @@ namespace OpenSim.Framework | |||
823 | } | 831 | } |
824 | 832 | ||
825 | // Avatar Textures | 833 | // Avatar Textures |
826 | SetDefaultTexture(); | 834 | if (data.TryGetValue("textures", out tmpOSD) && (tmpOSD is OSDArray)) |
827 | if ((data != null) && (data["textures"] != null) && (data["textures"]).Type == OSDType.Array) | ||
828 | { | 835 | { |
829 | OSDArray textures = (OSDArray)(data["textures"]); | 836 | OSDArray textures = (OSDArray)tmpOSD; |
830 | for (int i = 0; i < AvatarAppearance.TEXTURE_COUNT && i < textures.Count; i++) | 837 | for (int i = 0; i < AvatarAppearance.TEXTURE_COUNT && i < textures.Count; i++) |
831 | { | 838 | { |
832 | UUID textureID = AppearanceManager.DEFAULT_AVATAR_TEXTURE; | 839 | UUID textureID = AppearanceManager.DEFAULT_AVATAR_TEXTURE; |
833 | if (textures[i] != null) | 840 | tmpOSD = textures[i]; |
834 | textureID = textures[i].AsUUID(); | 841 | if (tmpOSD != null) |
842 | textureID = tmpOSD.AsUUID(); | ||
835 | m_texture.CreateFace((uint)i).TextureID = new UUID(textureID); | 843 | m_texture.CreateFace((uint)i).TextureID = new UUID(textureID); |
836 | } | 844 | } |
837 | } | 845 | } |
@@ -840,18 +848,17 @@ namespace OpenSim.Framework | |||
840 | m_log.Warn("[AVATAR APPEARANCE]: failed to unpack textures"); | 848 | m_log.Warn("[AVATAR APPEARANCE]: failed to unpack textures"); |
841 | } | 849 | } |
842 | 850 | ||
843 | if ((data != null) && (data["bakedcache"] != null) && (data["bakedcache"]).Type == OSDType.Array) | 851 | if (data.TryGetValue("bakedcache", out tmpOSD) && (tmpOSD is OSDArray)) |
844 | { | 852 | { |
845 | OSDArray bakedOSDArray = (OSDArray)(data["bakedcache"]); | 853 | OSDArray bakedOSDArray = (OSDArray)tmpOSD; |
846 | m_cacheitems = WearableCacheItem.BakedFromOSD(bakedOSDArray); | 854 | m_cacheitems = WearableCacheItem.BakedFromOSD(bakedOSDArray); |
847 | } | 855 | } |
848 | 856 | ||
849 | // Visual Parameters | 857 | // Visual Parameters |
850 | SetDefaultParams(); | 858 | if (data.TryGetValue("visualparams", out tmpOSD)) |
851 | if ((data != null) && (data["visualparams"] != null)) | ||
852 | { | 859 | { |
853 | if ((data["visualparams"].Type == OSDType.Binary) || (data["visualparams"].Type == OSDType.Array)) | 860 | if (tmpOSD is OSDBinary || tmpOSD is OSDArray) |
854 | m_visualparams = data["visualparams"].AsBinary(); | 861 | m_visualparams = tmpOSD.AsBinary(); |
855 | } | 862 | } |
856 | else | 863 | else |
857 | { | 864 | { |
@@ -859,10 +866,9 @@ namespace OpenSim.Framework | |||
859 | } | 866 | } |
860 | 867 | ||
861 | // Attachments | 868 | // Attachments |
862 | m_attachments = new Dictionary<int, List<AvatarAttachment>>(); | 869 | if (data.TryGetValue("attachments", out tmpOSD) && tmpOSD is OSDArray) |
863 | if ((data != null) && (data["attachments"] != null) && (data["attachments"]).Type == OSDType.Array) | ||
864 | { | 870 | { |
865 | OSDArray attachs = (OSDArray)(data["attachments"]); | 871 | OSDArray attachs = (OSDArray)tmpOSD; |
866 | for (int i = 0; i < attachs.Count; i++) | 872 | for (int i = 0; i < attachs.Count; i++) |
867 | { | 873 | { |
868 | AvatarAttachment att = new AvatarAttachment((OSDMap)attachs[i]); | 874 | AvatarAttachment att = new AvatarAttachment((OSDMap)attachs[i]); |
diff --git a/OpenSim/Framework/AvatarAttachment.cs b/OpenSim/Framework/AvatarAttachment.cs index 07dd385..d8a0ffc 100644 --- a/OpenSim/Framework/AvatarAttachment.cs +++ b/OpenSim/Framework/AvatarAttachment.cs | |||
@@ -68,11 +68,18 @@ namespace OpenSim.Framework | |||
68 | 68 | ||
69 | public void Unpack(OSDMap args) | 69 | public void Unpack(OSDMap args) |
70 | { | 70 | { |
71 | if (args["point"] != null) | 71 | OSD tmpOSD; |
72 | AttachPoint = args["point"].AsInteger(); | 72 | if (args.TryGetValue("point", out tmpOSD)) |
73 | AttachPoint = tmpOSD.AsInteger(); | ||
74 | if (args.TryGetValue("item", out tmpOSD)) | ||
75 | ItemID = tmpOSD.AsUUID(); | ||
76 | else | ||
77 | ItemID = UUID.Zero; | ||
73 | 78 | ||
74 | ItemID = (args["item"] != null) ? args["item"].AsUUID() : UUID.Zero; | 79 | if (args.TryGetValue("asset", out tmpOSD)) |
75 | AssetID = (args["asset"] != null) ? args["asset"].AsUUID() : UUID.Zero; | 80 | AssetID = tmpOSD.AsUUID(); |
81 | else | ||
82 | AssetID = UUID.Zero; | ||
76 | } | 83 | } |
77 | } | 84 | } |
78 | } | 85 | } |
diff --git a/OpenSim/Framework/AvatarWearable.cs b/OpenSim/Framework/AvatarWearable.cs index fddd0f0..abf5759 100644 --- a/OpenSim/Framework/AvatarWearable.cs +++ b/OpenSim/Framework/AvatarWearable.cs | |||
@@ -132,10 +132,12 @@ namespace OpenSim.Framework | |||
132 | public void Unpack(OSDArray args) | 132 | public void Unpack(OSDArray args) |
133 | { | 133 | { |
134 | Clear(); | 134 | Clear(); |
135 | 135 | OSD tmpOSDA, tmpOSDB; | |
136 | foreach (OSDMap weardata in args) | 136 | foreach (OSDMap weardata in args) |
137 | { | 137 | { |
138 | Add(weardata["item"].AsUUID(), weardata["asset"].AsUUID()); | 138 | tmpOSDA = weardata["item"]; |
139 | tmpOSDB = weardata["asset"]; | ||
140 | Add(tmpOSDA.AsUUID(), tmpOSDB.AsUUID()); | ||
139 | } | 141 | } |
140 | } | 142 | } |
141 | 143 | ||
diff --git a/OpenSim/Framework/EntityTransferContext.cs b/OpenSim/Framework/EntityTransferContext.cs index 860414e..257c6d1 100644 --- a/OpenSim/Framework/EntityTransferContext.cs +++ b/OpenSim/Framework/EntityTransferContext.cs | |||
@@ -58,13 +58,13 @@ namespace OpenSim.Framework | |||
58 | public void Unpack(OSD data) | 58 | public void Unpack(OSD data) |
59 | { | 59 | { |
60 | OSDMap map = (OSDMap)data; | 60 | OSDMap map = (OSDMap)data; |
61 | 61 | OSD tmpOSD; | |
62 | if (map.ContainsKey("InboundVersion")) | 62 | if (map.TryGetValue("InboundVersion", out tmpOSD)) |
63 | InboundVersion = (float)map["InboundVersion"].AsReal(); | 63 | InboundVersion = (float)tmpOSD.AsReal(); |
64 | if (map.ContainsKey("OutboundVersion")) | 64 | if (map.TryGetValue("OutboundVersion", out tmpOSD)) |
65 | OutboundVersion = (float)map["OutboundVersion"].AsReal(); | 65 | OutboundVersion = (float)tmpOSD.AsReal(); |
66 | if (map.ContainsKey("WearablesCount")) | 66 | if (map.TryGetValue("WearablesCount", out tmpOSD)) |
67 | WearablesCount = map["WearablesCount"].AsInteger(); | 67 | WearablesCount = tmpOSD.AsInteger(); |
68 | } | 68 | } |
69 | } | 69 | } |
70 | } | 70 | } |
diff --git a/OpenSim/Framework/WearableCacheItem.cs b/OpenSim/Framework/WearableCacheItem.cs index 427e149..84b9ee9 100644 --- a/OpenSim/Framework/WearableCacheItem.cs +++ b/OpenSim/Framework/WearableCacheItem.cs | |||
@@ -161,17 +161,20 @@ namespace OpenSim.Framework | |||
161 | public static WearableCacheItem[] BakedFromOSD(OSD pInput) | 161 | public static WearableCacheItem[] BakedFromOSD(OSD pInput) |
162 | { | 162 | { |
163 | WearableCacheItem[] pcache = WearableCacheItem.GetDefaultCacheItem(); | 163 | WearableCacheItem[] pcache = WearableCacheItem.GetDefaultCacheItem(); |
164 | 164 | OSD tmpOSD; | |
165 | if (pInput.Type == OSDType.Array) | 165 | if (pInput.Type == OSDType.Array) |
166 | { | 166 | { |
167 | OSDArray itemarray = (OSDArray)pInput; | 167 | OSDArray itemarray = (OSDArray)pInput; |
168 | foreach (OSDMap item in itemarray) | 168 | foreach (OSDMap item in itemarray) |
169 | { | 169 | { |
170 | int idx = (int)item["textureindex"].AsUInteger(); | 170 | tmpOSD = item["textureindex"]; |
171 | int idx = tmpOSD.AsInteger(); | ||
171 | if (idx < 0 || idx > pcache.Length) | 172 | if (idx < 0 || idx > pcache.Length) |
172 | continue; | 173 | continue; |
173 | pcache[idx].CacheId = item["cacheid"].AsUUID(); | 174 | tmpOSD = item["cacheid"]; |
174 | pcache[idx].TextureID = item["textureid"].AsUUID(); | 175 | pcache[idx].CacheId = tmpOSD.AsUUID(); |
176 | tmpOSD = item["textureid"]; | ||
177 | pcache[idx].TextureID = tmpOSD.AsUUID(); | ||
175 | /* | 178 | /* |
176 | if (item.ContainsKey("assetdata")) | 179 | if (item.ContainsKey("assetdata")) |
177 | { | 180 | { |