aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-09-03 01:11:16 +0100
committerJustin Clark-Casey (justincc)2011-09-03 01:11:16 +0100
commit5c1fa968ab954bec9860023dffc8f68baf3c0620 (patch)
treef5be7264076e9e2815cd05f6a7ba8bac2831330a /OpenSim/Region
parentComment out Scene.CleanDroppedAttachments() and calls. (diff)
downloadopensim-SC_OLD-5c1fa968ab954bec9860023dffc8f68baf3c0620.zip
opensim-SC_OLD-5c1fa968ab954bec9860023dffc8f68baf3c0620.tar.gz
opensim-SC_OLD-5c1fa968ab954bec9860023dffc8f68baf3c0620.tar.bz2
opensim-SC_OLD-5c1fa968ab954bec9860023dffc8f68baf3c0620.tar.xz
Stop NPCs losing attachments when the source avatar takes them off.
This was happening because we were using the source avatar's item IDs in the clone appearance. Switch to using the asset IDs of attachments instead for NPCs. The InventoryAccessModule and AttachmentModule had to be changed to allow rezzing of an object without an associated inventory item. Hopefully goes some way towards resolving http://opensimulator.org/mantis/view.php?id=5653
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs76
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs67
-rw-r--r--OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs56
-rw-r--r--OpenSim/Region/Framework/Interfaces/IScenePresence.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs3
5 files changed, 140 insertions, 67 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index ffe76a8..4881499 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -111,10 +111,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
111 List<AvatarAttachment> attachments = sp.Appearance.GetAttachments(); 111 List<AvatarAttachment> attachments = sp.Appearance.GetAttachments();
112 foreach (AvatarAttachment attach in attachments) 112 foreach (AvatarAttachment attach in attachments)
113 { 113 {
114 int p = attach.AttachPoint; 114 uint p = (uint)attach.AttachPoint;
115 UUID itemID = attach.ItemID; 115
116// m_log.DebugFormat(
117// "[ATTACHMENTS MODULE]: Doing initial rez of attachment with itemID {0}, assetID {1}, point {2} for {3} in {4}",
118// attach.ItemID, attach.AssetID, p, sp.Name, m_scene.RegionInfo.RegionName);
116 119
117 //UUID assetID = attach.AssetID;
118 // For some reason assetIDs are being written as Zero's in the DB -- need to track tat down 120 // For some reason assetIDs are being written as Zero's in the DB -- need to track tat down
119 // But they're not used anyway, the item is being looked up for now, so let's proceed. 121 // But they're not used anyway, the item is being looked up for now, so let's proceed.
120 //if (UUID.Zero == assetID) 122 //if (UUID.Zero == assetID)
@@ -125,7 +127,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
125 127
126 try 128 try
127 { 129 {
128 RezSingleAttachmentFromInventory(sp.ControllingClient, itemID, (uint)p); 130 // If we're an NPC then skip all the item checks and manipulations since we don't have an
131 // inventory right now.
132 if (sp.PresenceType == PresenceType.Npc)
133 RezSingleAttachmentFromInventoryInternal(sp, UUID.Zero, attach.AssetID, p);
134 else
135 RezSingleAttachmentFromInventory(sp.ControllingClient, attach.ItemID, p);
129 } 136 }
130 catch (Exception e) 137 catch (Exception e)
131 { 138 {
@@ -231,7 +238,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
231 return AttachObject(sp, group, AttachmentPt, silent); 238 return AttachObject(sp, group, AttachmentPt, silent);
232 } 239 }
233 240
234 private bool AttachObject(ScenePresence sp, SceneObjectGroup group, uint attachmentPt, bool silent) 241 private bool AttachObject(IScenePresence sp, SceneObjectGroup group, uint attachmentPt, bool silent)
235 { 242 {
236// m_log.DebugFormat( 243// m_log.DebugFormat(
237// "[ATTACHMENTS MODULE]: Attaching object {0} {1} to {2} point {3} from ground (silent = {4})", 244// "[ATTACHMENTS MODULE]: Attaching object {0} {1} to {2} point {3} from ground (silent = {4})",
@@ -284,17 +291,21 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
284 List<SceneObjectGroup> attachments = sp.GetAttachments(attachmentPt); 291 List<SceneObjectGroup> attachments = sp.GetAttachments(attachmentPt);
285 292
286 // At the moment we can only deal with a single attachment 293 // At the moment we can only deal with a single attachment
287 if (attachments.Count != 0) 294 // We also don't want to do any of the inventory operations for an NPC.
288 itemID = attachments[0].GetFromItemID(); 295 if (sp.PresenceType != PresenceType.Npc)
289 296 {
290 if (itemID != UUID.Zero) 297 if (attachments.Count != 0)
291 DetachSingleAttachmentToInv(itemID, sp); 298 itemID = attachments[0].GetFromItemID();
292 299
293 itemID = group.GetFromItemID(); 300 if (itemID != UUID.Zero)
294 if (itemID == UUID.Zero) 301 DetachSingleAttachmentToInv(itemID, sp);
295 itemID = AddSceneObjectAsAttachment(sp.ControllingClient, group).ID; 302
296 303 itemID = group.GetFromItemID();
297 ShowAttachInUserInventory(sp, attachmentPt, itemID, group); 304 if (itemID == UUID.Zero)
305 itemID = AddSceneObjectAsAttachment(sp.ControllingClient, group).ID;
306
307 ShowAttachInUserInventory(sp, attachmentPt, itemID, group);
308 }
298 309
299 AttachToAgent(sp, group, attachmentPt, attachPos, silent); 310 AttachToAgent(sp, group, attachmentPt, attachPos, silent);
300 311
@@ -312,7 +323,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
312 } 323 }
313 } 324 }
314 325
315 public ISceneEntity RezSingleAttachmentFromInventory(IClientAPI remoteClient, UUID itemID, uint AttachmentPt) 326 public ISceneEntity RezSingleAttachmentFromInventory(
327 IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
316 { 328 {
317 return RezSingleAttachmentFromInventory(remoteClient, itemID, AttachmentPt, true); 329 return RezSingleAttachmentFromInventory(remoteClient, itemID, AttachmentPt, true);
318 } 330 }
@@ -338,7 +350,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
338 // be removed when that functionality is implemented in opensim 350 // be removed when that functionality is implemented in opensim
339 AttachmentPt &= 0x7f; 351 AttachmentPt &= 0x7f;
340 352
341 SceneObjectGroup att = RezSingleAttachmentFromInventoryInternal(sp, itemID, AttachmentPt); 353 SceneObjectGroup att = RezSingleAttachmentFromInventoryInternal(sp, itemID, UUID.Zero, AttachmentPt);
342 354
343 if (updateInventoryStatus) 355 if (updateInventoryStatus)
344 { 356 {
@@ -352,14 +364,21 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
352 } 364 }
353 365
354 private SceneObjectGroup RezSingleAttachmentFromInventoryInternal( 366 private SceneObjectGroup RezSingleAttachmentFromInventoryInternal(
355 ScenePresence sp, UUID itemID, uint attachmentPt) 367 IScenePresence sp, UUID itemID, UUID assetID, uint attachmentPt)
356 { 368 {
357 IInventoryAccessModule invAccess = m_scene.RequestModuleInterface<IInventoryAccessModule>(); 369 IInventoryAccessModule invAccess = m_scene.RequestModuleInterface<IInventoryAccessModule>();
358 if (invAccess != null) 370 if (invAccess != null)
359 { 371 {
360 SceneObjectGroup objatt = invAccess.RezObject(sp.ControllingClient, 372 SceneObjectGroup objatt;
361 itemID, Vector3.Zero, Vector3.Zero, UUID.Zero, (byte)1, true, 373
362 false, false, sp.UUID, true); 374 if (itemID != UUID.Zero)
375 objatt = invAccess.RezObject(sp.ControllingClient,
376 itemID, Vector3.Zero, Vector3.Zero, UUID.Zero, (byte)1, true,
377 false, false, sp.UUID, true);
378 else
379 objatt = invAccess.RezObject(sp.ControllingClient,
380 null, assetID, Vector3.Zero, Vector3.Zero, UUID.Zero, (byte)1, true,
381 false, false, sp.UUID, true);
363 382
364// m_log.DebugFormat( 383// m_log.DebugFormat(
365// "[ATTACHMENTS MODULE]: Retrieved single object {0} for attachment to {1} on point {2}", 384// "[ATTACHMENTS MODULE]: Retrieved single object {0} for attachment to {1} on point {2}",
@@ -425,7 +444,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
425 /// <param name="attachmentPoint"></param> 444 /// <param name="attachmentPoint"></param>
426 /// <returns></returns> 445 /// <returns></returns>
427 private UUID ShowAttachInUserInventory( 446 private UUID ShowAttachInUserInventory(
428 SceneObjectGroup att, ScenePresence sp, UUID itemID, uint attachmentPoint) 447 SceneObjectGroup att, IScenePresence sp, UUID itemID, uint attachmentPoint)
429 { 448 {
430// m_log.DebugFormat( 449// m_log.DebugFormat(
431// "[ATTACHMENTS MODULE]: Updating inventory of {0} to show attachment of {1} {2} (item ID {3}) at {4}", 450// "[ATTACHMENTS MODULE]: Updating inventory of {0} to show attachment of {1} {2} (item ID {3}) at {4}",
@@ -452,7 +471,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
452 /// <param name="itemID"></param> 471 /// <param name="itemID"></param>
453 /// <param name="att"></param> 472 /// <param name="att"></param>
454 private void ShowAttachInUserInventory( 473 private void ShowAttachInUserInventory(
455 ScenePresence sp, uint AttachmentPt, UUID itemID, SceneObjectGroup att) 474 IScenePresence sp, uint AttachmentPt, UUID itemID, SceneObjectGroup att)
456 { 475 {
457// m_log.DebugFormat( 476// m_log.DebugFormat(
458// "[USER INVENTORY]: Updating attachment {0} for {1} at {2} using item ID {3}", 477// "[USER INVENTORY]: Updating attachment {0} for {1} at {2} using item ID {3}",
@@ -574,7 +593,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
574 593
575 // What makes this method odd and unique is it tries to detach using an UUID.... Yay for standards. 594 // What makes this method odd and unique is it tries to detach using an UUID.... Yay for standards.
576 // To LocalId or UUID, *THAT* is the question. How now Brown UUID?? 595 // To LocalId or UUID, *THAT* is the question. How now Brown UUID??
577 private void DetachSingleAttachmentToInv(UUID itemID, ScenePresence sp) 596 private void DetachSingleAttachmentToInv(UUID itemID, IScenePresence sp)
578 { 597 {
579 if (itemID == UUID.Zero) // If this happened, someone made a mistake.... 598 if (itemID == UUID.Zero) // If this happened, someone made a mistake....
580 return; 599 return;
@@ -697,16 +716,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
697 /// <summary> 716 /// <summary>
698 /// Attach this scene object to the given avatar. 717 /// Attach this scene object to the given avatar.
699 /// </summary> 718 /// </summary>
700 /// 719 /// <remarks>
701 /// This isn't publicly available since attachments should always perform the corresponding inventory 720 /// This isn't publicly available since attachments should always perform the corresponding inventory
702 /// operation (to show the attach in user inventory and update the asset with positional information). 721 /// operation (to show the attach in user inventory and update the asset with positional information).
703 /// 722 /// </remarks>
704 /// <param name="sp"></param> 723 /// <param name="sp"></param>
705 /// <param name="so"></param> 724 /// <param name="so"></param>
706 /// <param name="attachmentpoint"></param> 725 /// <param name="attachmentpoint"></param>
707 /// <param name="attachOffset"></param> 726 /// <param name="attachOffset"></param>
708 /// <param name="silent"></param> 727 /// <param name="silent"></param>
709 protected void AttachToAgent(ScenePresence avatar, SceneObjectGroup so, uint attachmentpoint, Vector3 attachOffset, bool silent) 728 private void AttachToAgent(
729 IScenePresence avatar, SceneObjectGroup so, uint attachmentpoint, Vector3 attachOffset, bool silent)
710 { 730 {
711// m_log.DebugFormat("[ATTACHMENTS MODULE]: Adding attachment {0} to avatar {1} in pt {2} pos {3} {4}", 731// m_log.DebugFormat("[ATTACHMENTS MODULE]: Adding attachment {0} to avatar {1} in pt {2} pos {3} {4}",
712// so.Name, avatar.Name, attachmentpoint, attachOffset, so.RootPart.AttachedPos); 732// so.Name, avatar.Name, attachmentpoint, attachOffset, so.RootPart.AttachedPos);
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 0c0b0c5..4e8466d 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -669,28 +669,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
669 return item; 669 return item;
670 } 670 }
671 671
672 /// <summary> 672 public virtual SceneObjectGroup RezObject(
673 /// Rez an object into the scene from the user's inventory 673 IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart,
674 /// </summary> 674 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
675 /// <remarks> 675 bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment)
676 /// FIXME: It would be really nice if inventory access modules didn't also actually do the work of rezzing
677 /// things to the scene. The caller should be doing that, I think.
678 /// </remarks>
679 /// <param name="remoteClient"></param>
680 /// <param name="itemID"></param>
681 /// <param name="RayEnd"></param>
682 /// <param name="RayStart"></param>
683 /// <param name="RayTargetID"></param>
684 /// <param name="BypassRayCast"></param>
685 /// <param name="RayEndIsIntersection"></param>
686 /// <param name="RezSelected"></param>
687 /// <param name="RemoveItem"></param>
688 /// <param name="fromTaskID"></param>
689 /// <param name="attachment"></param>
690 /// <returns>The SceneObjectGroup rezzed or null if rez was unsuccessful.</returns>
691 public virtual SceneObjectGroup RezObject(IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart,
692 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
693 bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment)
694 { 676 {
695// m_log.DebugFormat("[INVENTORY ACCESS MODULE]: RezObject for {0}, item {1}", remoteClient.Name, itemID); 677// m_log.DebugFormat("[INVENTORY ACCESS MODULE]: RezObject for {0}, item {1}", remoteClient.Name, itemID);
696 678
@@ -707,13 +689,34 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
707 } 689 }
708 690
709 item.Owner = remoteClient.AgentId; 691 item.Owner = remoteClient.AgentId;
710 AssetBase rezAsset = m_Scene.AssetService.Get(item.AssetID.ToString()); 692
693 return RezObject(
694 remoteClient, item, item.AssetID,
695 RayEnd, RayStart, RayTargetID, BypassRayCast, RayEndIsIntersection,
696 RezSelected, RemoveItem, fromTaskID, attachment);
697 }
698
699 public virtual SceneObjectGroup RezObject(
700 IClientAPI remoteClient, InventoryItemBase item, UUID assetID, Vector3 RayEnd, Vector3 RayStart,
701 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
702 bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment)
703 {
704 AssetBase rezAsset = m_Scene.AssetService.Get(assetID.ToString());
711 705
712 if (rezAsset == null) 706 if (rezAsset == null)
713 { 707 {
714 m_log.WarnFormat( 708 if (item != null)
715 "[InventoryAccessModule]: Could not find asset {0} for item {1} {2} for {3} in RezObject()", 709 {
716 item.AssetID, item.Name, item.ID, remoteClient.Name); 710 m_log.WarnFormat(
711 "[InventoryAccessModule]: Could not find asset {0} for item {1} {2} for {3} in RezObject()",
712 assetID, item.Name, item.ID, remoteClient.Name);
713 }
714 else
715 {
716 m_log.WarnFormat(
717 "[InventoryAccessModule]: Could not find asset {0} for {1} in RezObject()",
718 assetID, remoteClient.Name);
719 }
717 720
718 return null; 721 return null;
719 } 722 }
@@ -781,7 +784,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
781 } 784 }
782 } 785 }
783 786
784 if (!DoPreRezWhenFromItem(remoteClient, item, objlist, pos, attachment)) 787 if (item != null && !DoPreRezWhenFromItem(remoteClient, item, objlist, pos, attachment))
785 return null; 788 return null;
786 789
787 for (int i = 0; i < objlist.Count; i++) 790 for (int i = 0; i < objlist.Count; i++)
@@ -829,10 +832,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
829 832
830 group.AbsolutePosition = pos + veclist[i]; 833 group.AbsolutePosition = pos + veclist[i];
831 } 834 }
832 else
833 {
834 group.SetFromItemID(itemID);
835 }
836 835
837 SceneObjectPart rootPart = group.RootPart; 836 SceneObjectPart rootPart = group.RootPart;
838 837
@@ -855,7 +854,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
855// group.Name, group.LocalId, group.UUID, remoteClient.Name); 854// group.Name, group.LocalId, group.UUID, remoteClient.Name);
856 } 855 }
857 856
858 DoPostRezWhenFromItem(item, attachment); 857 if (item != null)
858 DoPostRezWhenFromItem(item, attachment);
859 859
860 return group; 860 return group;
861 } 861 }
@@ -973,6 +973,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
973 } 973 }
974 974
975 rootPart.TrimPermissions(); 975 rootPart.TrimPermissions();
976
977 if (isAttachment)
978 so.SetFromItemID(item.ID);
976 } 979 }
977 980
978 return true; 981 return true;
diff --git a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
index da11e61..1904011 100644
--- a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
@@ -54,10 +54,58 @@ namespace OpenSim.Region.Framework.Interfaces
54 /// FIXME: This is not very useful. It would be far more useful to return a list of items instead. 54 /// FIXME: This is not very useful. It would be far more useful to return a list of items instead.
55 /// </returns> 55 /// </returns>
56 UUID CopyToInventory(DeRezAction action, UUID folderID, List<SceneObjectGroup> objectGroups, IClientAPI remoteClient); 56 UUID CopyToInventory(DeRezAction action, UUID folderID, List<SceneObjectGroup> objectGroups, IClientAPI remoteClient);
57 57
58 SceneObjectGroup RezObject(IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart, 58 /// <summary>
59 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, 59 /// Rez an object into the scene from the user's inventory
60 bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment); 60 /// </summary>
61 /// <remarks>
62 /// FIXME: It would be really nice if inventory access modules didn't also actually do the work of rezzing
63 /// things to the scene. The caller should be doing that, I think.
64 /// </remarks>
65 /// <param name="remoteClient"></param>
66 /// <param name="itemID"></param>
67 /// <param name="RayEnd"></param>
68 /// <param name="RayStart"></param>
69 /// <param name="RayTargetID"></param>
70 /// <param name="BypassRayCast"></param>
71 /// <param name="RayEndIsIntersection"></param>
72 /// <param name="RezSelected"></param>
73 /// <param name="RemoveItem"></param>
74 /// <param name="fromTaskID"></param>
75 /// <param name="attachment"></param>
76 /// <returns>The SceneObjectGroup rezzed or null if rez was unsuccessful.</returns>
77 SceneObjectGroup RezObject(
78 IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart,
79 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
80 bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment);
81
82 /// <summary>
83 /// Rez an object into the scene from the user's inventory
84 /// </summary>
85 /// <remarks>
86 /// FIXME: It would be really nice if inventory access modules didn't also actually do the work of rezzing
87 /// things to the scene. The caller should be doing that, I think.
88 /// </remarks>
89 /// <param name="remoteClient"></param>
90 /// <param name="item">
91 /// The item from which the object asset came. Can be null, in which case pre and post rez item adjustment and checks are not performed.
92 /// </param>
93 /// <param name="assetID">The asset id for the object to rez.</param>
94 /// <param name="RayEnd"></param>
95 /// <param name="RayStart"></param>
96 /// <param name="RayTargetID"></param>
97 /// <param name="BypassRayCast"></param>
98 /// <param name="RayEndIsIntersection"></param>
99 /// <param name="RezSelected"></param>
100 /// <param name="RemoveItem"></param>
101 /// <param name="fromTaskID"></param>
102 /// <param name="attachment"></param>
103 /// <returns>The SceneObjectGroup rezzed or null if rez was unsuccessful.</returns>
104 SceneObjectGroup RezObject(
105 IClientAPI remoteClient, InventoryItemBase item, UUID assetID, Vector3 RayEnd, Vector3 RayStart,
106 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
107 bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment);
108
61 void TransferInventoryAssets(InventoryItemBase item, UUID sender, UUID receiver); 109 void TransferInventoryAssets(InventoryItemBase item, UUID sender, UUID receiver);
62 110
63 /// <summary> 111 /// <summary>
diff --git a/OpenSim/Region/Framework/Interfaces/IScenePresence.cs b/OpenSim/Region/Framework/Interfaces/IScenePresence.cs
index 91e4bf2..8913133 100644
--- a/OpenSim/Region/Framework/Interfaces/IScenePresence.cs
+++ b/OpenSim/Region/Framework/Interfaces/IScenePresence.cs
@@ -46,6 +46,11 @@ namespace OpenSim.Region.Framework.Interfaces
46 IClientAPI ControllingClient { get; } 46 IClientAPI ControllingClient { get; }
47 47
48 /// <summary> 48 /// <summary>
49 /// What type of presence is this? User, NPC, etc.
50 /// </summary>
51 PresenceType PresenceType { get; }
52
53 /// <summary>
49 /// Avatar appearance data. 54 /// Avatar appearance data.
50 /// </summary> 55 /// </summary>
51 /// <remarks> 56 /// <remarks>
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 0d284a5..1c283c7 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -75,9 +75,6 @@ namespace OpenSim.Region.Framework.Scenes
75 75
76 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 76 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
77 77
78 /// <summary>
79 /// What type of presence is this? User, NPC, etc.
80 /// </summary>
81 public PresenceType PresenceType { get; private set; } 78 public PresenceType PresenceType { get; private set; }
82 79
83// private static readonly byte[] DEFAULT_TEXTURE = AvatarAppearance.GetDefaultTexture().GetBytes(); 80// private static readonly byte[] DEFAULT_TEXTURE = AvatarAppearance.GetDefaultTexture().GetBytes();