diff options
Merge branch 'master' into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Region/CoreModules/Avatar')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | 63 |
2 files changed, 32 insertions, 33 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 31eb319..6122cc2 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | |||
@@ -179,7 +179,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
179 | UUID itemID = UUID.Zero; | 179 | UUID itemID = UUID.Zero; |
180 | if (sp != null) | 180 | if (sp != null) |
181 | { | 181 | { |
182 | foreach(SceneObjectGroup grp in sp.Attachments) | 182 | foreach (SceneObjectGroup grp in sp.Attachments) |
183 | { | 183 | { |
184 | if (grp.GetAttachmentPoint() == (byte)AttachmentPt) | 184 | if (grp.GetAttachmentPoint() == (byte)AttachmentPt) |
185 | { | 185 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 7f482cb..2dd444d 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | |||
@@ -61,7 +61,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
61 | { | 61 | { |
62 | scene.RegisterModuleInterface<IAvatarFactory>(this); | 62 | scene.RegisterModuleInterface<IAvatarFactory>(this); |
63 | scene.EventManager.OnNewClient += NewClient; | 63 | scene.EventManager.OnNewClient += NewClient; |
64 | 64 | ||
65 | if (config != null) | 65 | if (config != null) |
66 | { | 66 | { |
67 | IConfig sconfig = config.Configs["Startup"]; | 67 | IConfig sconfig = config.Configs["Startup"]; |
@@ -138,7 +138,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
138 | 138 | ||
139 | return cached; | 139 | return cached; |
140 | } | 140 | } |
141 | |||
142 | 141 | ||
143 | /// <summary> | 142 | /// <summary> |
144 | /// Set appearance data (textureentry and slider settings) received from the client | 143 | /// Set appearance data (textureentry and slider settings) received from the client |
@@ -155,9 +154,9 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
155 | m_log.WarnFormat("[AVATAR FACTORY MODULE]: SetAppearance unable to find presence for {0}",client.AgentId); | 154 | m_log.WarnFormat("[AVATAR FACTORY MODULE]: SetAppearance unable to find presence for {0}",client.AgentId); |
156 | return; | 155 | return; |
157 | } | 156 | } |
158 | 157 | ||
159 | bool changed = false; | 158 | bool changed = false; |
160 | 159 | ||
161 | // Process the texture entry | 160 | // Process the texture entry |
162 | if (textureEntry != null) | 161 | if (textureEntry != null) |
163 | { | 162 | { |
@@ -174,7 +173,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
174 | }); | 173 | }); |
175 | } | 174 | } |
176 | } | 175 | } |
177 | 176 | ||
178 | // Process the visual params, this may change height as well | 177 | // Process the visual params, this may change height as well |
179 | if (visualParams != null) | 178 | if (visualParams != null) |
180 | { | 179 | { |
@@ -185,14 +184,14 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
185 | sp.SetHeight(sp.Appearance.AvatarHeight); | 184 | sp.SetHeight(sp.Appearance.AvatarHeight); |
186 | } | 185 | } |
187 | } | 186 | } |
188 | 187 | ||
189 | // If something changed in the appearance then queue an appearance save | 188 | // If something changed in the appearance then queue an appearance save |
190 | if (changed) | 189 | if (changed) |
191 | QueueAppearanceSave(client.AgentId); | 190 | QueueAppearanceSave(client.AgentId); |
192 | 191 | ||
193 | // And always queue up an appearance update to send out | 192 | // And always queue up an appearance update to send out |
194 | QueueAppearanceSend(client.AgentId); | 193 | QueueAppearanceSend(client.AgentId); |
195 | 194 | ||
196 | // Send the appearance back to the avatar | 195 | // Send the appearance back to the avatar |
197 | // AvatarAppearance avp = sp.Appearance; | 196 | // AvatarAppearance avp = sp.Appearance; |
198 | // sp.ControllingClient.SendAvatarDataImmediate(sp); | 197 | // sp.ControllingClient.SendAvatarDataImmediate(sp); |
@@ -216,35 +215,35 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
216 | } | 215 | } |
217 | return true; | 216 | return true; |
218 | } | 217 | } |
219 | 218 | ||
220 | #region UpdateAppearanceTimer | 219 | #region UpdateAppearanceTimer |
221 | 220 | ||
222 | public void QueueAppearanceSend(UUID agentid) | 221 | public void QueueAppearanceSend(UUID agentid) |
223 | { | 222 | { |
224 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: Queue appearance send for {0}",agentid); | 223 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: Queue appearance send for {0}", agentid); |
225 | 224 | ||
226 | // 100 nanoseconds (ticks) we should wait | 225 | // 100 nanoseconds (ticks) we should wait |
227 | long timestamp = DateTime.Now.Ticks + Convert.ToInt64(m_sendtime * 10000000); | 226 | long timestamp = DateTime.Now.Ticks + Convert.ToInt64(m_sendtime * 10000000); |
228 | lock (m_sendqueue) | 227 | lock (m_sendqueue) |
229 | { | 228 | { |
230 | m_sendqueue[agentid] = timestamp; | 229 | m_sendqueue[agentid] = timestamp; |
231 | m_updateTimer.Start(); | 230 | m_updateTimer.Start(); |
232 | } | 231 | } |
233 | } | 232 | } |
234 | 233 | ||
235 | public void QueueAppearanceSave(UUID agentid) | 234 | public void QueueAppearanceSave(UUID agentid) |
236 | { | 235 | { |
237 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: Queue appearance save for {0}",agentid); | 236 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: Queue appearance save for {0}", agentid); |
238 | 237 | ||
239 | // 100 nanoseconds (ticks) we should wait | 238 | // 100 nanoseconds (ticks) we should wait |
240 | long timestamp = DateTime.Now.Ticks + Convert.ToInt64(m_savetime * 10000000); | 239 | long timestamp = DateTime.Now.Ticks + Convert.ToInt64(m_savetime * 10000000); |
241 | lock (m_savequeue) | 240 | lock (m_savequeue) |
242 | { | 241 | { |
243 | m_savequeue[agentid] = timestamp; | 242 | m_savequeue[agentid] = timestamp; |
244 | m_updateTimer.Start(); | 243 | m_updateTimer.Start(); |
245 | } | 244 | } |
246 | } | 245 | } |
247 | 246 | ||
248 | private void HandleAppearanceSend(UUID agentid) | 247 | private void HandleAppearanceSend(UUID agentid) |
249 | { | 248 | { |
250 | ScenePresence sp = m_scene.GetScenePresence(agentid); | 249 | ScenePresence sp = m_scene.GetScenePresence(agentid); |
@@ -254,7 +253,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
254 | return; | 253 | return; |
255 | } | 254 | } |
256 | 255 | ||
257 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: Handle appearance send for {0}", agentid); | 256 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: Handle appearance send for {0}", agentid); |
258 | 257 | ||
259 | // Send the appearance to everyone in the scene | 258 | // Send the appearance to everyone in the scene |
260 | sp.SendAppearanceToAllOtherAgents(); | 259 | sp.SendAppearanceToAllOtherAgents(); |
@@ -262,7 +261,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
262 | 261 | ||
263 | // Send the appearance back to the avatar | 262 | // Send the appearance back to the avatar |
264 | // AvatarAppearance avp = sp.Appearance; | 263 | // AvatarAppearance avp = sp.Appearance; |
265 | // sp.ControllingClient.SendAppearance(avp.Owner,avp.VisualParams,avp.Texture.GetBytes()); | 264 | // sp.ControllingClient.SendAppearance(avp.Owner, avp.VisualParams, avp.Texture.GetBytes()); |
266 | 265 | ||
267 | /* | 266 | /* |
268 | // this needs to be fixed, the flag should be on scene presence not the region module | 267 | // this needs to be fixed, the flag should be on scene presence not the region module |
@@ -290,11 +289,11 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
290 | private void HandleAppearanceUpdateTimer(object sender, EventArgs ea) | 289 | private void HandleAppearanceUpdateTimer(object sender, EventArgs ea) |
291 | { | 290 | { |
292 | long now = DateTime.Now.Ticks; | 291 | long now = DateTime.Now.Ticks; |
293 | 292 | ||
294 | lock (m_sendqueue) | 293 | lock (m_sendqueue) |
295 | { | 294 | { |
296 | Dictionary<UUID,long> sends = new Dictionary<UUID,long>(m_sendqueue); | 295 | Dictionary<UUID, long> sends = new Dictionary<UUID, long>(m_sendqueue); |
297 | foreach (KeyValuePair<UUID,long> kvp in sends) | 296 | foreach (KeyValuePair<UUID, long> kvp in sends) |
298 | { | 297 | { |
299 | if (kvp.Value < now) | 298 | if (kvp.Value < now) |
300 | { | 299 | { |
@@ -306,8 +305,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
306 | 305 | ||
307 | lock (m_savequeue) | 306 | lock (m_savequeue) |
308 | { | 307 | { |
309 | Dictionary<UUID,long> saves = new Dictionary<UUID,long>(m_savequeue); | 308 | Dictionary<UUID, long> saves = new Dictionary<UUID, long>(m_savequeue); |
310 | foreach (KeyValuePair<UUID,long> kvp in saves) | 309 | foreach (KeyValuePair<UUID, long> kvp in saves) |
311 | { | 310 | { |
312 | if (kvp.Value < now) | 311 | if (kvp.Value < now) |
313 | { | 312 | { |
@@ -320,7 +319,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
320 | if (m_savequeue.Count == 0 && m_sendqueue.Count == 0) | 319 | if (m_savequeue.Count == 0 && m_sendqueue.Count == 0) |
321 | m_updateTimer.Stop(); | 320 | m_updateTimer.Stop(); |
322 | } | 321 | } |
323 | 322 | ||
324 | #endregion | 323 | #endregion |
325 | 324 | ||
326 | /// <summary> | 325 | /// <summary> |
@@ -336,8 +335,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
336 | } | 335 | } |
337 | 336 | ||
338 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: Received request for wearables of {0}", client.AgentId); | 337 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: Received request for wearables of {0}", client.AgentId); |
339 | 338 | ||
340 | client.SendWearables(sp.Appearance.Wearables,sp.Appearance.Serial++); | 339 | client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++); |
341 | } | 340 | } |
342 | 341 | ||
343 | /// <summary> | 342 | /// <summary> |
@@ -353,17 +352,17 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
353 | m_log.WarnFormat("[AVATAR FACTORY MODULE]: AvatarIsWearing unable to find presence for {0}", client.AgentId); | 352 | m_log.WarnFormat("[AVATAR FACTORY MODULE]: AvatarIsWearing unable to find presence for {0}", client.AgentId); |
354 | return; | 353 | return; |
355 | } | 354 | } |
356 | 355 | ||
357 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: AvatarIsWearing called for {0}",client.AgentId); | 356 | // m_log.WarnFormat("[AVATAR FACTORY MODULE]: AvatarIsWearing called for {0}", client.AgentId); |
358 | 357 | ||
359 | AvatarAppearance avatAppearance = new AvatarAppearance(sp.Appearance, false); | 358 | AvatarAppearance avatAppearance = new AvatarAppearance(sp.Appearance, false); |
360 | 359 | ||
361 | foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) | 360 | foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) |
362 | { | 361 | { |
363 | if (wear.Type < AvatarWearable.MAX_WEARABLES) | 362 | if (wear.Type < AvatarWearable.MAX_WEARABLES) |
364 | avatAppearance.Wearables[wear.Type].Add(wear.ItemID,UUID.Zero); | 363 | avatAppearance.Wearables[wear.Type].Add(wear.ItemID, UUID.Zero); |
365 | } | 364 | } |
366 | 365 | ||
367 | avatAppearance.GetAssetsFrom(sp.Appearance); | 366 | avatAppearance.GetAssetsFrom(sp.Appearance); |
368 | 367 | ||
369 | // This could take awhile since it needs to pull inventory | 368 | // This could take awhile since it needs to pull inventory |
@@ -381,11 +380,11 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
381 | { | 380 | { |
382 | for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) | 381 | for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) |
383 | { | 382 | { |
384 | for (int j = 0 ; j < appearance.Wearables[j].Count ; j ++ ) | 383 | for (int j = 0; j < appearance.Wearables[j].Count; j++) |
385 | { | 384 | { |
386 | if (appearance.Wearables[i][j].ItemID == UUID.Zero) | 385 | if (appearance.Wearables[i][j].ItemID == UUID.Zero) |
387 | continue; | 386 | continue; |
388 | 387 | ||
389 | // Ignore ruth's assets | 388 | // Ignore ruth's assets |
390 | if (appearance.Wearables[i][j].ItemID == AvatarWearable.DefaultWearables[i][0].ItemID) | 389 | if (appearance.Wearables[i][j].ItemID == AvatarWearable.DefaultWearables[i][0].ItemID) |
391 | continue; | 390 | continue; |
@@ -399,9 +398,9 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
399 | else | 398 | else |
400 | { | 399 | { |
401 | m_log.ErrorFormat( | 400 | m_log.ErrorFormat( |
402 | "[AVATAR FACTORY MODULE]: Can't find inventory item {0} for {1}, setting to default", | 401 | "[AVATAR FACTORY MODULE]: Can't find inventory item {0} for {1}, setting to default", |
403 | appearance.Wearables[i][j].ItemID, (WearableType)i); | 402 | appearance.Wearables[i][j].ItemID, (WearableType)i); |
404 | 403 | ||
405 | appearance.Wearables[i].RemoveItem(appearance.Wearables[i][j].ItemID); | 404 | appearance.Wearables[i].RemoveItem(appearance.Wearables[i][j].ItemID); |
406 | } | 405 | } |
407 | } | 406 | } |