diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 24 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 26 |
2 files changed, 18 insertions, 32 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 66fb493..dd0ca43 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -215,27 +215,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
215 | if (sp.IsChildAgent) | 215 | if (sp.IsChildAgent) |
216 | continue; | 216 | continue; |
217 | 217 | ||
218 | if (sp.ParentID != 0) | 218 | SceneObjectPart sitPart = sp.ParentPart; |
219 | { | 219 | if (sitPart != null) |
220 | // sitting avatar | 220 | coarseLocations.Add(sitPart.AbsolutePosition + sp.OffsetPosition); |
221 | SceneObjectPart sop = m_parentScene.GetSceneObjectPart(sp.ParentID); | ||
222 | if (sop != null) | ||
223 | { | ||
224 | coarseLocations.Add(sop.AbsolutePosition + sp.OffsetPosition); | ||
225 | avatarUUIDs.Add(sp.UUID); | ||
226 | } | ||
227 | else | ||
228 | { | ||
229 | // we can't find the parent.. ! arg! | ||
230 | coarseLocations.Add(sp.AbsolutePosition); | ||
231 | avatarUUIDs.Add(sp.UUID); | ||
232 | } | ||
233 | } | ||
234 | else | 221 | else |
235 | { | ||
236 | coarseLocations.Add(sp.AbsolutePosition); | 222 | coarseLocations.Add(sp.AbsolutePosition); |
237 | avatarUUIDs.Add(sp.UUID); | 223 | |
238 | } | 224 | avatarUUIDs.Add(sp.UUID); |
239 | } | 225 | } |
240 | } | 226 | } |
241 | 227 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index c9dc7fd..aab0bf0 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -432,7 +432,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
432 | { | 432 | { |
433 | get | 433 | get |
434 | { | 434 | { |
435 | if (PhysicsActor != null && m_parentID == 0) | 435 | if (PhysicsActor != null && ParentID == 0) |
436 | { | 436 | { |
437 | m_pos = PhysicsActor.Position; | 437 | m_pos = PhysicsActor.Position; |
438 | 438 | ||
@@ -504,6 +504,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
504 | // There is no offset position when not seated | 504 | // There is no offset position when not seated |
505 | if (ParentID == 0) | 505 | if (ParentID == 0) |
506 | return; | 506 | return; |
507 | |||
507 | m_pos = value; | 508 | m_pos = value; |
508 | } | 509 | } |
509 | } | 510 | } |
@@ -562,19 +563,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
562 | 563 | ||
563 | public bool IsChildAgent { get; set; } | 564 | public bool IsChildAgent { get; set; } |
564 | 565 | ||
565 | public uint ParentID | 566 | /// <summary> |
566 | { | 567 | /// If the avatar is sitting, the local ID of the prim that it's sitting on. If not sitting then zero. |
567 | get { return m_parentID; } | 568 | /// </summary> |
568 | set { m_parentID = value; } | 569 | public uint ParentID { get; set; } |
569 | } | ||
570 | private uint m_parentID; | ||
571 | 570 | ||
572 | public SceneObjectPart ParentPart | 571 | /// <summary> |
573 | { | 572 | /// If the avatar is sitting, the prim that it's sitting on. If not sitting then null. |
574 | get { return m_parentPart; } | 573 | /// </summary> |
575 | set { m_parentPart = value; } | 574 | /// <remarks> |
576 | } | 575 | /// If you use this property then you must take a reference since another thread could set it to null. |
577 | private SceneObjectPart m_parentPart = null; | 576 | /// </remarks> |
577 | public SceneObjectPart ParentPart { get; set; } | ||
578 | 578 | ||
579 | public float Health | 579 | public float Health |
580 | { | 580 | { |