diff options
author | Charles Krinke | 2008-06-07 22:37:48 +0000 |
---|---|---|
committer | Charles Krinke | 2008-06-07 22:37:48 +0000 |
commit | 0e5f2b329361e8e3c911e6171d639720e800a490 (patch) | |
tree | 64aa88bd43bd049dd0f64e6471cfc5a4777e5ee2 /OpenSim/Region/ScriptEngine/XEngine/EventManager.cs | |
parent | Mantis#1495. Thank you kindly, Kinoc for: (diff) | |
download | opensim-SC_OLD-0e5f2b329361e8e3c911e6171d639720e800a490.zip opensim-SC_OLD-0e5f2b329361e8e3c911e6171d639720e800a490.tar.gz opensim-SC_OLD-0e5f2b329361e8e3c911e6171d639720e800a490.tar.bz2 opensim-SC_OLD-0e5f2b329361e8e3c911e6171d639720e800a490.tar.xz |
Mantis#1496. Thank you kindly, Melanie for a patch that:
Adds full implementation of all llDetected* functions for sensors,
collisions and touches. Adds changed(CHANGED_REGION_RESTART) event
to allow restarting of eye-candy functionality not currently
persisted with the prim.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/XEngine/EventManager.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/EventManager.cs | 59 |
1 files changed, 41 insertions, 18 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs index 06277a1..c226a7e 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs | |||
@@ -26,6 +26,8 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections; | ||
30 | using System.Collections.Generic; | ||
29 | using libsecondlife; | 31 | using libsecondlife; |
30 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
31 | using OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney; | 33 | using OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney; |
@@ -55,6 +57,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
55 | myScriptEngine.World.EventManager.OnScriptAtTargetEvent += at_target; | 57 | myScriptEngine.World.EventManager.OnScriptAtTargetEvent += at_target; |
56 | myScriptEngine.World.EventManager.OnScriptNotAtTargetEvent += not_at_target; | 58 | myScriptEngine.World.EventManager.OnScriptNotAtTargetEvent += not_at_target; |
57 | myScriptEngine.World.EventManager.OnScriptControlEvent += control; | 59 | myScriptEngine.World.EventManager.OnScriptControlEvent += control; |
60 | myScriptEngine.World.EventManager.OnScriptColliderStart += collision_start; | ||
61 | myScriptEngine.World.EventManager.OnScriptColliding += collision; | ||
62 | myScriptEngine.World.EventManager.OnScriptCollidingEnd += collision_end; | ||
58 | IMoneyModule money=myScriptEngine.World.RequestModuleInterface<IMoneyModule>(); | 63 | IMoneyModule money=myScriptEngine.World.RequestModuleInterface<IMoneyModule>(); |
59 | if (money != null) | 64 | if (money != null) |
60 | { | 65 | { |
@@ -81,6 +86,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
81 | XDetectParams[] det = new XDetectParams[1]; | 86 | XDetectParams[] det = new XDetectParams[1]; |
82 | det[0] = new XDetectParams(); | 87 | det[0] = new XDetectParams(); |
83 | det[0].Key = remoteClient.AgentId; | 88 | det[0].Key = remoteClient.AgentId; |
89 | det[0].Populate(myScriptEngine.World); | ||
84 | 90 | ||
85 | SceneObjectPart part = myScriptEngine.World.GetSceneObjectPart( | 91 | SceneObjectPart part = myScriptEngine.World.GetSceneObjectPart( |
86 | localID); | 92 | localID); |
@@ -103,6 +109,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
103 | XDetectParams[] det = new XDetectParams[1]; | 109 | XDetectParams[] det = new XDetectParams[1]; |
104 | det[0] = new XDetectParams(); | 110 | det[0] = new XDetectParams(); |
105 | det[0].Key = remoteClient.AgentId; | 111 | det[0].Key = remoteClient.AgentId; |
112 | det[0].Populate(myScriptEngine.World); | ||
106 | det[0].OffsetPos = new LSL_Types.Vector3(offsetPos.X, | 113 | det[0].OffsetPos = new LSL_Types.Vector3(offsetPos.X, |
107 | offsetPos.Y, | 114 | offsetPos.Y, |
108 | offsetPos.Z); | 115 | offsetPos.Z); |
@@ -127,6 +134,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
127 | XDetectParams[] det = new XDetectParams[1]; | 134 | XDetectParams[] det = new XDetectParams[1]; |
128 | det[0] = new XDetectParams(); | 135 | det[0] = new XDetectParams(); |
129 | det[0].Key = remoteClient.AgentId; | 136 | det[0].Key = remoteClient.AgentId; |
137 | det[0].Populate(myScriptEngine.World); | ||
130 | 138 | ||
131 | SceneObjectPart part = myScriptEngine.World.GetSceneObjectPart( | 139 | SceneObjectPart part = myScriptEngine.World.GetSceneObjectPart( |
132 | localID); | 140 | localID); |
@@ -162,45 +170,60 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
162 | new XDetectParams[0])); | 170 | new XDetectParams[0])); |
163 | } | 171 | } |
164 | 172 | ||
165 | public void collision_start(uint localID, LLUUID itemID, | 173 | public void collision_start(uint localID, ColliderArgs col) |
166 | IClientAPI remoteClient) | ||
167 | { | 174 | { |
168 | // Add to queue for all scripts in ObjectID object | 175 | // Add to queue for all scripts in ObjectID object |
169 | XDetectParams[] det = new XDetectParams[1]; | 176 | List<XDetectParams> det = new List<XDetectParams>(); |
170 | det[0] = new XDetectParams(); | 177 | |
171 | det[0].Key = remoteClient.AgentId; | 178 | foreach (DetectedObject detobj in col.Colliders) |
179 | { | ||
180 | XDetectParams d = new XDetectParams(); | ||
181 | d.Key =detobj.keyUUID; | ||
182 | d.Populate(myScriptEngine.World); | ||
183 | det.Add(d); | ||
184 | } | ||
172 | 185 | ||
173 | myScriptEngine.PostObjectEvent(localID, new XEventParams( | 186 | myScriptEngine.PostObjectEvent(localID, new XEventParams( |
174 | "collision_start", | 187 | "collision_start", |
175 | new Object[] { new LSL_Types.LSLInteger(1) }, | 188 | new Object[] { new LSL_Types.LSLInteger(1) }, |
176 | det)); | 189 | det.ToArray())); |
177 | } | 190 | } |
178 | 191 | ||
179 | public void collision(uint localID, LLUUID itemID, | 192 | public void collision(uint localID, ColliderArgs col) |
180 | IClientAPI remoteClient) | ||
181 | { | 193 | { |
182 | // Add to queue for all scripts in ObjectID object | 194 | // Add to queue for all scripts in ObjectID object |
183 | XDetectParams[] det = new XDetectParams[1]; | 195 | List<XDetectParams> det = new List<XDetectParams>(); |
184 | det[0] = new XDetectParams(); | 196 | |
185 | det[0].Key = remoteClient.AgentId; | 197 | foreach (DetectedObject detobj in col.Colliders) |
198 | { | ||
199 | XDetectParams d = new XDetectParams(); | ||
200 | d.Key =detobj.keyUUID; | ||
201 | d.Populate(myScriptEngine.World); | ||
202 | det.Add(d); | ||
203 | } | ||
186 | 204 | ||
187 | myScriptEngine.PostObjectEvent(localID, new XEventParams( | 205 | myScriptEngine.PostObjectEvent(localID, new XEventParams( |
188 | "collision", new Object[] { new LSL_Types.LSLInteger(1) }, | 206 | "collision", new Object[] { new LSL_Types.LSLInteger(1) }, |
189 | det)); | 207 | det.ToArray())); |
190 | } | 208 | } |
191 | 209 | ||
192 | public void collision_end(uint localID, LLUUID itemID, | 210 | public void collision_end(uint localID, ColliderArgs col) |
193 | IClientAPI remoteClient) | ||
194 | { | 211 | { |
195 | // Add to queue for all scripts in ObjectID object | 212 | // Add to queue for all scripts in ObjectID object |
196 | XDetectParams[] det = new XDetectParams[1]; | 213 | List<XDetectParams> det = new List<XDetectParams>(); |
197 | det[0] = new XDetectParams(); | 214 | |
198 | det[0].Key = remoteClient.AgentId; | 215 | foreach (DetectedObject detobj in col.Colliders) |
216 | { | ||
217 | XDetectParams d = new XDetectParams(); | ||
218 | d.Key =detobj.keyUUID; | ||
219 | d.Populate(myScriptEngine.World); | ||
220 | det.Add(d); | ||
221 | } | ||
199 | 222 | ||
200 | myScriptEngine.PostObjectEvent(localID, new XEventParams( | 223 | myScriptEngine.PostObjectEvent(localID, new XEventParams( |
201 | "collision_end", | 224 | "collision_end", |
202 | new Object[] { new LSL_Types.LSLInteger(1) }, | 225 | new Object[] { new LSL_Types.LSLInteger(1) }, |
203 | det)); | 226 | det.ToArray())); |
204 | } | 227 | } |
205 | 228 | ||
206 | public void land_collision_start(uint localID, LLUUID itemID) | 229 | public void land_collision_start(uint localID, LLUUID itemID) |