aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/Manager/PhysicsActor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics/Manager/PhysicsActor.cs')
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsActor.cs47
1 files changed, 24 insertions, 23 deletions
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
index 96dcfb6..362f997 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
@@ -66,42 +66,29 @@ namespace OpenSim.Region.Physics.Manager
66 } 66 }
67 } 67 }
68 68
69 /// <summary>
70 /// Used to pass collision information to OnCollisionUpdate listeners.
71 /// </summary>
69 public class CollisionEventUpdate : EventArgs 72 public class CollisionEventUpdate : EventArgs
70 { 73 {
71 // Raising the event on the object, so don't need to provide location.. further up the tree knows that info. 74 /// <summary>
75 /// Number of collision events in this update.
76 /// </summary>
77 public int Count { get { return m_objCollisionList.Count; } }
72 78
73 public int m_colliderType; 79 public Dictionary<uint, ContactPoint> m_objCollisionList;
74 public int m_GenericStartEnd;
75 //public uint m_LocalID;
76 public Dictionary<uint, ContactPoint> m_objCollisionList = new Dictionary<uint, ContactPoint>();
77 80
78 public CollisionEventUpdate(uint localID, int colliderType, int GenericStartEnd, Dictionary<uint, ContactPoint> objCollisionList) 81 public CollisionEventUpdate(Dictionary<uint, ContactPoint> objCollisionList)
79 { 82 {
80 m_colliderType = colliderType;
81 m_GenericStartEnd = GenericStartEnd;
82 m_objCollisionList = objCollisionList; 83 m_objCollisionList = objCollisionList;
83 } 84 }
84 85
85 public CollisionEventUpdate() 86 public CollisionEventUpdate()
86 { 87 {
87 m_colliderType = (int) ActorTypes.Unknown;
88 m_GenericStartEnd = 1;
89 m_objCollisionList = new Dictionary<uint, ContactPoint>(); 88 m_objCollisionList = new Dictionary<uint, ContactPoint>();
90 } 89 }
91 90
92 public int collidertype 91 public void AddCollider(uint localID, ContactPoint contact)
93 {
94 get { return m_colliderType; }
95 set { m_colliderType = value; }
96 }
97
98 public int GenericStartEnd
99 {
100 get { return m_GenericStartEnd; }
101 set { m_GenericStartEnd = value; }
102 }
103
104 public void addCollider(uint localID, ContactPoint contact)
105 { 92 {
106 if (!m_objCollisionList.ContainsKey(localID)) 93 if (!m_objCollisionList.ContainsKey(localID))
107 { 94 {
@@ -113,6 +100,14 @@ namespace OpenSim.Region.Physics.Manager
113 m_objCollisionList[localID] = contact; 100 m_objCollisionList[localID] = contact;
114 } 101 }
115 } 102 }
103
104 /// <summary>
105 /// Clear added collision events.
106 /// </summary>
107 public void Clear()
108 {
109 m_objCollisionList.Clear();
110 }
116 } 111 }
117 112
118 public abstract class PhysicsActor 113 public abstract class PhysicsActor
@@ -127,7 +122,13 @@ namespace OpenSim.Region.Physics.Manager
127 public event VelocityUpdate OnVelocityUpdate; 122 public event VelocityUpdate OnVelocityUpdate;
128 public event OrientationUpdate OnOrientationUpdate; 123 public event OrientationUpdate OnOrientationUpdate;
129 public event RequestTerseUpdate OnRequestTerseUpdate; 124 public event RequestTerseUpdate OnRequestTerseUpdate;
125
126 /// <summary>
127 /// Subscribers to this event must synchronously handle the dictionary of collisions received, since the event
128 /// object is reused in subsequent physics frames.
129 /// </summary>
130 public event CollisionUpdate OnCollisionUpdate; 130 public event CollisionUpdate OnCollisionUpdate;
131
131 public event OutOfBounds OnOutOfBounds; 132 public event OutOfBounds OnOutOfBounds;
132#pragma warning restore 67 133#pragma warning restore 67
133 134