diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/AvatarAppearance.cs | 73 |
1 files changed, 51 insertions, 22 deletions
diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 4f598b0..c5d9641 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs | |||
@@ -42,6 +42,8 @@ namespace OpenSim.Framework | |||
42 | { | 42 | { |
43 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 43 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
44 | 44 | ||
45 | // this is viewer capabilities and weared things dependent | ||
46 | // should be only used as initial default value ( V1 viewers ) | ||
45 | public readonly static int VISUALPARAM_COUNT = 218; | 47 | public readonly static int VISUALPARAM_COUNT = 218; |
46 | 48 | ||
47 | public readonly static int TEXTURE_COUNT = 21; | 49 | public readonly static int TEXTURE_COUNT = 21; |
@@ -240,6 +242,21 @@ namespace OpenSim.Framework | |||
240 | // } | 242 | // } |
241 | } | 243 | } |
242 | 244 | ||
245 | /// <summary> | ||
246 | /// Invalidate all of the baked textures in the appearance, useful | ||
247 | /// if you know that none are valid | ||
248 | /// </summary> | ||
249 | public virtual void ResetBakedTextures() | ||
250 | { | ||
251 | SetDefaultTexture(); | ||
252 | |||
253 | //for (int i = 0; i < BAKE_INDICES.Length; i++) | ||
254 | // { | ||
255 | // int idx = BAKE_INDICES[i]; | ||
256 | // m_texture.FaceTextures[idx].TextureID = UUID.Zero; | ||
257 | // } | ||
258 | } | ||
259 | |||
243 | protected virtual void SetDefaultTexture() | 260 | protected virtual void SetDefaultTexture() |
244 | { | 261 | { |
245 | m_texture = new Primitive.TextureEntry(new UUID(AppearanceManager.DEFAULT_AVATAR_TEXTURE)); | 262 | m_texture = new Primitive.TextureEntry(new UUID(AppearanceManager.DEFAULT_AVATAR_TEXTURE)); |
@@ -304,19 +321,30 @@ namespace OpenSim.Framework | |||
304 | // made. We determine if any of the visual parameters actually | 321 | // made. We determine if any of the visual parameters actually |
305 | // changed to know if the appearance should be saved later | 322 | // changed to know if the appearance should be saved later |
306 | bool changed = false; | 323 | bool changed = false; |
307 | for (int i = 0; i < AvatarAppearance.VISUALPARAM_COUNT; i++) | 324 | |
325 | int newsize = visualParams.Length; | ||
326 | |||
327 | if (newsize != m_visualparams.Length) | ||
308 | { | 328 | { |
309 | if (visualParams[i] != m_visualparams[i]) | 329 | changed = true; |
330 | m_visualparams = (byte[])visualParams.Clone(); | ||
331 | } | ||
332 | else | ||
333 | { | ||
334 | |||
335 | for (int i = 0; i < newsize; i++) | ||
310 | { | 336 | { |
311 | // DEBUG ON | 337 | if (visualParams[i] != m_visualparams[i]) |
312 | // m_log.WarnFormat("[AVATARAPPEARANCE] vparams changed [{0}] {1} ==> {2}", | 338 | { |
313 | // i,m_visualparams[i],visualParams[i]); | 339 | // DEBUG ON |
314 | // DEBUG OFF | 340 | // m_log.WarnFormat("[AVATARAPPEARANCE] vparams changed [{0}] {1} ==> {2}", |
315 | m_visualparams[i] = visualParams[i]; | 341 | // i,m_visualparams[i],visualParams[i]); |
316 | changed = true; | 342 | // DEBUG OFF |
343 | m_visualparams[i] = visualParams[i]; | ||
344 | changed = true; | ||
345 | } | ||
317 | } | 346 | } |
318 | } | 347 | } |
319 | |||
320 | // Reset the height if the visual parameters actually changed | 348 | // Reset the height if the visual parameters actually changed |
321 | if (changed) | 349 | if (changed) |
322 | SetHeight(); | 350 | SetHeight(); |
@@ -374,7 +402,8 @@ namespace OpenSim.Framework | |||
374 | } | 402 | } |
375 | 403 | ||
376 | s += "Visual Params: "; | 404 | s += "Visual Params: "; |
377 | for (uint j = 0; j < AvatarAppearance.VISUALPARAM_COUNT; j++) | 405 | // for (uint j = 0; j < AvatarAppearance.VISUALPARAM_COUNT; j++) |
406 | for (uint j = 0; j < m_visualparams.Length; j++) | ||
378 | s += String.Format("{0},",m_visualparams[j]); | 407 | s += String.Format("{0},",m_visualparams[j]); |
379 | s += "\n"; | 408 | s += "\n"; |
380 | 409 | ||
@@ -390,19 +419,18 @@ namespace OpenSim.Framework | |||
390 | /// </remarks> | 419 | /// </remarks> |
391 | public List<AvatarAttachment> GetAttachments() | 420 | public List<AvatarAttachment> GetAttachments() |
392 | { | 421 | { |
393 | List<AvatarAttachment> alist = new List<AvatarAttachment>(); | 422 | |
394 | 423 | ||
395 | lock (m_attachments) | 424 | lock (m_attachments) |
396 | { | 425 | { |
426 | List<AvatarAttachment> alist = new List<AvatarAttachment>(); | ||
397 | foreach (KeyValuePair<int, List<AvatarAttachment>> kvp in m_attachments) | 427 | foreach (KeyValuePair<int, List<AvatarAttachment>> kvp in m_attachments) |
398 | { | 428 | { |
399 | foreach (AvatarAttachment attach in kvp.Value) | 429 | foreach (AvatarAttachment attach in kvp.Value) |
400 | alist.Add(new AvatarAttachment(attach)); | 430 | alist.Add(new AvatarAttachment(attach)); |
401 | } | 431 | } |
402 | } | 432 | return alist; |
403 | 433 | } } | |
404 | return alist; | ||
405 | } | ||
406 | 434 | ||
407 | internal void AppendAttachment(AvatarAttachment attach) | 435 | internal void AppendAttachment(AvatarAttachment attach) |
408 | { | 436 | { |
@@ -531,7 +559,6 @@ namespace OpenSim.Framework | |||
531 | return kvp.Key; | 559 | return kvp.Key; |
532 | } | 560 | } |
533 | } | 561 | } |
534 | |||
535 | return 0; | 562 | return 0; |
536 | } | 563 | } |
537 | 564 | ||
@@ -598,12 +625,14 @@ namespace OpenSim.Framework | |||
598 | OSDBinary visualparams = new OSDBinary(m_visualparams); | 625 | OSDBinary visualparams = new OSDBinary(m_visualparams); |
599 | data["visualparams"] = visualparams; | 626 | data["visualparams"] = visualparams; |
600 | 627 | ||
601 | // Attachments | 628 | lock (m_attachments) |
602 | List<AvatarAttachment> attachments = GetAttachments(); | 629 | { |
603 | OSDArray attachs = new OSDArray(attachments.Count); | 630 | // Attachments |
604 | foreach (AvatarAttachment attach in GetAttachments()) | 631 | OSDArray attachs = new OSDArray(m_attachments.Count); |
605 | attachs.Add(attach.Pack()); | 632 | foreach (AvatarAttachment attach in GetAttachments()) |
606 | data["attachments"] = attachs; | 633 | attachs.Add(attach.Pack()); |
634 | data["attachments"] = attachs; | ||
635 | } | ||
607 | 636 | ||
608 | return data; | 637 | return data; |
609 | } | 638 | } |