aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs4
-rw-r--r--OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs4
-rw-r--r--OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs2
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs1
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs1
-rw-r--r--OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs17
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs10
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs4
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs2
-rw-r--r--OpenSim/Services/AvatarService/AvatarService.cs6
-rw-r--r--OpenSim/Services/Interfaces/IAvatarService.cs123
-rw-r--r--OpenSim/Services/LLLoginService/LLLoginService.cs2
15 files changed, 118 insertions, 68 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
index d9458af..457177d 100644
--- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
+++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
@@ -1397,7 +1397,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1397 AvatarAppearance ava = null; 1397 AvatarAppearance ava = null;
1398 AvatarData avatar = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(srca); 1398 AvatarData avatar = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(srca);
1399 if (avatar != null) 1399 if (avatar != null)
1400 ava = avatar.ToAvatarAppearance(); 1400 ava = avatar.ToAvatarAppearance(srca);
1401 1401
1402 // If the model has no associated appearance we're done. 1402 // If the model has no associated appearance we're done.
1403 1403
@@ -1639,7 +1639,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1639 // While the inventory is being fetched, setup for appearance processing 1639 // While the inventory is being fetched, setup for appearance processing
1640 AvatarData adata = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(ID); 1640 AvatarData adata = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(ID);
1641 if (adata != null) 1641 if (adata != null)
1642 mava = adata.ToAvatarAppearance(); 1642 mava = adata.ToAvatarAppearance(ID);
1643 else 1643 else
1644 mava = new AvatarAppearance(); 1644 mava = new AvatarAppearance();
1645 1645
diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs
index 5429890..b70a511 100644
--- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs
+++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs
@@ -304,7 +304,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
304 String.Format("appearance data not found for user {0} {1}", 304 String.Format("appearance data not found for user {0} {1}",
305 rdata.userProfile.FirstName, rdata.userProfile.SurName)); 305 rdata.userProfile.FirstName, rdata.userProfile.SurName));
306 } 306 }
307 rdata.userAppearance = adata.ToAvatarAppearance(); 307 rdata.userAppearance = adata.ToAvatarAppearance(rdata.userProfile.ID);
308 308
309 rdata.initXmlWriter(); 309 rdata.initXmlWriter();
310 310
@@ -446,7 +446,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
446 446
447 if (adata != null) 447 if (adata != null)
448 { 448 {
449 AvatarAppearance old = adata.ToAvatarAppearance(); 449 AvatarAppearance old = adata.ToAvatarAppearance(rdata.userProfile.ID);
450 rdata.userAppearance = new AvatarAppearance(); 450 rdata.userAppearance = new AvatarAppearance();
451 rdata.userAppearance.Owner = old.Owner; 451 rdata.userAppearance.Owner = old.Owner;
452 adata = new AvatarData(rdata.userAppearance); 452 adata = new AvatarData(rdata.userAppearance);
diff --git a/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs b/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs
index c4b3dda..821aea2 100644
--- a/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs
+++ b/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs
@@ -536,7 +536,7 @@ namespace OpenSim.Client.MXP.PacketHandler
536 agent.CapsPath = "http://localhost/"; 536 agent.CapsPath = "http://localhost/";
537 AvatarData avatar = scene.AvatarService.GetAvatar(account.PrincipalID); 537 AvatarData avatar = scene.AvatarService.GetAvatar(account.PrincipalID);
538 if (avatar != null) 538 if (avatar != null)
539 agent.Appearance = avatar.ToAvatarAppearance(); //userService.GetUserAppearance(userProfile.ID); 539 agent.Appearance = avatar.ToAvatarAppearance(account.PrincipalID); //userService.GetUserAppearance(userProfile.ID);
540 540
541 if (agent.Appearance == null) 541 if (agent.Appearance == null)
542 { 542 {
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index c6932cf..f3f715a 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -197,7 +197,6 @@ namespace OpenSim
197 LoadPlugins(); 197 LoadPlugins();
198 foreach (IApplicationPlugin plugin in m_plugins) 198 foreach (IApplicationPlugin plugin in m_plugins)
199 { 199 {
200 m_log.Debug("XXX PostInitialise " + plugin.Name);
201 plugin.PostInitialise(); 200 plugin.PostInitialise();
202 } 201 }
203 202
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 795b099..b937226 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -5474,6 +5474,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5474 // for the client session anyway, in order to protect ourselves against bad code in plugins 5474 // for the client session anyway, in order to protect ourselves against bad code in plugins
5475 try 5475 try
5476 { 5476 {
5477
5477 byte[] visualparams = new byte[appear.VisualParam.Length]; 5478 byte[] visualparams = new byte[appear.VisualParam.Length];
5478 for (int i = 0; i < appear.VisualParam.Length; i++) 5479 for (int i = 0; i < appear.VisualParam.Length; i++)
5479 visualparams[i] = appear.VisualParam[i].ParamValue; 5480 visualparams[i] = appear.VisualParam[i].ParamValue;
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index 87d0b0d..c01d66a 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -50,7 +50,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
50 //if ((profile != null) && (profile.RootFolder != null)) 50 //if ((profile != null) && (profile.RootFolder != null))
51 if (avatar != null) 51 if (avatar != null)
52 { 52 {
53 appearance = avatar.ToAvatarAppearance(); 53 appearance = avatar.ToAvatarAppearance(avatarId);
54 return true; 54 return true;
55 } 55 }
56 56
@@ -153,6 +153,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
153 /// <param name="e"></param> 153 /// <param name="e"></param>
154 public void AvatarIsWearing(Object sender, AvatarWearingArgs e) 154 public void AvatarIsWearing(Object sender, AvatarWearingArgs e)
155 { 155 {
156 m_log.DebugFormat("[APPEARANCE]: AvatarIsWearing");
157
156 IClientAPI clientView = (IClientAPI)sender; 158 IClientAPI clientView = (IClientAPI)sender;
157 ScenePresence sp = m_scene.GetScenePresence(clientView.AgentId); 159 ScenePresence sp = m_scene.GetScenePresence(clientView.AgentId);
158 160
@@ -162,12 +164,12 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
162 return; 164 return;
163 } 165 }
164 166
165 AvatarAppearance avatAppearance = null; 167 AvatarAppearance avatAppearance = sp.Appearance;
166 if (!TryGetAvatarAppearance(clientView.AgentId, out avatAppearance)) 168 //if (!TryGetAvatarAppearance(clientView.AgentId, out avatAppearance))
167 { 169 //{
168 m_log.Warn("[APPEARANCE]: We didn't seem to find the appearance, falling back to ScenePresence"); 170 // m_log.Warn("[APPEARANCE]: We didn't seem to find the appearance, falling back to ScenePresence");
169 avatAppearance = sp.Appearance; 171 // avatAppearance = sp.Appearance;
170 } 172 //}
171 173
172 //m_log.DebugFormat("[APPEARANCE]: Received wearables for {0}", clientView.Name); 174 //m_log.DebugFormat("[APPEARANCE]: Received wearables for {0}", clientView.Name);
173 175
@@ -194,6 +196,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
194 196
195 public void UpdateDatabase(UUID user, AvatarAppearance appearance) 197 public void UpdateDatabase(UUID user, AvatarAppearance appearance)
196 { 198 {
199 m_log.DebugFormat("[APPEARANCE]: UpdateDatabase");
197 AvatarData adata = new AvatarData(appearance); 200 AvatarData adata = new AvatarData(appearance);
198 m_scene.AvatarService.SetAvatar(user, adata); 201 m_scene.AvatarService.SetAvatar(user, adata);
199 202
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs
index 0c8ee61..47f19a3 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs
@@ -72,7 +72,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Avatar
72 IConfig userConfig = source.Configs["AvatarService"]; 72 IConfig userConfig = source.Configs["AvatarService"];
73 if (userConfig == null) 73 if (userConfig == null)
74 { 74 {
75 m_log.Error("[USER CONNECTOR]: AvatarService missing from OpenSim.ini"); 75 m_log.Error("[AVATAR CONNECTOR]: AvatarService missing from OpenSim.ini");
76 return; 76 return;
77 } 77 }
78 78
@@ -81,7 +81,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Avatar
81 81
82 if (serviceDll == String.Empty) 82 if (serviceDll == String.Empty)
83 { 83 {
84 m_log.Error("[USER CONNECTOR]: No LocalServiceModule named in section AvatarService"); 84 m_log.Error("[AVATAR CONNECTOR]: No LocalServiceModule named in section AvatarService");
85 return; 85 return;
86 } 86 }
87 87
@@ -92,11 +92,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Avatar
92 92
93 if (m_AvatarService == null) 93 if (m_AvatarService == null)
94 { 94 {
95 m_log.Error("[USER CONNECTOR]: Can't load user account service"); 95 m_log.Error("[AVATAR CONNECTOR]: Can't load user account service");
96 return; 96 return;
97 } 97 }
98 m_Enabled = true; 98 m_Enabled = true;
99 m_log.Info("[USER CONNECTOR]: Local avatar connector enabled"); 99 m_log.Info("[AVATAR CONNECTOR]: Local avatar connector enabled");
100 } 100 }
101 } 101 }
102 } 102 }
@@ -118,7 +118,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Avatar
118 if (!m_Enabled) 118 if (!m_Enabled)
119 return; 119 return;
120 120
121 scene.RegisterModuleInterface<IAvatarService>(m_AvatarService); 121 scene.RegisterModuleInterface<IAvatarService>(this);
122 } 122 }
123 123
124 public void RemoveRegion(Scene scene) 124 public void RemoveRegion(Scene scene)
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 3f71715..70aea75 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -2358,7 +2358,7 @@ namespace OpenSim.Region.Framework.Scenes
2358 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); 2358 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
2359 item = InventoryService.GetItem(item); 2359 item = InventoryService.GetItem(item);
2360 2360
2361 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/); 2361 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, /*item.AssetID*/ att.UUID);
2362 } 2362 }
2363 return att.UUID; 2363 return att.UUID;
2364 } 2364 }
@@ -2403,7 +2403,7 @@ namespace OpenSim.Region.Framework.Scenes
2403 // XXYY!! 2403 // XXYY!!
2404 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); 2404 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
2405 item = InventoryService.GetItem(item); 2405 item = InventoryService.GetItem(item);
2406 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/); 2406 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, /*item.AssetID*/ att.UUID);
2407 2407
2408 if (m_AvatarFactory != null) 2408 if (m_AvatarFactory != null)
2409 { 2409 {
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index db0da34..db7b3ff 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -300,7 +300,7 @@ namespace OpenSim.Region.Framework.Scenes
300 get 300 get
301 { 301 {
302 if (m_AvatarService == null) 302 if (m_AvatarService == null)
303 m_AvatarService = RequestModuleInterface<OpenSim.Services.Interfaces.IAvatarService>(); 303 m_AvatarService = RequestModuleInterface<IAvatarService>();
304 return m_AvatarService; 304 return m_AvatarService;
305 } 305 }
306 } 306 }
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
index 7d9b427..11cb8cd 100644
--- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
@@ -250,7 +250,7 @@ namespace OpenSim.Region.Framework.Scenes
250 { 250 {
251 InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate) iar.AsyncState; 251 InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate) iar.AsyncState;
252 icon.EndInvoke(iar); 252 icon.EndInvoke(iar);
253 m_log.WarnFormat(" --> InformClientOfNeighbourCompleted"); 253 //m_log.WarnFormat(" --> InformClientOfNeighbourCompleted");
254 } 254 }
255 255
256 /// <summary> 256 /// <summary>
@@ -456,7 +456,7 @@ namespace OpenSim.Region.Framework.Scenes
456 int count = 0; 456 int count = 0;
457 foreach (GridRegion neighbour in neighbours) 457 foreach (GridRegion neighbour in neighbours)
458 { 458 {
459 m_log.WarnFormat("--> Going to send child agent to {0}", neighbour.RegionName); 459 //m_log.WarnFormat("--> Going to send child agent to {0}", neighbour.RegionName);
460 // Don't do it if there's already an agent in that region 460 // Don't do it if there's already an agent in that region
461 if (newRegions.Contains(neighbour.RegionHandle)) 461 if (newRegions.Contains(neighbour.RegionHandle))
462 newAgent = true; 462 newAgent = true;
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 47eaa95..ae586a1 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2565,14 +2565,18 @@ namespace OpenSim.Region.Framework.Scenes
2565 } 2565 }
2566 } 2566 }
2567 } 2567 }
2568
2568 } 2569 }
2569 2570
2571
2570 #endregion Bake Cache Check 2572 #endregion Bake Cache Check
2571 2573
2572 m_appearance.SetAppearance(textureEntry, visualParams); 2574 m_appearance.SetAppearance(textureEntry, visualParams);
2573 if (m_appearance.AvatarHeight > 0) 2575 if (m_appearance.AvatarHeight > 0)
2574 SetHeight(m_appearance.AvatarHeight); 2576 SetHeight(m_appearance.AvatarHeight);
2577
2575 AvatarData adata = new AvatarData(m_appearance); 2578 AvatarData adata = new AvatarData(m_appearance);
2579
2576 m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); 2580 m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata);
2577 2581
2578 SendAppearanceToAllOtherAgents(); 2582 SendAppearanceToAllOtherAgents();
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
index a6d4a93..6e742f1 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
@@ -67,7 +67,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
67 AvatarData adata = scene.AvatarService.GetAvatar(target); 67 AvatarData adata = scene.AvatarService.GetAvatar(target);
68 if (adata != null) 68 if (adata != null)
69 { 69 {
70 AvatarAppearance x = adata.ToAvatarAppearance(); 70 AvatarAppearance x = adata.ToAvatarAppearance(target);
71 71
72 m_appearanceCache.Add(target, x); 72 m_appearanceCache.Add(target, x);
73 73
diff --git a/OpenSim/Services/AvatarService/AvatarService.cs b/OpenSim/Services/AvatarService/AvatarService.cs
index 0b351a2..19e662c 100644
--- a/OpenSim/Services/AvatarService/AvatarService.cs
+++ b/OpenSim/Services/AvatarService/AvatarService.cs
@@ -73,6 +73,12 @@ namespace OpenSim.Services.AvatarService
73 73
74 public bool SetAvatar(UUID principalID, AvatarData avatar) 74 public bool SetAvatar(UUID principalID, AvatarData avatar)
75 { 75 {
76 int count = 0;
77 foreach (KeyValuePair<string, string> kvp in avatar.Data)
78 if (kvp.Key.StartsWith("_"))
79 count++;
80
81 m_log.DebugFormat("[AVATAR SERVICE]: SetAvatar for {0}, attachs={1}", principalID, count);
76 m_Database.Delete("PrincipalID", principalID.ToString()); 82 m_Database.Delete("PrincipalID", principalID.ToString());
77 83
78 AvatarBaseData av = new AvatarBaseData(); 84 AvatarBaseData av = new AvatarBaseData();
diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs
index ea08ea5..564c406 100644
--- a/OpenSim/Services/Interfaces/IAvatarService.cs
+++ b/OpenSim/Services/Interfaces/IAvatarService.cs
@@ -131,17 +131,15 @@ namespace OpenSim.Services.Interfaces
131 AvatarType = 1; // SL avatars 131 AvatarType = 1; // SL avatars
132 Data = new Dictionary<string, string>(); 132 Data = new Dictionary<string, string>();
133 133
134 Data["Serial"] = appearance.Serial.ToString();
134 // Wearables 135 // Wearables
135 Data["AvatarHeight"] = appearance.AvatarHeight.ToString(); 136 Data["AvatarHeight"] = appearance.AvatarHeight.ToString();
136 Data["BodyItem"] = appearance.BodyItem.ToString(); 137 Data["BodyItem"] = appearance.BodyItem.ToString();
137 Data["EyesItem"] = appearance.EyesItem.ToString(); 138 Data["EyesItem"] = appearance.EyesItem.ToString();
138 Data["GlovesItem"] = appearance.GlovesItem.ToString(); 139 Data["GlovesItem"] = appearance.GlovesItem.ToString();
139 Data["HairItem"] = appearance.HairItem.ToString(); 140 Data["HairItem"] = appearance.HairItem.ToString();
140 //Data["HipOffset"] = appearance.HipOffset.ToString();
141 Data["JacketItem"] = appearance.JacketItem.ToString(); 141 Data["JacketItem"] = appearance.JacketItem.ToString();
142 Data["Owner"] = appearance.Owner.ToString();
143 Data["PantsItem"] = appearance.PantsItem.ToString(); 142 Data["PantsItem"] = appearance.PantsItem.ToString();
144 Data["Serial"] = appearance.Serial.ToString();
145 Data["ShirtItem"] = appearance.ShirtItem.ToString(); 143 Data["ShirtItem"] = appearance.ShirtItem.ToString();
146 Data["ShoesItem"] = appearance.ShoesItem.ToString(); 144 Data["ShoesItem"] = appearance.ShoesItem.ToString();
147 Data["SkinItem"] = appearance.SkinItem.ToString(); 145 Data["SkinItem"] = appearance.SkinItem.ToString();
@@ -150,53 +148,92 @@ namespace OpenSim.Services.Interfaces
150 Data["UnderPantsItem"] = appearance.UnderPantsItem.ToString(); 148 Data["UnderPantsItem"] = appearance.UnderPantsItem.ToString();
151 Data["UnderShirtItem"] = appearance.UnderShirtItem.ToString(); 149 Data["UnderShirtItem"] = appearance.UnderShirtItem.ToString();
152 150
151 Data["BodyAsset"] = appearance.BodyAsset.ToString();
152 Data["EyesAsset"] = appearance.EyesAsset.ToString();
153 Data["GlovesAsset"] = appearance.GlovesAsset.ToString();
154 Data["HairAsset"] = appearance.HairAsset.ToString();
155 Data["JacketAsset"] = appearance.JacketAsset.ToString();
156 Data["PantsAsset"] = appearance.PantsAsset.ToString();
157 Data["ShirtAsset"] = appearance.ShirtAsset.ToString();
158 Data["ShoesAsset"] = appearance.ShoesAsset.ToString();
159 Data["SkinAsset"] = appearance.SkinAsset.ToString();
160 Data["SkirtAsset"] = appearance.SkirtAsset.ToString();
161 Data["SocksAsset"] = appearance.SocksAsset.ToString();
162 Data["UnderPantsAsset"] = appearance.UnderPantsAsset.ToString();
163 Data["UnderShirtAsset"] = appearance.UnderShirtAsset.ToString();
164
153 // Attachments 165 // Attachments
154 Hashtable attachs = appearance.GetAttachments(); 166 Hashtable attachs = appearance.GetAttachments();
155 foreach (KeyValuePair<int, Hashtable> kvp in attachs) 167 if (attachs != null)
156 { 168 foreach (DictionaryEntry dentry in attachs)
157 Data["_ap_" + kvp.Key] = kvp.Value["item"].ToString(); 169 {
158 } 170 if (dentry.Value != null)
171 {
172 Hashtable tab = (Hashtable)dentry.Value;
173 if (tab.ContainsKey("item") && tab["item"] != null)
174 Data["_ap_" + dentry.Key] = tab["item"].ToString();
175 }
176 }
159 } 177 }
160 178
161 public AvatarAppearance ToAvatarAppearance() 179 public AvatarAppearance ToAvatarAppearance(UUID owner)
162 { 180 {
163 AvatarAppearance appearance = new AvatarAppearance(); 181 AvatarAppearance appearance = new AvatarAppearance(owner);
164 // Wearables 182 try
165 appearance.AvatarHeight = float.Parse(Data["AvatarHeight"]);
166 appearance.BodyItem = UUID.Parse(Data["BodyItem"]);
167 appearance.EyesItem = UUID.Parse(Data["EyesItem"]);
168 appearance.GlovesItem = UUID.Parse(Data["GlovesItem"]);
169 appearance.HairItem = UUID.Parse(Data["HairItem"]);
170 //appearance.HipOffset = float.Parse(Data["HipOffset"]);
171 appearance.JacketItem = UUID.Parse(Data["JacketItem"]);
172 appearance.Owner = UUID.Parse(Data["Owner"]);
173 appearance.PantsItem = UUID.Parse(Data["PantsItem"]);
174 appearance.Serial = Int32.Parse(Data["Serial"]);
175 appearance.ShirtItem = UUID.Parse(Data["ShirtItem"]);
176 appearance.ShoesItem = UUID.Parse(Data["ShoesItem"]);
177 appearance.SkinItem = UUID.Parse(Data["SkinItem"]);
178 appearance.SkirtItem = UUID.Parse(Data["SkirtItem"]);
179 appearance.SocksItem = UUID.Parse(Data["SocksItem"]);
180 appearance.UnderPantsItem = UUID.Parse(Data["UnderPantsItem"]);
181 appearance.UnderShirtItem = UUID.Parse(Data["UnderShirtItem"]);
182
183 // Attachments
184 Dictionary<string, string> attchs = new Dictionary<string, string>();
185 foreach (KeyValuePair<string, string> _kvp in Data)
186 if (_kvp.Key.StartsWith("_ap_"))
187 attchs[_kvp.Key] = _kvp.Value;
188 Hashtable aaAttachs = new Hashtable();
189 foreach (KeyValuePair<string, string> _kvp in attchs)
190 { 183 {
191 string pointStr = _kvp.Key.Substring(4); 184 appearance.Serial = Int32.Parse(Data["Serial"]);
192 int point = 0; 185
193 if (!Int32.TryParse(pointStr, out point)) 186 // Wearables
194 continue; 187 appearance.BodyItem = UUID.Parse(Data["BodyItem"]);
195 Hashtable tmp = new Hashtable(); 188 appearance.EyesItem = UUID.Parse(Data["EyesItem"]);
196 tmp["item"] = _kvp.Value; 189 appearance.GlovesItem = UUID.Parse(Data["GlovesItem"]);
197 tmp["asset"] = UUID.Zero.ToString(); 190 appearance.HairItem = UUID.Parse(Data["HairItem"]);
198 aaAttachs[point] = tmp; 191 appearance.JacketItem = UUID.Parse(Data["JacketItem"]);
192 appearance.PantsItem = UUID.Parse(Data["PantsItem"]);
193 appearance.ShirtItem = UUID.Parse(Data["ShirtItem"]);
194 appearance.ShoesItem = UUID.Parse(Data["ShoesItem"]);
195 appearance.SkinItem = UUID.Parse(Data["SkinItem"]);
196 appearance.SkirtItem = UUID.Parse(Data["SkirtItem"]);
197 appearance.SocksItem = UUID.Parse(Data["SocksItem"]);
198 appearance.UnderPantsItem = UUID.Parse(Data["UnderPantsItem"]);
199 appearance.UnderShirtItem = UUID.Parse(Data["UnderShirtItem"]);
200
201 appearance.BodyAsset = UUID.Parse(Data["BodyAsset"]);
202 appearance.EyesAsset = UUID.Parse(Data["EyesAsset"]);
203 appearance.GlovesAsset = UUID.Parse(Data["GlovesAsset"]);
204 appearance.HairAsset = UUID.Parse(Data["HairAsset"]);
205 appearance.JacketAsset = UUID.Parse(Data["JacketAsset"]);
206 appearance.PantsAsset = UUID.Parse(Data["PantsAsset"]);
207 appearance.ShirtAsset = UUID.Parse(Data["ShirtAsset"]);
208 appearance.ShoesAsset = UUID.Parse(Data["ShoesAsset"]);
209 appearance.SkinAsset = UUID.Parse(Data["SkinAsset"]);
210 appearance.SkirtAsset = UUID.Parse(Data["SkirtAsset"]);
211 appearance.SocksAsset = UUID.Parse(Data["SocksAsset"]);
212 appearance.UnderPantsAsset = UUID.Parse(Data["UnderPantsAsset"]);
213 appearance.UnderShirtAsset = UUID.Parse(Data["UnderShirtAsset"]);
214
215 // Attachments
216 Dictionary<string, string> attchs = new Dictionary<string, string>();
217 foreach (KeyValuePair<string, string> _kvp in Data)
218 if (_kvp.Key.StartsWith("_ap_"))
219 attchs[_kvp.Key] = _kvp.Value;
220 Hashtable aaAttachs = new Hashtable();
221 foreach (KeyValuePair<string, string> _kvp in attchs)
222 {
223 string pointStr = _kvp.Key.Substring(4);
224 int point = 0;
225 if (!Int32.TryParse(pointStr, out point))
226 continue;
227 Hashtable tmp = new Hashtable();
228 UUID uuid = UUID.Zero;
229 UUID.TryParse(_kvp.Value, out uuid);
230 tmp["item"] = uuid;
231 tmp["asset"] = UUID.Zero.ToString();
232 aaAttachs[point] = tmp;
233 }
234 appearance.SetAttachments(aaAttachs);
199 } 235 }
236 catch { }
200 237
201 return appearance; 238 return appearance;
202 } 239 }
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs
index 32df16d..e9c18ec 100644
--- a/OpenSim/Services/LLLoginService/LLLoginService.cs
+++ b/OpenSim/Services/LLLoginService/LLLoginService.cs
@@ -375,7 +375,7 @@ namespace OpenSim.Services.LLLoginService
375 375
376 aCircuit.AgentID = account.PrincipalID; 376 aCircuit.AgentID = account.PrincipalID;
377 if (avatar != null) 377 if (avatar != null)
378 aCircuit.Appearance = avatar.ToAvatarAppearance(); 378 aCircuit.Appearance = avatar.ToAvatarAppearance(account.PrincipalID);
379 //aCircuit.BaseFolder = irrelevant 379 //aCircuit.BaseFolder = irrelevant
380 aCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); 380 aCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath();
381 aCircuit.child = false; // the first login agent is root 381 aCircuit.child = false; // the first login agent is root