aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/EventManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/EventManager.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/EventManager.cs637
1 files changed, 637 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/Scenes/EventManager.cs b/OpenSim/Region/Environment/Scenes/EventManager.cs
new file mode 100644
index 0000000..7ff9213
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/EventManager.cs
@@ -0,0 +1,637 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using libsecondlife;
30using OpenSim.Framework;
31using OpenSim.Region.Environment.Interfaces;
32using Caps=OpenSim.Framework.Communications.Capabilities.Caps;
33
34namespace OpenSim.Region.Environment.Scenes
35{
36 /// <summary>
37 /// A class for triggering remote scene events.
38 /// </summary>
39 public class EventManager
40 {
41 public delegate void OnFrameDelegate();
42
43 public event OnFrameDelegate OnFrame;
44
45 public delegate void ClientMovement(ScenePresence client);
46
47 public event ClientMovement OnClientMovement;
48
49 public delegate void OnTerrainTickDelegate();
50
51 public event OnTerrainTickDelegate OnTerrainTick;
52
53 public delegate void OnBackupDelegate(IRegionDataStore datastore);
54
55 public event OnBackupDelegate OnBackup;
56
57 public delegate void OnNewClientDelegate(IClientAPI client);
58
59 public event OnNewClientDelegate OnNewClient;
60
61 public delegate void OnNewPresenceDelegate(ScenePresence presence);
62
63 public event OnNewPresenceDelegate OnNewPresence;
64
65 public delegate void OnRemovePresenceDelegate(LLUUID agentId);
66
67 public event OnRemovePresenceDelegate OnRemovePresence;
68
69 public delegate void OnParcelPrimCountUpdateDelegate();
70
71 public event OnParcelPrimCountUpdateDelegate OnParcelPrimCountUpdate;
72
73 public delegate void OnParcelPrimCountAddDelegate(SceneObjectGroup obj);
74
75 public event OnParcelPrimCountAddDelegate OnParcelPrimCountAdd;
76
77 public delegate void OnPluginConsoleDelegate(string[] args);
78
79 public event OnPluginConsoleDelegate OnPluginConsole;
80
81 public delegate void OnShutdownDelegate();
82
83 public event OnShutdownDelegate OnShutdown;
84
85 public delegate void ObjectGrabDelegate(uint localID, LLVector3 offsetPos, IClientAPI remoteClient);
86 public delegate void ObjectDeGrabDelegate(uint localID, IClientAPI remoteClient);
87
88 public delegate void OnPermissionErrorDelegate(LLUUID user, string reason);
89
90 public event ObjectGrabDelegate OnObjectGrab;
91 public event ObjectDeGrabDelegate OnObjectDeGrab;
92
93 public event OnPermissionErrorDelegate OnPermissionError;
94
95 public delegate void NewRezScript(uint localID, LLUUID itemID, string script);
96
97 public event NewRezScript OnRezScript;
98
99 public delegate void RemoveScript(uint localID, LLUUID itemID);
100
101 public event RemoveScript OnRemoveScript;
102
103 public delegate bool SceneGroupMoved(LLUUID groupID, LLVector3 delta);
104
105 public event SceneGroupMoved OnSceneGroupMove;
106
107 public delegate void SceneGroupGrabed(LLUUID groupID, LLVector3 offset, LLUUID userID);
108
109 public event SceneGroupGrabed OnSceneGroupGrab;
110
111 public delegate void LandObjectAdded(ILandObject newParcel);
112
113 public event LandObjectAdded OnLandObjectAdded;
114
115 public delegate void LandObjectRemoved(LLUUID globalID);
116
117 public event LandObjectRemoved OnLandObjectRemoved;
118
119 public delegate void AvatarEnteringNewParcel(ScenePresence avatar, int localLandID, LLUUID regionID);
120
121 public event AvatarEnteringNewParcel OnAvatarEnteringNewParcel;
122
123
124 public delegate void SignificantClientMovement(IClientAPI remote_client);
125
126 public event SignificantClientMovement OnSignificantClientMovement;
127
128
129
130 public delegate void NewGridInstantMessage(GridInstantMessage message);
131
132 public event NewGridInstantMessage OnGridInstantMessageToIMModule;
133
134 public event NewGridInstantMessage OnGridInstantMessageToFriendsModule;
135
136 public event NewGridInstantMessage OnGridInstantMessageToGroupsModule;
137
138 public delegate void ClientClosed(LLUUID clientID);
139
140 public event ClientClosed OnClientClosed;
141
142 public delegate void ScriptChangedEvent(uint localID, uint change);
143
144 public event ScriptChangedEvent OnScriptChangedEvent;
145
146 public delegate void ScriptControlEvent(uint localID, LLUUID item, LLUUID avatarID, uint held, uint changed);
147
148 public event ScriptControlEvent OnScriptControlEvent;
149
150 public delegate void ScriptAtTargetEvent(uint localID, uint handle, LLVector3 targetpos, LLVector3 atpos);
151
152 public event ScriptAtTargetEvent OnScriptAtTargetEvent;
153
154 public delegate void ScriptNotAtTargetEvent(uint localID);
155
156 public event ScriptNotAtTargetEvent OnScriptNotAtTargetEvent;
157
158 public event OnNewPresenceDelegate OnMakeChildAgent;
159
160 public delegate void NewInventoryItemUploadComplete(LLUUID avatarID, LLUUID assetID, string name, int userlevel);
161
162 public event NewInventoryItemUploadComplete OnNewInventoryItemUploadComplete;
163
164 public delegate void RequestChangeWaterHeight(float height);
165
166 public event RequestChangeWaterHeight OnRequestChangeWaterHeight;
167
168 public delegate void AvatarKillData(uint KillerLocalID, ScenePresence avatar);
169
170 public event AvatarKillData OnAvatarKilled;
171
172 /// <summary>
173 /// RegisterCapsEvent is called by Scene after the Caps object
174 /// has been instantiated and before it is return to the
175 /// client and provides region modules to add their caps.
176 /// </summary>
177 public delegate void RegisterCapsEvent(LLUUID agentID, Caps caps);
178 public event RegisterCapsEvent OnRegisterCaps;
179 /// <summary>
180 /// DeregisterCapsEvent is called by Scene when the caps
181 /// handler for an agent are removed.
182 /// </summary>
183 public delegate void DeregisterCapsEvent(LLUUID agentID, Caps caps);
184 public event DeregisterCapsEvent OnDeregisterCaps;
185
186 public class MoneyTransferArgs : EventArgs
187 {
188 public LLUUID sender;
189 public LLUUID receiver;
190
191 // Always false. The SL protocol sucks.
192 public bool authenticated = false;
193
194 public int amount;
195 public int transactiontype;
196 public string description;
197
198 public MoneyTransferArgs(LLUUID asender, LLUUID areceiver, int aamount, int atransactiontype, string adescription)
199 {
200 sender = asender;
201 receiver = areceiver;
202 amount = aamount;
203 transactiontype = atransactiontype;
204 description = adescription;
205 }
206 }
207
208 public class LandBuyArgs : EventArgs
209 {
210 public LLUUID agentId = LLUUID.Zero;
211
212 public LLUUID groupId = LLUUID.Zero;
213
214 public LLUUID parcelOwnerID = LLUUID.Zero;
215
216 public bool final = false;
217 public bool groupOwned = false;
218 public bool removeContribution = false;
219 public int parcelLocalID = 0;
220 public int parcelArea = 0;
221 public int parcelPrice = 0;
222 public bool authenticated = false;
223 public bool landValidated = false;
224 public bool economyValidated = false;
225 public int transactionID = 0;
226 public int amountDebited = 0;
227
228
229 public LandBuyArgs(LLUUID pagentId, LLUUID pgroupId, bool pfinal, bool pgroupOwned,
230 bool premoveContribution, int pparcelLocalID, int pparcelArea, int pparcelPrice,
231 bool pauthenticated)
232 {
233 agentId = pagentId;
234 groupId = pgroupId;
235 final = pfinal;
236 groupOwned = pgroupOwned;
237 removeContribution = premoveContribution;
238 parcelLocalID = pparcelLocalID;
239 parcelArea = pparcelArea;
240 parcelPrice = pparcelPrice;
241 authenticated = pauthenticated;
242 }
243 }
244
245 public delegate void MoneyTransferEvent(Object sender, MoneyTransferArgs e);
246
247 public delegate void LandBuy(Object sender, LandBuyArgs e);
248
249 public event MoneyTransferEvent OnMoneyTransfer;
250 public event LandBuy OnLandBuy;
251 public event LandBuy OnValidateLandBuy;
252
253 /* Designated Event Deletage Instances */
254
255 private ScriptChangedEvent handlerScriptChangedEvent = null; //OnScriptChangedEvent;
256 private ScriptAtTargetEvent handlerScriptAtTargetEvent = null;
257 private ScriptNotAtTargetEvent handlerScriptNotAtTargetEvent = null;
258 private ClientMovement handlerClientMovement = null; //OnClientMovement;
259 private OnPermissionErrorDelegate handlerPermissionError = null; //OnPermissionError;
260 private OnPluginConsoleDelegate handlerPluginConsole = null; //OnPluginConsole;
261 private OnFrameDelegate handlerFrame = null; //OnFrame;
262 private OnNewClientDelegate handlerNewClient = null; //OnNewClient;
263 private OnNewPresenceDelegate handlerNewPresence = null; //OnNewPresence;
264 private OnRemovePresenceDelegate handlerRemovePresence = null; //OnRemovePresence;
265 private OnBackupDelegate handlerBackup = null; //OnBackup;
266 private OnParcelPrimCountUpdateDelegate handlerParcelPrimCountUpdate = null; //OnParcelPrimCountUpdate;
267 private MoneyTransferEvent handlerMoneyTransfer = null; //OnMoneyTransfer;
268 private OnParcelPrimCountAddDelegate handlerParcelPrimCountAdd = null; //OnParcelPrimCountAdd;
269 private OnShutdownDelegate handlerShutdown = null; //OnShutdown;
270 private ObjectGrabDelegate handlerObjectGrab = null; //OnObjectGrab;
271 private ObjectDeGrabDelegate handlerObjectDeGrab = null; //OnObjectDeGrab;
272 private NewRezScript handlerRezScript = null; //OnRezScript;
273 private RemoveScript handlerRemoveScript = null; //OnRemoveScript;
274 private SceneGroupMoved handlerSceneGroupMove = null; //OnSceneGroupMove;
275 private SceneGroupGrabed handlerSceneGroupGrab = null; //OnSceneGroupGrab;
276 private LandObjectAdded handlerLandObjectAdded = null; //OnLandObjectAdded;
277 private LandObjectRemoved handlerLandObjectRemoved = null; //OnLandObjectRemoved;
278 private AvatarEnteringNewParcel handlerAvatarEnteringNewParcel = null; //OnAvatarEnteringNewParcel;
279 private NewGridInstantMessage handlerGridInstantMessageToIM = null; //OnGridInstantMessageToIMModule;
280 private NewGridInstantMessage handlerGridInstantMessageToFriends = null; //OnGridInstantMessageToFriendsModule;
281 private ClientClosed handlerClientClosed = null; //OnClientClosed;
282 private OnNewPresenceDelegate handlerMakeChildAgent = null; //OnMakeChildAgent;
283 private OnTerrainTickDelegate handlerTerrainTick = null; // OnTerainTick;
284 private RegisterCapsEvent handlerRegisterCaps = null; // OnRegisterCaps;
285 private DeregisterCapsEvent handlerDeregisterCaps = null; // OnDeregisterCaps;
286 private NewInventoryItemUploadComplete handlerNewInventoryItemUpdateComplete = null;
287 private RequestChangeWaterHeight handlerRequestChangeWaterHeight = null; //OnRequestChangeWaterHeight
288 private ScriptControlEvent handlerScriptControlEvent = null;
289 private SignificantClientMovement handlerSignificantClientMovement = null;
290
291 private LandBuy handlerLandBuy = null;
292 private LandBuy handlerValidateLandBuy = null;
293 private AvatarKillData handlerAvatarKill = null;
294
295 public void TriggerOnScriptChangedEvent(uint localID, uint change)
296 {
297 handlerScriptChangedEvent = OnScriptChangedEvent;
298 if (handlerScriptChangedEvent != null)
299 handlerScriptChangedEvent(localID, change);
300 }
301
302 public void TriggerOnClientMovement(ScenePresence avatar)
303 {
304 handlerClientMovement = OnClientMovement;
305 if (handlerClientMovement != null)
306 handlerClientMovement(avatar);
307 }
308
309 public void TriggerPermissionError(LLUUID user, string reason)
310 {
311 handlerPermissionError = OnPermissionError;
312 if (handlerPermissionError != null)
313 handlerPermissionError(user, reason);
314 }
315
316 public void TriggerOnPluginConsole(string[] args)
317 {
318 handlerPluginConsole = OnPluginConsole;
319 if (handlerPluginConsole != null)
320 handlerPluginConsole(args);
321 }
322
323 public void TriggerOnFrame()
324 {
325 handlerFrame = OnFrame;
326 if (handlerFrame != null)
327 {
328 handlerFrame();
329 }
330 }
331
332 public void TriggerOnNewClient(IClientAPI client)
333 {
334 handlerNewClient = OnNewClient;
335 if (handlerNewClient != null)
336 handlerNewClient(client);
337 }
338
339 public void TriggerOnNewPresence(ScenePresence presence)
340 {
341 handlerNewPresence = OnNewPresence;
342 if (handlerNewPresence != null)
343 handlerNewPresence(presence);
344 }
345
346 public void TriggerOnRemovePresence(LLUUID agentId)
347 {
348 handlerRemovePresence = OnRemovePresence;
349 if (handlerRemovePresence != null)
350 {
351 handlerRemovePresence(agentId);
352 }
353 }
354
355 public void TriggerOnBackup(IRegionDataStore dstore)
356 {
357 handlerBackup = OnBackup;
358 if (handlerBackup != null)
359 {
360 handlerBackup(dstore);
361 }
362 }
363
364 public void TriggerParcelPrimCountUpdate()
365 {
366 handlerParcelPrimCountUpdate = OnParcelPrimCountUpdate;
367 if (handlerParcelPrimCountUpdate != null)
368 {
369 handlerParcelPrimCountUpdate();
370 }
371 }
372
373 public void TriggerMoneyTransfer(Object sender, MoneyTransferArgs e)
374 {
375 handlerMoneyTransfer = OnMoneyTransfer;
376 if (handlerMoneyTransfer != null)
377 {
378 handlerMoneyTransfer(sender, e);
379 }
380 }
381
382 public void TriggerTerrainTick()
383 {
384 handlerTerrainTick = OnTerrainTick;
385 if (handlerTerrainTick != null)
386 {
387 handlerTerrainTick();
388 }
389 }
390
391 public void TriggerParcelPrimCountAdd(SceneObjectGroup obj)
392 {
393 handlerParcelPrimCountAdd = OnParcelPrimCountAdd;
394 if (handlerParcelPrimCountAdd != null)
395 {
396 handlerParcelPrimCountAdd(obj);
397 }
398 }
399
400 public void TriggerShutdown()
401 {
402 handlerShutdown = OnShutdown;
403 if (handlerShutdown != null)
404 handlerShutdown();
405 }
406
407 public void TriggerObjectGrab(uint localID, LLVector3 offsetPos, IClientAPI remoteClient)
408 {
409 handlerObjectGrab = OnObjectGrab;
410 if (handlerObjectGrab != null)
411 {
412 handlerObjectGrab(localID, offsetPos, remoteClient);
413 }
414 }
415
416 public void TriggerObjectDeGrab(uint localID, IClientAPI remoteClient)
417 {
418 handlerObjectDeGrab = OnObjectDeGrab;
419 if (handlerObjectDeGrab != null)
420 {
421 handlerObjectDeGrab(localID, remoteClient);
422 }
423 }
424
425 public void TriggerRezScript(uint localID, LLUUID itemID, string script)
426 {
427 handlerRezScript = OnRezScript;
428 if (handlerRezScript != null)
429 {
430 handlerRezScript(localID, itemID, script);
431 }
432 }
433
434 public void TriggerRemoveScript(uint localID, LLUUID itemID)
435 {
436 handlerRemoveScript = OnRemoveScript;
437 if (handlerRemoveScript != null)
438 {
439 handlerRemoveScript(localID, itemID);
440 }
441 }
442
443 public bool TriggerGroupMove(LLUUID groupID, LLVector3 delta)
444 {
445 handlerSceneGroupMove = OnSceneGroupMove;
446
447 if (handlerSceneGroupMove != null)
448 {
449 return handlerSceneGroupMove(groupID, delta);
450 }
451 return true;
452 }
453
454 public void TriggerGroupGrab(LLUUID groupID, LLVector3 offset, LLUUID userID)
455 {
456 handlerSceneGroupGrab = OnSceneGroupGrab;
457 if (handlerSceneGroupGrab != null)
458 {
459 handlerSceneGroupGrab(groupID, offset, userID);
460 }
461 }
462
463 public void TriggerLandObjectAdded(ILandObject newParcel)
464 {
465 handlerLandObjectAdded = OnLandObjectAdded;
466
467 if (handlerLandObjectAdded != null)
468 {
469 handlerLandObjectAdded(newParcel);
470 }
471 }
472
473 public void TriggerLandObjectRemoved(LLUUID globalID)
474 {
475 handlerLandObjectRemoved = OnLandObjectRemoved;
476 if (handlerLandObjectRemoved != null)
477 {
478 handlerLandObjectRemoved(globalID);
479 }
480 }
481
482 public void TriggerLandObjectUpdated(uint localParcelID, ILandObject newParcel)
483 {
484 //triggerLandObjectRemoved(localParcelID);
485
486 TriggerLandObjectAdded(newParcel);
487 }
488
489 public void TriggerAvatarEnteringNewParcel(ScenePresence avatar, int localLandID, LLUUID regionID)
490 {
491 handlerAvatarEnteringNewParcel = OnAvatarEnteringNewParcel;
492
493 if (handlerAvatarEnteringNewParcel != null)
494 {
495 handlerAvatarEnteringNewParcel(avatar, localLandID, regionID);
496 }
497 }
498
499 ///<summary>Used to pass instnat messages around between the Scene, the Friends Module and the Instant Messsage Module</summary>
500 ///<param name="message">Object containing the Instant Message Data</param>
501 ///<param name="whichModule">A bit vector containing the modules to send the message to</param>
502 public void TriggerGridInstantMessage(GridInstantMessage message, InstantMessageReceiver whichModule)
503 {
504 if ((whichModule & InstantMessageReceiver.IMModule) != 0)
505 {
506 handlerGridInstantMessageToIM = OnGridInstantMessageToIMModule;
507 if (handlerGridInstantMessageToIM != null)
508 {
509 handlerGridInstantMessageToIM(message);
510 }
511 }
512 if ((whichModule & InstantMessageReceiver.FriendsModule) != 0)
513 {
514 handlerGridInstantMessageToFriends = OnGridInstantMessageToFriendsModule;
515 if (handlerGridInstantMessageToFriends != null)
516 {
517 handlerGridInstantMessageToFriends(message);
518 }
519
520 }
521 }
522
523 public void TriggerClientClosed(LLUUID ClientID)
524 {
525 handlerClientClosed = OnClientClosed;
526 if (handlerClientClosed != null)
527 {
528 handlerClientClosed(ClientID);
529 }
530 }
531
532 public void TriggerOnMakeChildAgent(ScenePresence presence)
533 {
534 handlerMakeChildAgent = OnMakeChildAgent;
535 if (handlerMakeChildAgent != null)
536 {
537 handlerMakeChildAgent(presence);
538 }
539 }
540
541 public void TriggerOnRegisterCaps(LLUUID agentID, Caps caps)
542 {
543 handlerRegisterCaps = OnRegisterCaps;
544 if (handlerRegisterCaps != null)
545 {
546 handlerRegisterCaps(agentID, caps);
547 }
548 }
549
550 public void TriggerOnDeregisterCaps(LLUUID agentID, Caps caps)
551 {
552 handlerDeregisterCaps = OnDeregisterCaps;
553 if (handlerDeregisterCaps != null)
554 {
555 handlerDeregisterCaps(agentID, caps);
556 }
557 }
558
559 public void TriggerOnNewInventoryItemUploadComplete(LLUUID agentID, LLUUID AssetID, String AssetName, int userlevel)
560 {
561 handlerNewInventoryItemUpdateComplete = OnNewInventoryItemUploadComplete;
562 if (handlerNewInventoryItemUpdateComplete != null)
563 {
564 handlerNewInventoryItemUpdateComplete(agentID, AssetID, AssetName, userlevel);
565 }
566 }
567 public void TriggerLandBuy (Object sender, LandBuyArgs e)
568 {
569 handlerLandBuy = OnLandBuy;
570 if (handlerLandBuy != null)
571 {
572 handlerLandBuy(sender, e);
573 }
574 }
575 public void TriggerValidateLandBuy(Object sender, LandBuyArgs e)
576 {
577 handlerValidateLandBuy = OnValidateLandBuy;
578 if (handlerValidateLandBuy != null)
579 {
580 handlerValidateLandBuy(sender, e);
581 }
582 }
583
584 public void TriggerAtTargetEvent(uint localID, uint handle, LLVector3 targetpos, LLVector3 currentpos)
585 {
586 handlerScriptAtTargetEvent = OnScriptAtTargetEvent;
587 if (handlerScriptAtTargetEvent != null)
588 {
589 handlerScriptAtTargetEvent(localID, handle, targetpos, currentpos);
590 }
591 }
592
593 public void TriggerNotAtTargetEvent(uint localID)
594 {
595 handlerScriptNotAtTargetEvent = OnScriptNotAtTargetEvent;
596 if (handlerScriptNotAtTargetEvent != null)
597 {
598 handlerScriptNotAtTargetEvent(localID);
599 }
600 }
601
602 public void TriggerRequestChangeWaterHeight(float height)
603 {
604 handlerRequestChangeWaterHeight = OnRequestChangeWaterHeight;
605 if (handlerRequestChangeWaterHeight != null)
606 {
607 handlerRequestChangeWaterHeight(height);
608 }
609 }
610 public void TriggerAvatarKill(uint KillerObjectLocalID, ScenePresence DeadAvatar)
611 {
612 handlerAvatarKill = OnAvatarKilled;
613 if (handlerAvatarKill != null)
614 {
615 handlerAvatarKill(KillerObjectLocalID, DeadAvatar);
616 }
617 }
618
619 public void TriggerSignificantClientMovement(IClientAPI client)
620 {
621 handlerSignificantClientMovement = OnSignificantClientMovement;
622 if (handlerSignificantClientMovement != null)
623 {
624 handlerSignificantClientMovement(client);
625
626 }
627 }
628 internal void TriggerControlEvent(uint p, LLUUID scriptUUID, LLUUID avatarID, uint held, uint _changed)
629 {
630 handlerScriptControlEvent = OnScriptControlEvent;
631 if (handlerScriptControlEvent != null)
632 {
633 handlerScriptControlEvent(p, scriptUUID, avatarID, held, _changed);
634 }
635 }
636 }
637}