opensim – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 eva 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 OpenSimulator 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  
28 using System;
29 using System.Collections.Generic;
30 using System.Reflection;
31 using log4net;
32 using OpenMetaverse;
33 using OpenSim.Framework;
34 using OpenSim.Framework.Client;
35 using OpenSim.Region.Framework.Interfaces;
36 using Caps = OpenSim.Framework.Capabilities.Caps;
37 using GridRegion = OpenSim.Services.Interfaces.GridRegion;
38  
39 namespace OpenSim.Region.Framework.Scenes
40 {
41 /// <summary>
42 /// A class for triggering remote scene events.
43 /// </summary>
44 public class EventManager
45 {
46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
47  
48 public delegate void OnFrameDelegate();
49  
50 /// <summary>
51 /// Triggered on each sim frame.
52 /// </summary>
53 /// <remarks>
54 /// This gets triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.Update"/>
55 /// Core uses it for things like Sun, Wind & Clouds
56 /// The MRM module also uses it.
57 /// </remarks>
58 public event OnFrameDelegate OnFrame;
59  
60 public delegate void ClientMovement(ScenePresence client);
61  
62 /// <summary>
63 /// Trigerred when an agent moves.
64 /// </summary>
65 /// <remarks>
66 /// This gets triggered in <see cref="OpenSim.Region.Framework.Scenes.ScenePresence.HandleAgentUpdate"/>
67 /// prior to <see cref="OpenSim.Region.Framework.Scenes.ScenePresence.TriggerScenePresenceUpdated"/>
68 /// </remarks>
69 public event ClientMovement OnClientMovement;
70  
71 public delegate void OnTerrainTaintedDelegate();
72  
73 /// <summary>
74 /// Triggered if the terrain has been edited
75 /// </summary>
76 /// <remarks>
77 /// This gets triggered in <see cref="OpenSim.Region.CoreModules.World.Terrain.CheckForTerrainUpdates"/>
78 /// after it determines that an update has been made.
79 /// </remarks>
80 public event OnTerrainTaintedDelegate OnTerrainTainted;
81  
82 public delegate void OnTerrainTickDelegate();
83  
84 /// <summary>
85 /// Triggered if the terrain has been edited
86 /// </summary>
87 /// <remarks>
88 /// This gets triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.UpdateTerrain"/>
89 /// but is used by core solely to update the physics engine.
90 /// </remarks>
91 public event OnTerrainTickDelegate OnTerrainTick;
92  
93 public delegate void OnBackupDelegate(ISimulationDataService datastore, bool forceBackup);
94  
95 /// <summary>
96 /// Triggered when a region is backed up/persisted to storage
97 /// </summary>
98 /// <remarks>
99 /// This gets triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.Backup"/>
100 /// and is fired before the persistence occurs.
101 /// </remarks>
102 public event OnBackupDelegate OnBackup;
103  
104 public delegate void OnClientConnectCoreDelegate(IClientCore client);
105  
106 /// <summary>
107 /// Triggered when a new client connects to the scene.
108 /// </summary>
109 /// <remarks>
110 /// This gets triggered in <see cref="TriggerOnNewClient"/>,
111 /// which checks if an instance of <see cref="OpenSim.Framework.IClientAPI"/>
112 /// also implements <see cref="OpenSim.Framework.Client.IClientCore"/> and as such,
113 /// is not triggered by <see cref="OpenSim.Region.OptionalModules.World.NPC">NPCs</see>.
114 /// </remarks>
115 public event OnClientConnectCoreDelegate OnClientConnect;
116  
117 public delegate void OnNewClientDelegate(IClientAPI client);
118  
119 /// <summary>
120 /// Triggered when a new client is added to the scene.
121 /// </summary>
122 /// <remarks>
123 /// This is triggered for both child and root agent client connections.
124 ///
125 /// Triggered before OnClientLogin.
126 ///
127 /// This is triggered under per-agent lock. So if you want to perform any long-running operations, please
128 /// do this on a separate thread.
129 /// </remarks>
130 public event OnNewClientDelegate OnNewClient;
131  
132 /// <summary>
133 /// Fired if the client entering this sim is doing so as a new login
134 /// </summary>
135 /// <remarks>
136 /// This is triggered under per-agent lock. So if you want to perform any long-running operations, please
137 /// do this on a separate thread.
138 /// </remarks>
139 public event Action<IClientAPI> OnClientLogin;
140  
141 public delegate void OnNewPresenceDelegate(ScenePresence presence);
142  
143 /// <summary>
144 /// Triggered when a new presence is added to the scene
145 /// </summary>
146 /// <remarks>
147 /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.AddNewAgent"/> which is used by both
148 /// <see cref="OpenSim.Framework.PresenceType.User">users</see> and <see cref="OpenSim.Framework.PresenceType.Npc">NPCs</see>
149 /// </remarks>
150 public event OnNewPresenceDelegate OnNewPresence;
151  
152 public delegate void OnRemovePresenceDelegate(UUID agentId);
153  
154 /// <summary>
155 /// Triggered when a presence is removed from the scene
156 /// </summary>
157 /// <remarks>
158 /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.AddNewAgent"/> which is used by both
159 /// <see cref="OpenSim.Framework.PresenceType.User">users</see> and <see cref="OpenSim.Framework.PresenceType.Npc">NPCs</see>
160 ///
161 /// Triggered under per-agent lock. So if you want to perform any long-running operations, please
162 /// do this on a separate thread.
163 /// </remarks>
164 public event OnRemovePresenceDelegate OnRemovePresence;
165  
166 public delegate void OnParcelPrimCountUpdateDelegate();
167  
168 /// <summary>
169 /// Triggered whenever the prim count may have been altered, or prior
170 /// to an action that requires the current prim count to be accurate.
171 /// </summary>
172 /// <remarks>
173 /// Triggered by <see cref="TriggerParcelPrimCountUpdate"/> in
174 /// <see cref="OpenSim.OpenSimBase.CreateRegion"/>,
175 /// <see cref="OpenSim.Region.CoreModules.World.Land.LandManagementModule.EventManagerOnRequestParcelPrimCountUpdate"/>,
176 /// <see cref="OpenSim.Region.CoreModules.World.Land.LandManagementModule.ClientOnParcelObjectOwnerRequest"/>,
177 /// <see cref="OpenSim.Region.CoreModules.World.Land.LandObject.GetPrimsFree"/>,
178 /// <see cref="OpenSim.Region.CoreModules.World.Land.LandObject.UpdateLandSold"/>,
179 /// <see cref="OpenSim.Region.CoreModules.World.Land.LandObject.DeedToGroup"/>,
180 /// <see cref="OpenSim.Region.CoreModules.World.Land.LandObject.SendLandUpdateToClient"/>
181 /// </remarks>
182 public event OnParcelPrimCountUpdateDelegate OnParcelPrimCountUpdate;
183  
184 public delegate void OnParcelPrimCountAddDelegate(SceneObjectGroup obj);
185  
186 /// <summary>
187 /// Triggered in response to <see cref="OnParcelPrimCountUpdate"/> for
188 /// objects that actually contribute to parcel prim count.
189 /// </summary>
190 /// <remarks>
191 /// Triggered by <see cref="TriggerParcelPrimCountAdd"/> in
192 /// <see cref="OpenSim.Region.CoreModules.World.Land.LandManagementModule.EventManagerOnParcelPrimCountUpdate"/>
193 /// </remarks>
194 public event OnParcelPrimCountAddDelegate OnParcelPrimCountAdd;
195  
196 public delegate void OnPluginConsoleDelegate(string[] args);
197  
198 /// <summary>
199 /// Triggered after <see cref="OpenSim.IApplicationPlugin.PostInitialise"/>
200 /// has been called for all <see cref="OpenSim.IApplicationPlugin"/>
201 /// loaded via <see cref="OpenSim.OpenSimBase.LoadPlugins"/>.
202 /// Handlers for this event are typically used to parse the arguments
203 /// from <see cref="OnPluginConsoleDelegate"/> in order to process or
204 /// filter the arguments and pass them onto <see cref="OpenSim.Region.CoreModules.Framework.InterfaceCommander.Commander.ProcessConsoleCommand"/>
205 /// </summary>
206 /// <remarks>
207 /// Triggered by <see cref="TriggerOnPluginConsole"/> in
208 /// <see cref="Scene.SendCommandToPlugins"/> via
209 /// <see cref="SceneManager.SendCommandToPluginModules"/> via
210 /// <see cref="OpenSim.OpenSimBase.HandleCommanderCommand"/> via
211 /// <see cref="OpenSim.OpenSimBase.AddPluginCommands"/> via
212 /// <see cref="OpenSim.OpenSimBase.StartupSpecific"/>
213 /// </remarks>
214 public event OnPluginConsoleDelegate OnPluginConsole;
215  
216 /// <summary>
217 /// Triggered when the entire simulator is shutdown.
218 /// </summary>
219 public event Action OnShutdown;
220  
221 public delegate void ObjectDeGrabDelegate(uint localID, uint originalID, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs);
222 public delegate void ScriptResetDelegate(uint localID, UUID itemID);
223  
224 public delegate void OnPermissionErrorDelegate(UUID user, string reason);
225  
226 public delegate void OnSetRootAgentSceneDelegate(UUID agentID, Scene scene);
227  
228 /// <summary>
229 /// Triggered before the grunt work for adding a root agent to a
230 /// scene has been performed (resuming attachment scripts, physics,
231 /// animations etc.)
232 /// </summary>
233 /// <remarks>
234 /// Triggered before <see cref="OnMakeRootAgent"/>
235 /// by <see cref="TriggerSetRootAgentScene"/>
236 /// in <see cref="ScenePresence.MakeRootAgent"/>
237 /// via <see cref="Scene.AgentCrossing"/>
238 /// and <see cref="ScenePresence.CompleteMovement"/>
239 /// </remarks>
240 public event OnSetRootAgentSceneDelegate OnSetRootAgentScene;
241  
242 /// <summary>
243 /// Triggered after parcel properties have been updated.
244 /// </summary>
245 /// <remarks>
246 /// Triggered by <see cref="TriggerOnParcelPropertiesUpdateRequest"/> in
247 /// <see cref="OpenSim.Region.CoreModules.World.Land.LandManagementModule.ClientOnParcelPropertiesUpdateRequest"/>,
248 /// <see cref="OpenSim.Region.CoreModules.World.Land.LandManagementModule.ProcessPropertiesUpdate"/>
249 /// </remarks>
250 public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
251  
252 /// <summary>
253 /// Triggered when an individual scene is shutdown.
254 /// </summary>
255 /// <remarks>
256 /// This does not automatically mean that the entire simulator is shutting down. Listen to OnShutdown for that
257 /// notification.
258 /// </remarks>
259 public event Action<Scene> OnSceneShuttingDown;
260  
261 /// <summary>
262 /// Fired when an object is touched/grabbed.
263 /// </summary>
264 /// <remarks>
265 /// The originalID is the local ID of the part that was actually touched. The localID itself is always that of
266 /// the root part.
267 /// Triggerd in response to <see cref="OpenSim.Framework.IClientAPI.OnGrabObject"/>
268 /// via <see cref="TriggerObjectGrab"/>
269 /// in <see cref="Scene.ProcessObjectGrab"/>
270 /// </remarks>
271 public event ObjectGrabDelegate OnObjectGrab;
272 public delegate void ObjectGrabDelegate(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs);
273  
274 /// <summary>
275 /// Triggered when an object is being touched/grabbed continuously.
276 /// </summary>
277 /// <remarks>
278 /// Triggered in response to <see cref="OpenSim.Framework.IClientAPI.OnGrabUpdate"/>
279 /// via <see cref="TriggerObjectGrabbing"/>
280 /// in <see cref="Scene.ProcessObjectGrabUpdate"/>
281 /// </remarks>
282 public event ObjectGrabDelegate OnObjectGrabbing;
283  
284 /// <summary>
285 /// Triggered when an object stops being touched/grabbed.
286 /// </summary>
287 /// <remarks>
288 /// Triggered in response to <see cref="OpenSim.Framework.IClientAPI.OnDeGrabObject"/>
289 /// via <see cref="TriggerObjectDeGrab"/>
290 /// in <see cref="Scene.ProcessObjectDeGrab"/>
291 /// </remarks>
292 public event ObjectDeGrabDelegate OnObjectDeGrab;
293  
294 /// <summary>
295 /// Triggered when a script resets.
296 /// </summary>
297 /// <remarks>
298 /// Triggered by <see cref="TriggerScriptReset"/>
299 /// in <see cref="Scene.ProcessScriptReset"/>
300 /// via <see cref="OpenSim.Framework.IClientAPI.OnScriptReset"/>
301 /// via <see cref="OpenSim.Region.ClientStack.LindenUDP.LLClientView.HandleScriptReset"/>
302 /// </remarks>
303 public event ScriptResetDelegate OnScriptReset;
304  
305 public event OnPermissionErrorDelegate OnPermissionError;
306  
307 /// <summary>
308 /// Fired when a script is run.
309 /// </summary>
310 /// <remarks>
311 /// Occurs after OnNewScript.
312 /// Triggered by <see cref="TriggerRezScript"/>
313 /// in <see cref="SceneObjectPartInventory.CreateScriptInstance"/>
314 /// </remarks>
315 public event NewRezScript OnRezScript;
316 public delegate void NewRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource);
317  
318 public delegate void RemoveScript(uint localID, UUID itemID);
319  
320 /// <summary>
321 /// Triggered when a script is removed from an object.
322 /// </summary>
323 /// <remarks>
324 /// Triggered by <see cref="TriggerRemoveScript"/>
325 /// in <see cref="Scene.RemoveTaskInventory"/>,
326 /// <see cref="Scene.CreateAgentInventoryItemFromTask"/>,
327 /// <see cref="SceneObjectPartInventory.RemoveScriptInstance"/>,
328 /// <see cref="SceneObjectPartInventory.RemoveInventoryItem"/>
329 /// </remarks>
330 public event RemoveScript OnRemoveScript;
331  
332 public delegate void StartScript(uint localID, UUID itemID);
333  
334 /// <summary>
335 /// Triggered when a script starts.
336 /// </summary>
337 /// <remarks>
338 /// Triggered by <see cref="TriggerStartScript"/>
339 /// in <see cref="Scene.SetScriptRunning"/>
340 /// via <see cref="OpenSim.Framework.IClientAPI.OnSetScriptRunning"/>,
341 /// via <see cref="OpenSim.Region.ClientStack.LindenUDP.HandleSetScriptRunning"/>
342 /// XXX: This is only triggered when it is the client that starts the script, not in other situations where
343 /// a script is started, unlike OnStopScript!
344 /// </remarks>
345 public event StartScript OnStartScript;
346  
347 public delegate void StopScript(uint localID, UUID itemID);
348  
349 /// <summary>
350 /// Triggered when a script stops.
351 /// </summary>
352 /// <remarks>
353 /// Triggered by <see cref="TriggerStopScript"/>,
354 /// in <see cref="SceneObjectPartInventory.CreateScriptInstance"/>,
355 /// <see cref="SceneObjectPartInventory.StopScriptInstance"/>,
356 /// <see cref="Scene.SetScriptRunning"/>
357 /// XXX: This is triggered when a sciprt is stopped for any reason, unlike OnStartScript!
358 /// </remarks>
359 public event StopScript OnStopScript;
360  
361 public delegate bool SceneGroupMoved(UUID groupID, Vector3 delta);
362  
363 /// <summary>
364 /// Triggered when an object is moved.
365 /// </summary>
366 /// <remarks>
367 /// Triggered by <see cref="TriggerGroupMove"/>
368 /// in <see cref="SceneObjectGroup.UpdateGroupPosition"/>,
369 /// <see cref="SceneObjectGroup.GrabMovement"/>
370 /// </remarks>
371 public event SceneGroupMoved OnSceneGroupMove;
372  
373 public delegate void SceneGroupGrabed(UUID groupID, Vector3 offset, UUID userID);
374  
375 /// <summary>
376 /// Triggered when an object is grabbed.
377 /// </summary>
378 /// <remarks>
379 /// Triggered by <see cref="TriggerGroupGrab"/>
380 /// in <see cref="SceneObjectGroup.OnGrabGroup"/>
381 /// via <see cref="SceneObjectGroup.ObjectGrabHandler"/>
382 /// via <see cref="Scene.ProcessObjectGrab"/>
383 /// via <see cref="OpenSim.Framework.IClientAPI.OnGrabObject"/>
384 /// via <see cref="OpenSim.Region.ClientStack.LindenUDP.LLClientView.HandleObjectGrab"/>
385 /// </remarks>
386 public event SceneGroupGrabed OnSceneGroupGrab;
387  
388 public delegate bool SceneGroupSpinStarted(UUID groupID);
389  
390 /// <summary>
391 /// Triggered when an object starts to spin.
392 /// </summary>
393 /// <remarks>
394 /// Triggered by <see cref="TriggerGroupSpinStart"/>
395 /// in <see cref="SceneObjectGroup.SpinStart"/>
396 /// via <see cref="SceneGraph.SpinStart"/>
397 /// via <see cref="OpenSim.Framework.IClientAPI.OnSpinStart"/>
398 /// via <see cref="OpenSim.Region.ClientStack.LindenUDP.LLClientView.HandleObjectSpinStart"/>
399 /// </remarks>
400 public event SceneGroupSpinStarted OnSceneGroupSpinStart;
401  
402 public delegate bool SceneGroupSpun(UUID groupID, Quaternion rotation);
403  
404 /// <summary>
405 /// Triggered when an object is being spun.
406 /// </summary>
407 /// <remarks>
408 /// Triggered by <see cref="TriggerGroupSpin"/>
409 /// in <see cref="SceneObjectGroup.SpinMovement"/>
410 /// via <see cref="SceneGraph.SpinObject"/>
411 /// via <see cref="OpenSim.Framework.IClientAPI.OnSpinUpdate"/>
412 /// via <see cref="OpenSim.Region.ClientStack.LindenUDP.LLClientView.HandleObjectSpinUpdate"/>
413 /// </remarks>
414 public event SceneGroupSpun OnSceneGroupSpin;
415  
416 public delegate void LandObjectAdded(ILandObject newParcel);
417 public event LandObjectAdded OnLandObjectAdded;
418  
419 public delegate void LandObjectRemoved(UUID globalID);
420 public event LandObjectRemoved OnLandObjectRemoved;
421  
422 public delegate void AvatarEnteringNewParcel(ScenePresence avatar, int localLandID, UUID regionID);
423 public event AvatarEnteringNewParcel OnAvatarEnteringNewParcel;
424  
425 public delegate void AvatarAppearanceChange(ScenePresence avatar);
426 public event AvatarAppearanceChange OnAvatarAppearanceChange;
427  
428 public event Action<ScenePresence> OnSignificantClientMovement;
429  
430 public delegate void IncomingInstantMessage(GridInstantMessage message);
431 public event IncomingInstantMessage OnIncomingInstantMessage;
432  
433 public event IncomingInstantMessage OnUnhandledInstantMessage;
434  
435 public delegate void ClientClosed(UUID clientID, Scene scene);
436  
437 /// <summary>
438 /// Fired when a client is removed from a scene whether it's a child or a root agent.
439 /// </summary>
440 /// <remarks>
441 /// At the point of firing, the scene still contains the client's scene presence.
442 ///
443 /// This is triggered under per-agent lock. So if you want to perform any long-running operations, please
444 /// do this on a separate thread.
445 /// </remarks>
446 public event ClientClosed OnClientClosed;
447  
448 public delegate void NewScript(UUID clientID, SceneObjectPart part, UUID itemID);
449  
450 /// <summary>
451 /// Fired when a script is created.
452 /// </summary>
453 /// <remarks>
454 /// Occurs before OnRezScript
455 /// Triggered by <see cref="TriggerNewScript"/>
456 /// in <see cref="Scene.RezScriptFromAgentInventory"/>,
457 /// <see cref="Scene.RezNewScript"/>
458 /// </remarks>
459 public event NewScript OnNewScript;
460  
461 public delegate void ExtraSettingChangedDelegate(Scene scene, string name, string value);
462 public event ExtraSettingChangedDelegate OnExtraSettingChanged;
463  
464 public virtual void TriggerNewScript(UUID clientID, SceneObjectPart part, UUID itemID)
465 {
466 NewScript handlerNewScript = OnNewScript;
467 if (handlerNewScript != null)
468 {
469 foreach (NewScript d in handlerNewScript.GetInvocationList())
470 {
471 try
472 {
473 d(clientID, part, itemID);
474 }
475 catch (Exception e)
476 {
477 m_log.ErrorFormat(
478 "[EVENT MANAGER]: Delegate for TriggerNewScript failed - continuing. {0} {1}",
479 e.Message, e.StackTrace);
480 }
481 }
482 }
483 }
484  
485 public delegate void UpdateScript(UUID clientID, UUID itemId, UUID primId, bool isScriptRunning, UUID newAssetID);
486  
487 /// <summary>
488 /// An indication that the script has changed.
489 /// </summary>
490 /// <remarks>
491 /// Triggered after the scene receives a client's upload of an updated script and has stored it in an asset.
492 /// Triggered by <see cref="TriggerUpdateScript"/>
493 /// in <see cref="Scene.CapsUpdateTaskInventoryScriptAsset"/>
494 /// via <see cref="Scene.CapsUpdateTaskInventoryScriptAsset"/>
495 /// via <see cref="OpenSim.Region.ClientStack.Linden.BunchOfCaps.TaskScriptUpdated"/>
496 /// via <see cref="OpenSim.Region.ClientStack.Linden.TaskInventoryScriptUpdater.OnUpLoad"/>
497 /// via <see cref="OpenSim.Region.ClientStack.Linden.TaskInventoryScriptUpdater.uploaderCaps"/>
498 /// </remarks>
499 public event UpdateScript OnUpdateScript;
500  
501 public virtual void TriggerUpdateScript(UUID clientId, UUID itemId, UUID primId, bool isScriptRunning, UUID newAssetID)
502 {
503 UpdateScript handlerUpdateScript = OnUpdateScript;
504 if (handlerUpdateScript != null)
505 {
506 foreach (UpdateScript d in handlerUpdateScript.GetInvocationList())
507 {
508 try
509 {
510 d(clientId, itemId, primId, isScriptRunning, newAssetID);
511 }
512 catch (Exception e)
513 {
514 m_log.ErrorFormat(
515 "[EVENT MANAGER]: Delegate for TriggerUpdateScript failed - continuing. {0} {1}",
516 e.Message, e.StackTrace);
517 }
518 }
519 }
520 }
521  
522 /// <summary>
523 /// Triggered when some scene object properties change.
524 /// </summary>
525 /// <remarks>
526 /// ScriptChangedEvent is fired when a scene object property that a script might be interested
527 /// in (such as color, scale or inventory) changes. Only enough information sent is for the LSL changed event.
528 /// This is not an indication that the script has changed (see OnUpdateScript for that).
529 /// This event is sent to a script to tell it that some property changed on
530 /// the object the script is in. See http://lslwiki.net/lslwiki/wakka.php?wakka=changed .
531 /// Triggered by <see cref="TriggerOnScriptChangedEvent"/>
532 /// in <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.TeleportAgentWithinRegion"/>,
533 /// <see cref="SceneObjectPart.TriggerScriptChangedEvent"/>
534 /// </remarks>
535 public event ScriptChangedEvent OnScriptChangedEvent;
536 public delegate void ScriptChangedEvent(uint localID, uint change);
537  
538 public delegate void ScriptControlEvent(UUID item, UUID avatarID, uint held, uint changed);
539  
540 /// <summary>
541 /// Triggered when a script receives control input from an agent.
542 /// </summary>
543 /// <remarks>
544 /// Triggered by <see cref="TriggerControlEvent"/>
545 /// in <see cref="ScenePresence.SendControlsToScripts"/>
546 /// via <see cref="ScenePresence.HandleAgentUpdate"/>
547 /// via <see cref="OpenSim.Framework.IClientAPI.OnAgentUpdate"/>
548 /// via <see cref="OpenSim.Region.ClientStack.LindenUDP.LLClientView.HandleAgentUpdate"/>
549 /// </remarks>
550 public event ScriptControlEvent OnScriptControlEvent;
551  
552 public delegate void ScriptMovingStartEvent(uint localID);
553  
554 /// <summary>
555 /// TODO: Should be triggered when a physics object starts moving.
556 /// </summary>
557 public event ScriptMovingStartEvent OnScriptMovingStartEvent;
558  
559 public delegate void ScriptMovingEndEvent(uint localID);
560  
561 /// <summary>
562 /// TODO: Should be triggered when a physics object stops moving.
563 /// </summary>
564 public event ScriptMovingEndEvent OnScriptMovingEndEvent;
565  
566 public delegate void ScriptAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 atpos);
567  
568 /// <summary>
569 /// Triggered when an object has arrived within a tolerance distance
570 /// of a motion target.
571 /// </summary>
572 /// <remarks>
573 /// Triggered by <see cref="TriggerAtTargetEvent"/>
574 /// in <see cref="SceneObjectGroup.checkAtTargets"/>
575 /// via <see cref="SceneObjectGroup.ScheduleGroupForFullUpdate"/>,
576 /// <see cref="Scene.CheckAtTargets"/> via <see cref="Scene.Update"/>
577 /// </remarks>
578 public event ScriptAtTargetEvent OnScriptAtTargetEvent;
579  
580 public delegate void ScriptNotAtTargetEvent(uint localID);
581  
582 /// <summary>
583 /// Triggered when an object has a motion target but has not arrived
584 /// within a tolerance distance.
585 /// </summary>
586 /// <remarks>
587 /// Triggered by <see cref="TriggerNotAtTargetEvent"/>
588 /// in <see cref="SceneObjectGroup.checkAtTargets"/>
589 /// via <see cref="SceneObjectGroup.ScheduleGroupForFullUpdate"/>,
590 /// <see cref="Scene.CheckAtTargets"/> via <see cref="Scene.Update"/>
591 /// </remarks>
592 public event ScriptNotAtTargetEvent OnScriptNotAtTargetEvent;
593  
594 public delegate void ScriptAtRotTargetEvent(uint localID, uint handle, Quaternion targetrot, Quaternion atrot);
595  
596 /// <summary>
597 /// Triggered when an object has arrived within a tolerance rotation
598 /// of a rotation target.
599 /// </summary>
600 /// <remarks>
601 /// Triggered by <see cref="TriggerAtRotTargetEvent"/>
602 /// in <see cref="SceneObjectGroup.checkAtTargets"/>
603 /// via <see cref="SceneObjectGroup.ScheduleGroupForFullUpdate"/>,
604 /// <see cref="Scene.CheckAtTargets"/> via <see cref="Scene.Update"/>
605 /// </remarks>
606 public event ScriptAtRotTargetEvent OnScriptAtRotTargetEvent;
607  
608 public delegate void ScriptNotAtRotTargetEvent(uint localID);
609  
610 /// <summary>
611 /// Triggered when an object has a rotation target but has not arrived
612 /// within a tolerance rotation.
613 /// </summary>
614 /// <remarks>
615 /// Triggered by <see cref="TriggerNotAtRotTargetEvent"/>
616 /// in <see cref="SceneObjectGroup.checkAtTargets"/>
617 /// via <see cref="SceneObjectGroup.ScheduleGroupForFullUpdate"/>,
618 /// <see cref="Scene.CheckAtTargets"/> via <see cref="Scene.Update"/>
619 /// </remarks>
620 public event ScriptNotAtRotTargetEvent OnScriptNotAtRotTargetEvent;
621  
622 public delegate void ScriptColliding(uint localID, ColliderArgs colliders);
623  
624 /// <summary>
625 /// Triggered when a physical collision has started between a prim
626 /// and something other than the region terrain.
627 /// </summary>
628 /// <remarks>
629 /// Triggered by <see cref="TriggerScriptCollidingStart"/>
630 /// in <see cref="SceneObjectPart.SendCollisionEvent"/>
631 /// via <see cref="SceneObjectPart.PhysicsCollision"/>
632 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.OnCollisionUpdate"/>
633 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.SendCollisionUpdate"/>
634 /// </remarks>
635 public event ScriptColliding OnScriptColliderStart;
636  
637 /// <summary>
638 /// Triggered when something that previously collided with a prim has
639 /// not stopped colliding with it.
640 /// </summary>
641 /// <remarks>
642 /// <seealso cref="OnScriptColliderStart"/>
643 /// Triggered by <see cref="TriggerScriptColliding"/>
644 /// in <see cref="SceneObjectPart.SendCollisionEvent"/>
645 /// via <see cref="SceneObjectPart.PhysicsCollision"/>
646 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.OnCollisionUpdate"/>
647 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.SendCollisionUpdate"/>
648 /// </remarks>
649 public event ScriptColliding OnScriptColliding;
650  
651 /// <summary>
652 /// Triggered when something that previously collided with a prim has
653 /// stopped colliding with it.
654 /// </summary>
655 /// <remarks>
656 /// Triggered by <see cref="TriggerScriptCollidingEnd"/>
657 /// in <see cref="SceneObjectPart.SendCollisionEvent"/>
658 /// via <see cref="SceneObjectPart.PhysicsCollision"/>
659 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.OnCollisionUpdate"/>
660 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.SendCollisionUpdate"/>
661 /// </remarks>
662 public event ScriptColliding OnScriptCollidingEnd;
663  
664 /// <summary>
665 /// Triggered when a physical collision has started between an object
666 /// and the region terrain.
667 /// </summary>
668 /// <remarks>
669 /// Triggered by <see cref="TriggerScriptLandCollidingStart"/>
670 /// in <see cref="SceneObjectPart.SendLandCollisionEvent"/>
671 /// via <see cref="SceneObjectPart.PhysicsCollision"/>
672 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.OnCollisionUpdate"/>
673 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.SendCollisionUpdate"/>
674 /// </remarks>
675 public event ScriptColliding OnScriptLandColliderStart;
676  
677 /// <summary>
678 /// Triggered when an object that previously collided with the region
679 /// terrain has not yet stopped colliding with it.
680 /// </summary>
681 /// <remarks>
682 /// Triggered by <see cref="TriggerScriptLandColliding"/>
683 /// in <see cref="SceneObjectPart.SendLandCollisionEvent"/>
684 /// via <see cref="SceneObjectPart.PhysicsCollision"/>
685 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.OnCollisionUpdate"/>
686 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.SendCollisionUpdate"/>
687 /// </remarks>
688 public event ScriptColliding OnScriptLandColliding;
689  
690 /// <summary>
691 /// Triggered when an object that previously collided with the region
692 /// terrain has stopped colliding with it.
693 /// </summary>
694 /// <remarks>
695 /// Triggered by <see cref="TriggerScriptLandCollidingEnd"/>
696 /// in <see cref="SceneObjectPart.SendLandCollisionEvent"/>
697 /// via <see cref="SceneObjectPart.PhysicsCollision"/>
698 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.OnCollisionUpdate"/>
699 /// via <see cref="OpenSim.Region.Physics.Manager.PhysicsActor.SendCollisionUpdate"/>
700 /// </remarks>
701 public event ScriptColliding OnScriptLandColliderEnd;
702  
703 public delegate void OnMakeChildAgentDelegate(ScenePresence presence);
704  
705 /// <summary>
706 /// Triggered when an agent has been made a child agent of a scene.
707 /// </summary>
708 /// <remarks>
709 /// Triggered by <see cref="TriggerOnMakeChildAgent"/>
710 /// in <see cref="ScenePresence.MakeChildAgent"/>
711 /// via <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.CrossAgentToNewRegionAsync"/>,
712 /// <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.DoTeleport"/>,
713 /// <see cref="OpenSim.Region.CoreModules.InterGrid.KillAUser.ShutdownNoLogout"/>
714 /// </remarks>
715 public event OnMakeChildAgentDelegate OnMakeChildAgent;
716  
717 public delegate void OnSaveNewWindlightProfileDelegate();
718 public delegate void OnSendNewWindlightProfileTargetedDelegate(RegionLightShareData wl, UUID user);
719  
720 /// <summary>
721 /// Triggered after the grunt work for adding a root agent to a
722 /// scene has been performed (resuming attachment scripts, physics,
723 /// animations etc.)
724 /// </summary>
725 /// <remarks>
726 /// This event is on the critical path for transferring an avatar from one region to another. Try and do
727 /// as little work on this event as possible, or do work asynchronously.
728 /// Triggered after <see cref="OnSetRootAgentScene"/>
729 /// by <see cref="TriggerOnMakeRootAgent"/>
730 /// in <see cref="ScenePresence.MakeRootAgent"/>
731 /// via <see cref="Scene.AgentCrossing"/>
732 /// and <see cref="ScenePresence.CompleteMovement"/>
733 /// </remarks>
734 public event Action<ScenePresence> OnMakeRootAgent;
735  
736 public event OnSendNewWindlightProfileTargetedDelegate OnSendNewWindlightProfileTargeted;
737 public event OnSaveNewWindlightProfileDelegate OnSaveNewWindlightProfile;
738  
739 /// <summary>
740 /// Triggered when an object or attachment enters a scene
741 /// </summary>
742 public event OnIncomingSceneObjectDelegate OnIncomingSceneObject;
743 public delegate void OnIncomingSceneObjectDelegate(SceneObjectGroup so);
744  
745 public delegate void NewInventoryItemUploadComplete(UUID avatarID, AssetType type, UUID assetID, string name, int userlevel);
746  
747 public event NewInventoryItemUploadComplete OnNewInventoryItemUploadComplete;
748  
749 public delegate void RequestChangeWaterHeight(float height);
750  
751 public event RequestChangeWaterHeight OnRequestChangeWaterHeight;
752  
753 /// <summary>
754 /// Fired if any avatar is 'killed' due to its health falling to zero
755 /// </summary>
756 public event AvatarKillData OnAvatarKilled;
757 public delegate void AvatarKillData(uint KillerLocalID, ScenePresence avatar);
758  
759 /*
760 public delegate void ScriptTimerEvent(uint localID, double timerinterval);
761 /// <summary>
762 /// Used to be triggered when the LSL timer event fires.
763 /// </summary>
764 /// <remarks>
765 /// Triggered by <see cref="TriggerTimerEvent"/>
766 /// via <see cref="SceneObjectPart.handleTimerAccounting"/>
767 /// </remarks>
768 public event ScriptTimerEvent OnScriptTimerEvent;
769 */
770  
771 public delegate void EstateToolsSunUpdate(ulong regionHandle);
772 public delegate void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID);
773  
774 public event EstateToolsSunUpdate OnEstateToolsSunUpdate;
775  
776 /// <summary>
777 /// Triggered when an object is added to the scene.
778 /// </summary>
779 /// <remarks>
780 /// Triggered by <see cref="TriggerObjectAddedToScene"/>
781 /// in <see cref="Scene.AddNewSceneObject"/>,
782 /// <see cref="Scene.DuplicateObject"/>,
783 /// <see cref="Scene.doObjectDuplicateOnRay"/>
784 /// </remarks>
785 public event Action<SceneObjectGroup> OnObjectAddedToScene;
786  
787 /// <summary>
788 /// Delegate for <see cref="OnObjectBeingRemovedFromScene"/>
789 /// </summary>
790 /// <param name="obj">The object being removed from the scene</param>
791 public delegate void ObjectBeingRemovedFromScene(SceneObjectGroup obj);
792  
793 /// <summary>
794 /// Triggered when an object is placed into the physical scene (PhysicsActor created).
795 /// </summary>
796 public event Action<SceneObjectPart> OnObjectAddedToPhysicalScene;
797 /// <summary>
798 /// Triggered when an object is removed from the physical scene (PhysicsActor destroyed).
799 /// </summary>
800 /// <remarks>
801 /// Note: this is triggered just before the PhysicsActor is removed from the
802 /// physics engine so the receiver can do any necessary cleanup before its destruction.
803 /// </remarks>
804 public event Action<SceneObjectPart> OnObjectRemovedFromPhysicalScene;
805  
806 /// <summary>
807 /// Triggered when an object is removed from the scene.
808 /// </summary>
809 /// <remarks>
810 /// Triggered by <see cref="TriggerObjectBeingRemovedFromScene"/>
811 /// in <see cref="Scene.DeleteSceneObject"/>
812 /// </remarks>
813 public event ObjectBeingRemovedFromScene OnObjectBeingRemovedFromScene;
814  
815 public delegate void NoticeNoLandDataFromStorage();
816 public event NoticeNoLandDataFromStorage OnNoticeNoLandDataFromStorage;
817  
818 public delegate void IncomingLandDataFromStorage(List<LandData> data);
819 public event IncomingLandDataFromStorage OnIncomingLandDataFromStorage;
820  
821 public delegate void SetAllowForcefulBan(bool allow);
822 public event SetAllowForcefulBan OnSetAllowForcefulBan;
823  
824 public delegate void RequestParcelPrimCountUpdate();
825 public event RequestParcelPrimCountUpdate OnRequestParcelPrimCountUpdate;
826  
827 public delegate void ParcelPrimCountTainted();
828  
829 /// <summary>
830 /// Triggered when the parcel prim count has been altered.
831 /// </summary>
832 /// <remarks>
833 /// Triggered by <see cref="TriggerParcelPrimCountTainted"/> in
834 /// <see cref="OpenSim.Region.CoreModules.Avatar.Attachments.AttachmentsModule.DetachSingleAttachmentToGround"/>,
835 /// <see cref="OpenSim.Region.CoreModules.Avatar.Attachments.AttachmentsModule.AttachToAgent"/>,
836 /// <see cref="Scene.DeleteSceneObject"/>,
837 /// <see cref="Scene.SelectPrim"/>,
838 /// <see cref="Scene.DeselectPrim"/>,
839 /// <see cref="SceneObjectGroup.UpdatePrimFlags"/>,
840 /// <see cref="SceneObjectGroup.AbsolutePosition"/>
841 /// </remarks>
842 public event ParcelPrimCountTainted OnParcelPrimCountTainted;
843 public event GetScriptRunning OnGetScriptRunning;
844  
845 /// <summary>
846 /// RegisterCapsEvent is called by Scene after the Caps object
847 /// has been instantiated and before it is return to the
848 /// client and provides region modules to add their caps.
849 /// </summary>
850 public delegate void RegisterCapsEvent(UUID agentID, Caps caps);
851 public event RegisterCapsEvent OnRegisterCaps;
852  
853 /// <summary>
854 /// DeregisterCapsEvent is called by Scene when the caps
855 /// handler for an agent are removed.
856 /// </summary>
857 public delegate void DeregisterCapsEvent(UUID agentID, Caps caps);
858 public event DeregisterCapsEvent OnDeregisterCaps;
859  
860 /// <summary>
861 /// ChatFromWorldEvent is called via Scene when a chat message
862 /// from world comes in.
863 /// </summary>
864 public delegate void ChatFromWorldEvent(Object sender, OSChatMessage chat);
865 public event ChatFromWorldEvent OnChatFromWorld;
866  
867 /// <summary>
868 /// ChatFromClientEvent is triggered via ChatModule (or
869 /// substitutes thereof) when a chat message
870 /// from the client comes in.
871 /// </summary>
872 public delegate void ChatFromClientEvent(Object sender, OSChatMessage chat);
873 public event ChatFromClientEvent OnChatFromClient;
874  
875 /// <summary>
876 /// ChatToClientsEvent is triggered via ChatModule (or
877 /// substitutes thereof) when a chat message is actually sent to clients. Clients will only be sent a
878 /// received chat message if they satisfy various conditions (within audible range, etc.)
879 /// </summary>
880 public delegate void ChatToClientsEvent(
881 UUID senderID, HashSet<UUID> receiverIDs,
882 string message, ChatTypeEnum type, Vector3 fromPos, string fromName,
883 ChatSourceType src, ChatAudibleLevel level);
884 public event ChatToClientsEvent OnChatToClients;
885  
886 /// <summary>
887 /// ChatBroadcastEvent is called via Scene when a broadcast chat message
888 /// from world comes in
889 /// </summary>
890 public delegate void ChatBroadcastEvent(Object sender, OSChatMessage chat);
891 public event ChatBroadcastEvent OnChatBroadcast;
892  
893 public delegate float SunLindenHour();
894 public event SunLindenHour OnGetCurrentTimeAsLindenSunHour;
895  
896 /// <summary>
897 /// Called when oar file has finished loading, although
898 /// the scripts may not have started yet
899 /// Message is non empty string if there were problems loading the oar file
900 /// </summary>
901 public delegate void OarFileLoaded(Guid guid, List<UUID> loadedScenes, string message);
902 public event OarFileLoaded OnOarFileLoaded;
903  
904 /// <summary>
905 /// Called when an oar file has finished saving
906 /// Message is non empty string if there were problems saving the oar file
907 /// If a guid was supplied on the original call to identify, the request, this is returned. Otherwise
908 /// Guid.Empty is returned.
909 /// </summary>
910 public delegate void OarFileSaved(Guid guid, string message);
911 public event OarFileSaved OnOarFileSaved;
912  
913 /// <summary>
914 /// Called when the script compile queue becomes empty
915 /// Returns the number of scripts which failed to start
916 /// </summary>
917 public delegate void EmptyScriptCompileQueue(int numScriptsFailed, string message);
918 public event EmptyScriptCompileQueue OnEmptyScriptCompileQueue;
919  
920 /// <summary>
921 /// Called whenever an object is attached, or detached from an in-world presence.
922 /// </summary>
923 /// If the object is being attached, then the avatarID will be present. If the object is being detached then
924 /// the avatarID is UUID.Zero (I know, this doesn't make much sense but now it's historical).
925 public delegate void Attach(uint localID, UUID itemID, UUID avatarID);
926 public event Attach OnAttach;
927  
928  
929 /// <summary>
930 /// Called immediately after an object is loaded from storage.
931 /// </summary>
932 public event SceneObjectDelegate OnSceneObjectLoaded;
933 public delegate void SceneObjectDelegate(SceneObjectGroup so);
934  
935 /// <summary>
936 /// Called immediately before an object is saved to storage.
937 /// </summary>
938 /// <param name="persistingSo">
939 /// The scene object being persisted.
940 /// This is actually a copy of the original scene object so changes made here will be saved to storage but will not be kept in memory.
941 /// </param>
942 /// <param name="originalSo">
943 /// The original scene object being persisted. Changes here will stay in memory but will not be saved to storage on this save.
944 /// </param>
945 public event SceneObjectPreSaveDelegate OnSceneObjectPreSave;
946 public delegate void SceneObjectPreSaveDelegate(SceneObjectGroup persistingSo, SceneObjectGroup originalSo);
947  
948 /// <summary>
949 /// Called when a scene object part is cloned within the region.
950 /// </summary>
951 /// <param name="copy"></param>
952 /// <param name="original"></param>
953 /// <param name="userExposed">True if the duplicate will immediately be in the scene, false otherwise</param>
954 /// <remarks>
955 /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.SceneObjectPart.Copy"/>
956 /// </remarks>
957 public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy;
958 public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed);
959  
960 public delegate void SceneObjectPartUpdated(SceneObjectPart sop, bool full);
961 public event SceneObjectPartUpdated OnSceneObjectPartUpdated;
962  
963 public delegate void ScenePresenceUpdated(ScenePresence sp);
964 public event ScenePresenceUpdated OnScenePresenceUpdated;
965  
966 public delegate void RegionUp(GridRegion region);
967 public event RegionUp OnRegionUp;
968  
969 public delegate void RegionStarted(Scene scene);
970 public event RegionStarted OnRegionStarted;
971  
972 public delegate void RegionHeartbeatStart(Scene scene);
973 public event RegionHeartbeatStart OnRegionHeartbeatStart;
974 public delegate void RegionHeartbeatEnd(Scene scene);
975 public event RegionHeartbeatEnd OnRegionHeartbeatEnd;
976  
977 /// <summary>
978 /// Fired when logins to a region are enabled or disabled.
979 /// </summary>
980 /// <remarks>
981 ///
982 /// </remarks>
983 /// Fired
984 public event RegionLoginsStatusChange OnRegionLoginsStatusChange;
985 public delegate void RegionLoginsStatusChange(IScene scene);
986  
987 /// <summary>
988 /// Fired when a region is considered ready for use.
989 /// </summary>
990 /// <remarks>
991 /// A region is considered ready when startup operations such as loading of scripts already on the region
992 /// have been completed.
993 /// </remarks>
994 public event Action<IScene> OnRegionReadyStatusChange;
995  
996 public delegate void PrimsLoaded(Scene s);
997 public event PrimsLoaded OnPrimsLoaded;
998  
999 public delegate void TeleportStart(IClientAPI client, GridRegion destination, GridRegion finalDestination, uint teleportFlags, bool gridLogout);
1000  
1001 /// <summary>
1002 /// Triggered when a teleport starts
1003 /// </summary>
1004 /// <remarks>
1005 /// Triggered by <see cref="TriggerTeleportStart"/>
1006 /// in <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.CreateAgent"/>
1007 /// and <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.HGEntityTransferModule.CreateAgent"/>
1008 /// via <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.DoTeleport"/>
1009 /// </remarks>
1010 public event TeleportStart OnTeleportStart;
1011  
1012 public delegate void TeleportFail(IClientAPI client, bool gridLogout);
1013  
1014 /// <summary>
1015 /// Trigered when a teleport fails.
1016 /// </summary>
1017 /// <remarks>
1018 /// Triggered by <see cref="TriggerTeleportFail"/>
1019 /// in <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.Fail"/>
1020 /// via <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.DoTeleport"/>
1021 /// </remarks>
1022 public event TeleportFail OnTeleportFail;
1023  
1024 // public delegate void GatherUuids(SceneObjectPart sop, IDictionary<UUID, AssetType> assetUuids);
1025 //
1026 // /// <summary>
1027 // /// Triggered when UUIDs referenced by a scene object are being gathered for archiving, hg transfer, etc.
1028 // /// </summary>
1029 // /// <remarks>
1030 // /// The listener should add references to the IDictionary<UUID, AssetType> as appropriate.
1031 // /// </remarks>
1032 // public event GatherUuids OnGatherUuids;
1033  
1034 public class MoneyTransferArgs : EventArgs
1035 {
1036 public UUID sender;
1037 public UUID receiver;
1038  
1039 /// <summary>
1040 /// Always false. The SL protocol sucks.
1041 /// </summary>
1042 public bool authenticated = false;
1043  
1044 public int amount;
1045 public int transactiontype;
1046 public string description;
1047  
1048 public MoneyTransferArgs(UUID asender, UUID areceiver, int aamount, int atransactiontype, string adescription)
1049 {
1050 sender = asender;
1051 receiver = areceiver;
1052 amount = aamount;
1053 transactiontype = atransactiontype;
1054 description = adescription;
1055 }
1056 }
1057  
1058 public class LandBuyArgs : EventArgs
1059 {
1060 public UUID agentId = UUID.Zero;
1061  
1062 public UUID groupId = UUID.Zero;
1063  
1064 public UUID parcelOwnerID = UUID.Zero;
1065  
1066 public bool final = false;
1067 public bool groupOwned = false;
1068 public bool removeContribution = false;
1069 public int parcelLocalID = 0;
1070 public int parcelArea = 0;
1071 public int parcelPrice = 0;
1072 public bool authenticated = false;
1073 public bool landValidated = false;
1074 public bool economyValidated = false;
1075 public int transactionID = 0;
1076 public int amountDebited = 0;
1077  
1078 public LandBuyArgs(UUID pagentId, UUID pgroupId, bool pfinal, bool pgroupOwned,
1079 bool premoveContribution, int pparcelLocalID, int pparcelArea, int pparcelPrice,
1080 bool pauthenticated)
1081 {
1082 agentId = pagentId;
1083 groupId = pgroupId;
1084 final = pfinal;
1085 groupOwned = pgroupOwned;
1086 removeContribution = premoveContribution;
1087 parcelLocalID = pparcelLocalID;
1088 parcelArea = pparcelArea;
1089 parcelPrice = pparcelPrice;
1090 authenticated = pauthenticated;
1091 }
1092 }
1093  
1094 public delegate void MoneyTransferEvent(Object sender, MoneyTransferArgs e);
1095  
1096 public delegate void LandBuy(Object sender, LandBuyArgs e);
1097  
1098 /// <summary>
1099 /// Triggered when an attempt to transfer grid currency occurs
1100 /// </summary>
1101 /// <remarks>
1102 /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.ProcessMoneyTransferRequest"/>
1103 /// via <see cref="OpenSim.Region.Framework.Scenes.Scene.SubscribeToClientGridEvents"/>
1104 /// via <see cref="OpenSim.Region.Framework.Scenes.Scene.SubscribeToClientEvents"/>
1105 /// via <see cref="OpenSim.Region.Framework.Scenes.Scene.AddNewAgent"/>
1106 /// </remarks>
1107 public event MoneyTransferEvent OnMoneyTransfer;
1108  
1109 /// <summary>
1110 /// Triggered after after <see cref="OnValidateLandBuy"/>
1111 /// </summary>
1112 public event LandBuy OnLandBuy;
1113  
1114 /// <summary>
1115 /// Triggered to allow or prevent a real estate transaction
1116 /// </summary>
1117 /// <remarks>
1118 /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.ProcessParcelBuy"/>
1119 /// <seealso cref="OpenSim.Region.OptionalModules.World.MoneyModule.SampleMoneyModule.ValidateLandBuy"/>
1120 /// </remarks>
1121 public event LandBuy OnValidateLandBuy;
1122  
1123 public void TriggerOnAttach(uint localID, UUID itemID, UUID avatarID)
1124 {
1125 Attach handlerOnAttach = OnAttach;
1126 if (handlerOnAttach != null)
1127 {
1128 foreach (Attach d in handlerOnAttach.GetInvocationList())
1129 {
1130 try
1131 {
1132 d(localID, itemID, avatarID);
1133 }
1134 catch (Exception e)
1135 {
1136 m_log.ErrorFormat(
1137 "[EVENT MANAGER]: Delegate for TriggerOnAttach failed - continuing. {0} {1}",
1138 e.Message, e.StackTrace);
1139 }
1140 }
1141 }
1142 }
1143  
1144 public void TriggerGetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
1145 {
1146 GetScriptRunning handlerGetScriptRunning = OnGetScriptRunning;
1147 if (handlerGetScriptRunning != null)
1148 {
1149 foreach (GetScriptRunning d in handlerGetScriptRunning.GetInvocationList())
1150 {
1151 try
1152 {
1153 d(controllingClient, objectID, itemID);
1154 }
1155 catch (Exception e)
1156 {
1157 m_log.ErrorFormat(
1158 "[EVENT MANAGER]: Delegate for TriggerGetScriptRunning failed - continuing. {0} {1}",
1159 e.Message, e.StackTrace);
1160 }
1161 }
1162 }
1163 }
1164  
1165 public void TriggerOnScriptChangedEvent(uint localID, uint change)
1166 {
1167 ScriptChangedEvent handlerScriptChangedEvent = OnScriptChangedEvent;
1168 if (handlerScriptChangedEvent != null)
1169 {
1170 foreach (ScriptChangedEvent d in handlerScriptChangedEvent.GetInvocationList())
1171 {
1172 try
1173 {
1174 d(localID, change);
1175 }
1176 catch (Exception e)
1177 {
1178 m_log.ErrorFormat(
1179 "[EVENT MANAGER]: Delegate for TriggerOnScriptChangedEvent failed - continuing. {0} {1}",
1180 e.Message, e.StackTrace);
1181 }
1182 }
1183 }
1184 }
1185  
1186 public void TriggerOnClientMovement(ScenePresence avatar)
1187 {
1188 ClientMovement handlerClientMovement = OnClientMovement;
1189 if (handlerClientMovement != null)
1190 {
1191 foreach (ClientMovement d in handlerClientMovement.GetInvocationList())
1192 {
1193 try
1194 {
1195 d(avatar);
1196 }
1197 catch (Exception e)
1198 {
1199 m_log.ErrorFormat(
1200 "[EVENT MANAGER]: Delegate for TriggerOnClientMovement failed - continuing. {0} {1}",
1201 e.Message, e.StackTrace);
1202 }
1203 }
1204 }
1205 }
1206  
1207 public void TriggerPermissionError(UUID user, string reason)
1208 {
1209 OnPermissionErrorDelegate handlerPermissionError = OnPermissionError;
1210 if (handlerPermissionError != null)
1211 {
1212 foreach (OnPermissionErrorDelegate d in handlerPermissionError.GetInvocationList())
1213 {
1214 try
1215 {
1216 d(user, reason);
1217 }
1218 catch (Exception e)
1219 {
1220 m_log.ErrorFormat(
1221 "[EVENT MANAGER]: Delegate for TriggerPermissionError failed - continuing. {0} {1}",
1222 e.Message, e.StackTrace);
1223 }
1224 }
1225 }
1226 }
1227  
1228 public void TriggerOnPluginConsole(string[] args)
1229 {
1230 OnPluginConsoleDelegate handlerPluginConsole = OnPluginConsole;
1231 if (handlerPluginConsole != null)
1232 {
1233 foreach (OnPluginConsoleDelegate d in handlerPluginConsole.GetInvocationList())
1234 {
1235 try
1236 {
1237 d(args);
1238 }
1239 catch (Exception e)
1240 {
1241 m_log.ErrorFormat(
1242 "[EVENT MANAGER]: Delegate for TriggerOnPluginConsole failed - continuing. {0} {1}",
1243 e.Message, e.StackTrace);
1244 }
1245 }
1246 }
1247 }
1248  
1249 public void TriggerOnFrame()
1250 {
1251 OnFrameDelegate handlerFrame = OnFrame;
1252 if (handlerFrame != null)
1253 {
1254 foreach (OnFrameDelegate d in handlerFrame.GetInvocationList())
1255 {
1256 try
1257 {
1258 d();
1259 }
1260 catch (Exception e)
1261 {
1262 m_log.ErrorFormat(
1263 "[EVENT MANAGER]: Delegate for TriggerOnFrame failed - continuing. {0} {1}",
1264 e.Message, e.StackTrace);
1265 }
1266 }
1267 }
1268 }
1269  
1270 public void TriggerOnNewClient(IClientAPI client)
1271 {
1272 OnNewClientDelegate handlerNewClient = OnNewClient;
1273 if (handlerNewClient != null)
1274 {
1275 foreach (OnNewClientDelegate d in handlerNewClient.GetInvocationList())
1276 {
1277 try
1278 {
1279 d(client);
1280 }
1281 catch (Exception e)
1282 {
1283 m_log.ErrorFormat(
1284 "[EVENT MANAGER]: Delegate for TriggerOnNewClient failed - continuing. {0} {1}",
1285 e.Message, e.StackTrace);
1286 }
1287 }
1288 }
1289  
1290 if (client is IClientCore)
1291 {
1292 OnClientConnectCoreDelegate handlerClientConnect = OnClientConnect;
1293 if (handlerClientConnect != null)
1294 {
1295 foreach (OnClientConnectCoreDelegate d in handlerClientConnect.GetInvocationList())
1296 {
1297 try
1298 {
1299 d((IClientCore)client);
1300 }
1301 catch (Exception e)
1302 {
1303 m_log.ErrorFormat(
1304 "[EVENT MANAGER]: Delegate for TriggerOnNewClient (IClientCore) failed - continuing. {0} {1}",
1305 e.Message, e.StackTrace);
1306 }
1307 }
1308 }
1309 }
1310 }
1311  
1312 public void TriggerOnClientLogin(IClientAPI client)
1313 {
1314 Action<IClientAPI> handlerClientLogin = OnClientLogin;
1315 if (handlerClientLogin != null)
1316 {
1317 foreach (Action<IClientAPI> d in handlerClientLogin.GetInvocationList())
1318 {
1319 try
1320 {
1321 d(client);
1322 }
1323 catch (Exception e)
1324 {
1325 m_log.ErrorFormat(
1326 "[EVENT MANAGER]: Delegate for TriggerOnClientLogin failed - continuing. {0} {1}",
1327 e.Message, e.StackTrace);
1328 }
1329 }
1330 }
1331  
1332 }
1333  
1334 public void TriggerOnNewPresence(ScenePresence presence)
1335 {
1336 OnNewPresenceDelegate handlerNewPresence = OnNewPresence;
1337 if (handlerNewPresence != null)
1338 {
1339 foreach (OnNewPresenceDelegate d in handlerNewPresence.GetInvocationList())
1340 {
1341 try
1342 {
1343 d(presence);
1344 }
1345 catch (Exception e)
1346 {
1347 m_log.ErrorFormat(
1348 "[EVENT MANAGER]: Delegate for TriggerOnNewPresence failed - continuing. {0} {1}",
1349 e.Message, e.StackTrace);
1350 }
1351 }
1352 }
1353 }
1354  
1355 public void TriggerOnRemovePresence(UUID agentId)
1356 {
1357 OnRemovePresenceDelegate handlerRemovePresence = OnRemovePresence;
1358 if (handlerRemovePresence != null)
1359 {
1360 foreach (OnRemovePresenceDelegate d in handlerRemovePresence.GetInvocationList())
1361 {
1362 try
1363 {
1364 d(agentId);
1365 }
1366 catch (Exception e)
1367 {
1368 m_log.ErrorFormat(
1369 "[EVENT MANAGER]: Delegate for TriggerOnRemovePresence failed - continuing. {0} {1}",
1370 e.Message, e.StackTrace);
1371 }
1372 }
1373 }
1374 }
1375  
1376 public void TriggerOnBackup(ISimulationDataService dstore, bool forced)
1377 {
1378 OnBackupDelegate handlerOnAttach = OnBackup;
1379 if (handlerOnAttach != null)
1380 {
1381 foreach (OnBackupDelegate d in handlerOnAttach.GetInvocationList())
1382 {
1383 try
1384 {
1385 d(dstore, forced);
1386 }
1387 catch (Exception e)
1388 {
1389 m_log.ErrorFormat(
1390 "[EVENT MANAGER]: Delegate for TriggerOnBackup failed - continuing. {0} {1}",
1391 e.Message, e.StackTrace);
1392 }
1393 }
1394 }
1395 }
1396  
1397 public void TriggerParcelPrimCountUpdate()
1398 {
1399 OnParcelPrimCountUpdateDelegate handlerParcelPrimCountUpdate = OnParcelPrimCountUpdate;
1400 if (handlerParcelPrimCountUpdate != null)
1401 {
1402 foreach (OnParcelPrimCountUpdateDelegate d in handlerParcelPrimCountUpdate.GetInvocationList())
1403 {
1404 try
1405 {
1406 d();
1407 }
1408 catch (Exception e)
1409 {
1410 m_log.ErrorFormat(
1411 "[EVENT MANAGER]: Delegate for TriggerParcelPrimCountUpdate failed - continuing. {0} {1}",
1412 e.Message, e.StackTrace);
1413 }
1414 }
1415 }
1416 }
1417  
1418 public void TriggerMoneyTransfer(Object sender, MoneyTransferArgs args)
1419 {
1420 MoneyTransferEvent handlerMoneyTransfer = OnMoneyTransfer;
1421 if (handlerMoneyTransfer != null)
1422 {
1423 foreach (MoneyTransferEvent d in handlerMoneyTransfer.GetInvocationList())
1424 {
1425 try
1426 {
1427 d(sender, args);
1428 }
1429 catch (Exception e)
1430 {
1431 m_log.ErrorFormat(
1432 "[EVENT MANAGER]: Delegate for TriggerMoneyTransfer failed - continuing. {0} {1}",
1433 e.Message, e.StackTrace);
1434 }
1435 }
1436 }
1437 }
1438  
1439 public void TriggerTerrainTick()
1440 {
1441 OnTerrainTickDelegate handlerTerrainTick = OnTerrainTick;
1442 if (handlerTerrainTick != null)
1443 {
1444 foreach (OnTerrainTickDelegate d in handlerTerrainTick.GetInvocationList())
1445 {
1446 try
1447 {
1448 d();
1449 }
1450 catch (Exception e)
1451 {
1452 m_log.ErrorFormat(
1453 "[EVENT MANAGER]: Delegate for TriggerTerrainTick failed - continuing. {0} {1}",
1454 e.Message, e.StackTrace);
1455 }
1456 }
1457 }
1458 }
1459  
1460 public void TriggerTerrainTainted()
1461 {
1462 OnTerrainTaintedDelegate handlerTerrainTainted = OnTerrainTainted;
1463 if (handlerTerrainTainted != null)
1464 {
1465 foreach (OnTerrainTaintedDelegate d in handlerTerrainTainted.GetInvocationList())
1466 {
1467 try
1468 {
1469 d();
1470 }
1471 catch (Exception e)
1472 {
1473 m_log.ErrorFormat(
1474 "[EVENT MANAGER]: Delegate for TriggerTerrainTainted failed - continuing. {0} {1}",
1475 e.Message, e.StackTrace);
1476 }
1477 }
1478 }
1479 }
1480  
1481 public void TriggerParcelPrimCountAdd(SceneObjectGroup obj)
1482 {
1483 OnParcelPrimCountAddDelegate handlerParcelPrimCountAdd = OnParcelPrimCountAdd;
1484 if (handlerParcelPrimCountAdd != null)
1485 {
1486 foreach (OnParcelPrimCountAddDelegate d in handlerParcelPrimCountAdd.GetInvocationList())
1487 {
1488 try
1489 {
1490 d(obj);
1491 }
1492 catch (Exception e)
1493 {
1494 m_log.ErrorFormat(
1495 "[EVENT MANAGER]: Delegate for TriggerParcelPrimCountAdd failed - continuing. {0} {1}",
1496 e.Message, e.StackTrace);
1497 }
1498 }
1499 }
1500 }
1501  
1502 public void TriggerObjectAddedToScene(SceneObjectGroup obj)
1503 {
1504 Action<SceneObjectGroup> handler = OnObjectAddedToScene;
1505 if (handler != null)
1506 {
1507 foreach (Action<SceneObjectGroup> d in handler.GetInvocationList())
1508 {
1509 try
1510 {
1511 d(obj);
1512 }
1513 catch (Exception e)
1514 {
1515 m_log.ErrorFormat(
1516 "[EVENT MANAGER]: Delegate for TriggerObjectAddedToScene failed - continuing. {0} {1}",
1517 e.Message, e.StackTrace);
1518 }
1519 }
1520 }
1521 }
1522  
1523 public void TriggerObjectBeingRemovedFromScene(SceneObjectGroup obj)
1524 {
1525 ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = OnObjectBeingRemovedFromScene;
1526 if (handlerObjectBeingRemovedFromScene != null)
1527 {
1528 foreach (ObjectBeingRemovedFromScene d in handlerObjectBeingRemovedFromScene.GetInvocationList())
1529 {
1530 try
1531 {
1532 d(obj);
1533 }
1534 catch (Exception e)
1535 {
1536 m_log.ErrorFormat(
1537 "[EVENT MANAGER]: Delegate for TriggerObjectBeingRemovedFromScene failed - continuing. {0} {1}",
1538 e.Message, e.StackTrace);
1539 }
1540 }
1541 }
1542 }
1543  
1544 public void TriggerObjectAddedToPhysicalScene(SceneObjectPart obj)
1545 {
1546 Action<SceneObjectPart> handler = OnObjectAddedToPhysicalScene;
1547 if (handler != null)
1548 {
1549 foreach (Action<SceneObjectPart> d in handler.GetInvocationList())
1550 {
1551 try
1552 {
1553 d(obj);
1554 }
1555 catch (Exception e)
1556 {
1557 m_log.ErrorFormat(
1558 "[EVENT MANAGER]: Delegate for TriggerObjectAddedToPhysicalScene failed - continuing. {0} {1}",
1559 e.Message, e.StackTrace);
1560 }
1561 }
1562 }
1563 }
1564  
1565 public void TriggerObjectRemovedFromPhysicalScene(SceneObjectPart obj)
1566 {
1567 Action<SceneObjectPart> handler = OnObjectRemovedFromPhysicalScene;
1568 if (handler != null)
1569 {
1570 foreach (Action<SceneObjectPart> d in handler.GetInvocationList())
1571 {
1572 try
1573 {
1574 d(obj);
1575 }
1576 catch (Exception e)
1577 {
1578 m_log.ErrorFormat(
1579 "[EVENT MANAGER]: Delegate for TriggerObjectRemovedFromPhysicalScene failed - continuing. {0} {1}",
1580 e.Message, e.StackTrace);
1581 }
1582 }
1583 }
1584 }
1585  
1586 public void TriggerShutdown()
1587 {
1588 Action handlerShutdown = OnShutdown;
1589 if (handlerShutdown != null)
1590 {
1591 foreach (Action d in handlerShutdown.GetInvocationList())
1592 {
1593 try
1594 {
1595 d();
1596 }
1597 catch (Exception e)
1598 {
1599 m_log.ErrorFormat(
1600 "[EVENT MANAGER]: Delegate for TriggerShutdown failed - continuing. {0} {1}",
1601 e.Message, e.StackTrace);
1602 }
1603 }
1604 }
1605 }
1606  
1607 public void TriggerObjectGrab(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
1608 {
1609 ObjectGrabDelegate handlerObjectGrab = OnObjectGrab;
1610 if (handlerObjectGrab != null)
1611 {
1612 foreach (ObjectGrabDelegate d in handlerObjectGrab.GetInvocationList())
1613 {
1614 try
1615 {
1616 d(localID, originalID, offsetPos, remoteClient, surfaceArgs);
1617 }
1618 catch (Exception e)
1619 {
1620 m_log.ErrorFormat(
1621 "[EVENT MANAGER]: Delegate for TriggerObjectGrab failed - continuing. {0} {1}",
1622 e.Message, e.StackTrace);
1623 }
1624 }
1625 }
1626 }
1627  
1628 public void TriggerObjectGrabbing(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
1629 {
1630 ObjectGrabDelegate handlerObjectGrabbing = OnObjectGrabbing;
1631 if (handlerObjectGrabbing != null)
1632 {
1633 foreach (ObjectGrabDelegate d in handlerObjectGrabbing.GetInvocationList())
1634 {
1635 try
1636 {
1637 d(localID, originalID, offsetPos, remoteClient, surfaceArgs);
1638 }
1639 catch (Exception e)
1640 {
1641 m_log.ErrorFormat(
1642 "[EVENT MANAGER]: Delegate for TriggerObjectGrabbing failed - continuing. {0} {1}",
1643 e.Message, e.StackTrace);
1644 }
1645 }
1646 }
1647 }
1648  
1649 public void TriggerObjectDeGrab(uint localID, uint originalID, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
1650 {
1651 ObjectDeGrabDelegate handlerObjectDeGrab = OnObjectDeGrab;
1652 if (handlerObjectDeGrab != null)
1653 {
1654 foreach (ObjectDeGrabDelegate d in handlerObjectDeGrab.GetInvocationList())
1655 {
1656 try
1657 {
1658 d(localID, originalID, remoteClient, surfaceArgs);
1659 }
1660 catch (Exception e)
1661 {
1662 m_log.ErrorFormat(
1663 "[EVENT MANAGER]: Delegate for TriggerObjectDeGrab failed - continuing. {0} {1}",
1664 e.Message, e.StackTrace);
1665 }
1666 }
1667 }
1668 }
1669  
1670 public void TriggerScriptReset(uint localID, UUID itemID)
1671 {
1672 ScriptResetDelegate handlerScriptReset = OnScriptReset;
1673 if (handlerScriptReset != null)
1674 {
1675 foreach (ScriptResetDelegate d in handlerScriptReset.GetInvocationList())
1676 {
1677 try
1678 {
1679 d(localID, itemID);
1680 }
1681 catch (Exception e)
1682 {
1683 m_log.ErrorFormat(
1684 "[EVENT MANAGER]: Delegate for TriggerScriptReset failed - continuing. {0} {1}",
1685 e.Message, e.StackTrace);
1686 }
1687 }
1688 }
1689 }
1690  
1691 public void TriggerRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource)
1692 {
1693 NewRezScript handlerRezScript = OnRezScript;
1694 if (handlerRezScript != null)
1695 {
1696 foreach (NewRezScript d in handlerRezScript.GetInvocationList())
1697 {
1698 try
1699 {
1700 d(localID, itemID, script, startParam, postOnRez, engine, stateSource);
1701 }
1702 catch (Exception e)
1703 {
1704 m_log.ErrorFormat(
1705 "[EVENT MANAGER]: Delegate for TriggerRezScript failed - continuing. {0} {1}",
1706 e.Message, e.StackTrace);
1707 }
1708 }
1709 }
1710 }
1711  
1712 public void TriggerStartScript(uint localID, UUID itemID)
1713 {
1714 StartScript handlerStartScript = OnStartScript;
1715 if (handlerStartScript != null)
1716 {
1717 foreach (StartScript d in handlerStartScript.GetInvocationList())
1718 {
1719 try
1720 {
1721 d(localID, itemID);
1722 }
1723 catch (Exception e)
1724 {
1725 m_log.ErrorFormat(
1726 "[EVENT MANAGER]: Delegate for TriggerStartScript failed - continuing. {0} {1}",
1727 e.Message, e.StackTrace);
1728 }
1729 }
1730 }
1731 }
1732  
1733 public void TriggerStopScript(uint localID, UUID itemID)
1734 {
1735 StopScript handlerStopScript = OnStopScript;
1736 if (handlerStopScript != null)
1737 {
1738 foreach (StopScript d in handlerStopScript.GetInvocationList())
1739 {
1740 try
1741 {
1742 d(localID, itemID);
1743 }
1744 catch (Exception e)
1745 {
1746 m_log.ErrorFormat(
1747 "[EVENT MANAGER]: Delegate for TriggerStopScript failed - continuing. {0} {1}",
1748 e.Message, e.StackTrace);
1749 }
1750 }
1751 }
1752 }
1753  
1754 public void TriggerRemoveScript(uint localID, UUID itemID)
1755 {
1756 RemoveScript handlerRemoveScript = OnRemoveScript;
1757 if (handlerRemoveScript != null)
1758 {
1759 foreach (RemoveScript d in handlerRemoveScript.GetInvocationList())
1760 {
1761 try
1762 {
1763 d(localID, itemID);
1764 }
1765 catch (Exception e)
1766 {
1767 m_log.ErrorFormat(
1768 "[EVENT MANAGER]: Delegate for TriggerRemoveScript failed - continuing. {0} {1}",
1769 e.Message, e.StackTrace);
1770 }
1771 }
1772 }
1773 }
1774  
1775 public bool TriggerGroupMove(UUID groupID, Vector3 delta)
1776 {
1777 bool result = true;
1778  
1779 SceneGroupMoved handlerSceneGroupMove = OnSceneGroupMove;
1780 if (handlerSceneGroupMove != null)
1781 {
1782 foreach (SceneGroupMoved d in handlerSceneGroupMove.GetInvocationList())
1783 {
1784 try
1785 {
1786 if (d(groupID, delta) == false)
1787 result = false;
1788 }
1789 catch (Exception e)
1790 {
1791 m_log.ErrorFormat(
1792 "[EVENT MANAGER]: Delegate for TriggerOnAttach failed - continuing. {0} {1}",
1793 e.Message, e.StackTrace);
1794 }
1795 }
1796 }
1797  
1798 return result;
1799 }
1800  
1801 public bool TriggerGroupSpinStart(UUID groupID)
1802 {
1803 bool result = true;
1804  
1805 SceneGroupSpinStarted handlerSceneGroupSpinStarted = OnSceneGroupSpinStart;
1806 if (handlerSceneGroupSpinStarted != null)
1807 {
1808 foreach (SceneGroupSpinStarted d in handlerSceneGroupSpinStarted.GetInvocationList())
1809 {
1810 try
1811 {
1812 if (d(groupID) == false)
1813 result = false;
1814 }
1815 catch (Exception e)
1816 {
1817 m_log.ErrorFormat(
1818 "[EVENT MANAGER]: Delegate for TriggerGroupSpinStart failed - continuing. {0} {1}",
1819 e.Message, e.StackTrace);
1820 }
1821 }
1822 }
1823  
1824 return result;
1825 }
1826  
1827 public bool TriggerGroupSpin(UUID groupID, Quaternion rotation)
1828 {
1829 bool result = true;
1830  
1831 SceneGroupSpun handlerSceneGroupSpin = OnSceneGroupSpin;
1832 if (handlerSceneGroupSpin != null)
1833 {
1834 foreach (SceneGroupSpun d in handlerSceneGroupSpin.GetInvocationList())
1835 {
1836 try
1837 {
1838 if (d(groupID, rotation) == false)
1839 result = false;
1840 }
1841 catch (Exception e)
1842 {
1843 m_log.ErrorFormat(
1844 "[EVENT MANAGER]: Delegate for TriggerGroupSpin failed - continuing. {0} {1}",
1845 e.Message, e.StackTrace);
1846 }
1847 }
1848 }
1849  
1850 return result;
1851 }
1852  
1853 public void TriggerGroupGrab(UUID groupID, Vector3 offset, UUID userID)
1854 {
1855 SceneGroupGrabed handlerSceneGroupGrab = OnSceneGroupGrab;
1856 if (handlerSceneGroupGrab != null)
1857 {
1858 foreach (SceneGroupGrabed d in handlerSceneGroupGrab.GetInvocationList())
1859 {
1860 try
1861 {
1862 d(groupID, offset, userID);
1863 }
1864 catch (Exception e)
1865 {
1866 m_log.ErrorFormat(
1867 "[EVENT MANAGER]: Delegate for TriggerGroupGrab failed - continuing. {0} {1}",
1868 e.Message, e.StackTrace);
1869 }
1870 }
1871 }
1872 }
1873  
1874 public void TriggerLandObjectAdded(ILandObject newParcel)
1875 {
1876 LandObjectAdded handlerLandObjectAdded = OnLandObjectAdded;
1877 if (handlerLandObjectAdded != null)
1878 {
1879 foreach (LandObjectAdded d in handlerLandObjectAdded.GetInvocationList())
1880 {
1881 try
1882 {
1883 d(newParcel);
1884 }
1885 catch (Exception e)
1886 {
1887 m_log.ErrorFormat(
1888 "[EVENT MANAGER]: Delegate for TriggerLandObjectAdded failed - continuing. {0} {1}",
1889 e.Message, e.StackTrace);
1890 }
1891 }
1892 }
1893 }
1894  
1895 public void TriggerLandObjectRemoved(UUID globalID)
1896 {
1897 LandObjectRemoved handlerLandObjectRemoved = OnLandObjectRemoved;
1898 if (handlerLandObjectRemoved != null)
1899 {
1900 foreach (LandObjectRemoved d in handlerLandObjectRemoved.GetInvocationList())
1901 {
1902 try
1903 {
1904 d(globalID);
1905 }
1906 catch (Exception e)
1907 {
1908 m_log.ErrorFormat(
1909 "[EVENT MANAGER]: Delegate for TriggerLandObjectRemoved failed - continuing. {0} {1}",
1910 e.Message, e.StackTrace);
1911 }
1912 }
1913 }
1914 }
1915  
1916 public void TriggerLandObjectUpdated(uint localParcelID, ILandObject newParcel)
1917 {
1918 TriggerLandObjectAdded(newParcel);
1919 }
1920  
1921 public void TriggerAvatarEnteringNewParcel(ScenePresence avatar, int localLandID, UUID regionID)
1922 {
1923 AvatarEnteringNewParcel handlerAvatarEnteringNewParcel = OnAvatarEnteringNewParcel;
1924 if (handlerAvatarEnteringNewParcel != null)
1925 {
1926 foreach (AvatarEnteringNewParcel d in handlerAvatarEnteringNewParcel.GetInvocationList())
1927 {
1928 try
1929 {
1930 d(avatar, localLandID, regionID);
1931 }
1932 catch (Exception e)
1933 {
1934 m_log.ErrorFormat(
1935 "[EVENT MANAGER]: Delegate for TriggerAvatarEnteringNewParcel failed - continuing. {0} {1}",
1936 e.Message, e.StackTrace);
1937 }
1938 }
1939 }
1940 }
1941  
1942 public void TriggerAvatarAppearanceChanged(ScenePresence avatar)
1943 {
1944 AvatarAppearanceChange handler = OnAvatarAppearanceChange;
1945 if (handler != null)
1946 {
1947 foreach (AvatarAppearanceChange d in handler.GetInvocationList())
1948 {
1949 try
1950 {
1951 d(avatar);
1952 }
1953 catch (Exception e)
1954 {
1955 m_log.ErrorFormat(
1956 "[EVENT MANAGER]: Delegate for TriggerAvatarAppearanceChanged failed - continuing. {0} {1}",
1957 e.Message, e.StackTrace);
1958 }
1959 }
1960 }
1961 }
1962  
1963 public void TriggerIncomingInstantMessage(GridInstantMessage message)
1964 {
1965 IncomingInstantMessage handlerIncomingInstantMessage = OnIncomingInstantMessage;
1966 if (handlerIncomingInstantMessage != null)
1967 {
1968 foreach (IncomingInstantMessage d in handlerIncomingInstantMessage.GetInvocationList())
1969 {
1970 try
1971 {
1972 d(message);
1973 }
1974 catch (Exception e)
1975 {
1976 m_log.ErrorFormat(
1977 "[EVENT MANAGER]: Delegate for TriggerIncomingInstantMessage failed - continuing. {0} {1}",
1978 e.Message, e.StackTrace);
1979 }
1980 }
1981 }
1982 }
1983  
1984 public void TriggerUnhandledInstantMessage(GridInstantMessage message)
1985 {
1986 IncomingInstantMessage handlerUnhandledInstantMessage = OnUnhandledInstantMessage;
1987 if (handlerUnhandledInstantMessage != null)
1988 {
1989 foreach (IncomingInstantMessage d in handlerUnhandledInstantMessage.GetInvocationList())
1990 {
1991 try
1992 {
1993 d(message);
1994 }
1995 catch (Exception e)
1996 {
1997 m_log.ErrorFormat(
1998 "[EVENT MANAGER]: Delegate for TriggerOnAttach failed - continuing. {0} {1}",
1999 e.Message, e.StackTrace);
2000 }
2001 }
2002 }
2003 }
2004  
2005 public void TriggerClientClosed(UUID ClientID, Scene scene)
2006 {
2007 ClientClosed handlerClientClosed = OnClientClosed;
2008 if (handlerClientClosed != null)
2009 {
2010 foreach (ClientClosed d in handlerClientClosed.GetInvocationList())
2011 {
2012 try
2013 {
2014 d(ClientID, scene);
2015 }
2016 catch (Exception e)
2017 {
2018 m_log.ErrorFormat(
2019 "[EVENT MANAGER]: Delegate for TriggerClientClosed failed - continuing. {0} {1}",
2020 e.Message, e.StackTrace);
2021 }
2022 }
2023 }
2024 }
2025  
2026 public void TriggerOnMakeChildAgent(ScenePresence presence)
2027 {
2028 OnMakeChildAgentDelegate handlerMakeChildAgent = OnMakeChildAgent;
2029 if (handlerMakeChildAgent != null)
2030 {
2031 foreach (OnMakeChildAgentDelegate d in handlerMakeChildAgent.GetInvocationList())
2032 {
2033 try
2034 {
2035 d(presence);
2036 }
2037 catch (Exception e)
2038 {
2039 m_log.ErrorFormat(
2040 "[EVENT MANAGER]: Delegate for TriggerOnMakeChildAgent failed - continuing. {0} {1}",
2041 e.Message, e.StackTrace);
2042 }
2043 }
2044 }
2045 }
2046  
2047 public void TriggerOnSendNewWindlightProfileTargeted(RegionLightShareData wl, UUID user)
2048 {
2049 OnSendNewWindlightProfileTargetedDelegate handlerSendNewWindlightProfileTargeted = OnSendNewWindlightProfileTargeted;
2050 if (handlerSendNewWindlightProfileTargeted != null)
2051 {
2052 handlerSendNewWindlightProfileTargeted(wl, user);
2053 }
2054 }
2055  
2056 public void TriggerOnSaveNewWindlightProfile()
2057 {
2058 OnSaveNewWindlightProfileDelegate handlerSaveNewWindlightProfile = OnSaveNewWindlightProfile;
2059 if (handlerSaveNewWindlightProfile != null)
2060 {
2061 handlerSaveNewWindlightProfile();
2062 }
2063 }
2064  
2065 public void TriggerOnMakeRootAgent(ScenePresence presence)
2066 {
2067 Action<ScenePresence> handlerMakeRootAgent = OnMakeRootAgent;
2068 if (handlerMakeRootAgent != null)
2069 {
2070 foreach (Action<ScenePresence> d in handlerMakeRootAgent.GetInvocationList())
2071 {
2072 try
2073 {
2074 d(presence);
2075 }
2076 catch (Exception e)
2077 {
2078 m_log.ErrorFormat(
2079 "[EVENT MANAGER]: Delegate for TriggerOnMakeRootAgent failed - continuing. {0} {1}",
2080 e.Message, e.StackTrace);
2081 }
2082 }
2083 }
2084 }
2085  
2086 public void TriggerOnIncomingSceneObject(SceneObjectGroup so)
2087 {
2088 OnIncomingSceneObjectDelegate handlerIncomingSceneObject = OnIncomingSceneObject;
2089 if (handlerIncomingSceneObject != null)
2090 {
2091 foreach (OnIncomingSceneObjectDelegate d in handlerIncomingSceneObject.GetInvocationList())
2092 {
2093 try
2094 {
2095 d(so);
2096 }
2097 catch (Exception e)
2098 {
2099 m_log.ErrorFormat(
2100 "[EVENT MANAGER]: Delegate for TriggerOnIncomingSceneObject failed - continuing. {0} {1}",
2101 e.Message, e.StackTrace);
2102 }
2103 }
2104 }
2105 }
2106  
2107 public void TriggerOnRegisterCaps(UUID agentID, Caps caps)
2108 {
2109 RegisterCapsEvent handlerRegisterCaps = OnRegisterCaps;
2110 if (handlerRegisterCaps != null)
2111 {
2112 foreach (RegisterCapsEvent d in handlerRegisterCaps.GetInvocationList())
2113 {
2114 try
2115 {
2116 d(agentID, caps);
2117 }
2118 catch (Exception e)
2119 {
2120 m_log.ErrorFormat(
2121 "[EVENT MANAGER]: Delegate for TriggerOnRegisterCaps failed - continuing. {0} {1}",
2122 e.Message, e.StackTrace);
2123 }
2124 }
2125 }
2126 }
2127  
2128 public void TriggerOnDeregisterCaps(UUID agentID, Caps caps)
2129 {
2130 DeregisterCapsEvent handlerDeregisterCaps = OnDeregisterCaps;
2131 if (handlerDeregisterCaps != null)
2132 {
2133 foreach (DeregisterCapsEvent d in handlerDeregisterCaps.GetInvocationList())
2134 {
2135 try
2136 {
2137 d(agentID, caps);
2138 }
2139 catch (Exception e)
2140 {
2141 m_log.ErrorFormat(
2142 "[EVENT MANAGER]: Delegate for TriggerOnDeregisterCaps failed - continuing. {0} {1}",
2143 e.Message, e.StackTrace);
2144 }
2145 }
2146 }
2147 }
2148  
2149 public void TriggerOnNewInventoryItemUploadComplete(UUID agentID, AssetType type, UUID AssetID, String AssetName, int userlevel)
2150 {
2151 NewInventoryItemUploadComplete handlerNewInventoryItemUpdateComplete = OnNewInventoryItemUploadComplete;
2152 if (handlerNewInventoryItemUpdateComplete != null)
2153 {
2154 foreach (NewInventoryItemUploadComplete d in handlerNewInventoryItemUpdateComplete.GetInvocationList())
2155 {
2156 try
2157 {
2158 d(agentID, type, AssetID, AssetName, userlevel);
2159 }
2160 catch (Exception e)
2161 {
2162 m_log.ErrorFormat(
2163 "[EVENT MANAGER]: Delegate for TriggerOnNewInventoryItemUploadComplete failed - continuing. {0} {1}",
2164 e.Message, e.StackTrace);
2165 }
2166 }
2167 }
2168 }
2169  
2170 public void TriggerLandBuy(Object sender, LandBuyArgs args)
2171 {
2172 LandBuy handlerLandBuy = OnLandBuy;
2173 if (handlerLandBuy != null)
2174 {
2175 foreach (LandBuy d in handlerLandBuy.GetInvocationList())
2176 {
2177 try
2178 {
2179 d(sender, args);
2180 }
2181 catch (Exception e)
2182 {
2183 m_log.ErrorFormat(
2184 "[EVENT MANAGER]: Delegate for TriggerLandBuy failed - continuing. {0} {1}",
2185 e.Message, e.StackTrace);
2186 }
2187 }
2188 }
2189 }
2190  
2191 public void TriggerValidateLandBuy(Object sender, LandBuyArgs args)
2192 {
2193 LandBuy handlerValidateLandBuy = OnValidateLandBuy;
2194 if (handlerValidateLandBuy != null)
2195 {
2196 foreach (LandBuy d in handlerValidateLandBuy.GetInvocationList())
2197 {
2198 try
2199 {
2200 d(sender, args);
2201 }
2202 catch (Exception e)
2203 {
2204 m_log.ErrorFormat(
2205 "[EVENT MANAGER]: Delegate for TriggerValidateLandBuy failed - continuing. {0} {1}",
2206 e.Message, e.StackTrace);
2207 }
2208 }
2209 }
2210 }
2211  
2212 public void TriggerAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 currentpos)
2213 {
2214 ScriptAtTargetEvent handlerScriptAtTargetEvent = OnScriptAtTargetEvent;
2215 if (handlerScriptAtTargetEvent != null)
2216 {
2217 foreach (ScriptAtTargetEvent d in handlerScriptAtTargetEvent.GetInvocationList())
2218 {
2219 try
2220 {
2221 d(localID, handle, targetpos, currentpos);
2222 }
2223 catch (Exception e)
2224 {
2225 m_log.ErrorFormat(
2226 "[EVENT MANAGER]: Delegate for TriggerAtTargetEvent failed - continuing. {0} {1}",
2227 e.Message, e.StackTrace);
2228 }
2229 }
2230 }
2231 }
2232  
2233 public void TriggerNotAtTargetEvent(uint localID)
2234 {
2235 ScriptNotAtTargetEvent handlerScriptNotAtTargetEvent = OnScriptNotAtTargetEvent;
2236 if (handlerScriptNotAtTargetEvent != null)
2237 {
2238 foreach (ScriptNotAtTargetEvent d in handlerScriptNotAtTargetEvent.GetInvocationList())
2239 {
2240 try
2241 {
2242 d(localID);
2243 }
2244 catch (Exception e)
2245 {
2246 m_log.ErrorFormat(
2247 "[EVENT MANAGER]: Delegate for TriggerNotAtTargetEvent failed - continuing. {0} {1}",
2248 e.Message, e.StackTrace);
2249 }
2250 }
2251 }
2252 }
2253  
2254 public void TriggerAtRotTargetEvent(uint localID, uint handle, Quaternion targetrot, Quaternion currentrot)
2255 {
2256 ScriptAtRotTargetEvent handlerScriptAtRotTargetEvent = OnScriptAtRotTargetEvent;
2257 if (handlerScriptAtRotTargetEvent != null)
2258 {
2259 foreach (ScriptAtRotTargetEvent d in handlerScriptAtRotTargetEvent.GetInvocationList())
2260 {
2261 try
2262 {
2263 d(localID, handle, targetrot, currentrot);
2264 }
2265 catch (Exception e)
2266 {
2267 m_log.ErrorFormat(
2268 "[EVENT MANAGER]: Delegate for TriggerAtRotTargetEvent failed - continuing. {0} {1}",
2269 e.Message, e.StackTrace);
2270 }
2271 }
2272 }
2273 }
2274  
2275 public void TriggerNotAtRotTargetEvent(uint localID)
2276 {
2277 ScriptNotAtRotTargetEvent handlerScriptNotAtRotTargetEvent = OnScriptNotAtRotTargetEvent;
2278 if (handlerScriptNotAtRotTargetEvent != null)
2279 {
2280 foreach (ScriptNotAtRotTargetEvent d in handlerScriptNotAtRotTargetEvent.GetInvocationList())
2281 {
2282 try
2283 {
2284 d(localID);
2285 }
2286 catch (Exception e)
2287 {
2288 m_log.ErrorFormat(
2289 "[EVENT MANAGER]: Delegate for TriggerNotAtRotTargetEvent failed - continuing. {0} {1}",
2290 e.Message, e.StackTrace);
2291 }
2292 }
2293 }
2294 }
2295  
2296 public void TriggerMovingStartEvent(uint localID)
2297 {
2298 ScriptMovingStartEvent handlerScriptMovingStartEvent = OnScriptMovingStartEvent;
2299 if (handlerScriptMovingStartEvent != null)
2300 {
2301 foreach (ScriptMovingStartEvent d in handlerScriptMovingStartEvent.GetInvocationList())
2302 {
2303 try
2304 {
2305 d(localID);
2306 }
2307 catch (Exception e)
2308 {
2309 m_log.ErrorFormat(
2310 "[EVENT MANAGER]: Delegate for TriggerMovingStartEvent failed - continuing. {0} {1}",
2311 e.Message, e.StackTrace);
2312 }
2313 }
2314 }
2315 }
2316  
2317 public void TriggerMovingEndEvent(uint localID)
2318 {
2319 ScriptMovingEndEvent handlerScriptMovingEndEvent = OnScriptMovingEndEvent;
2320 if (handlerScriptMovingEndEvent != null)
2321 {
2322 foreach (ScriptMovingEndEvent d in handlerScriptMovingEndEvent.GetInvocationList())
2323 {
2324 try
2325 {
2326 d(localID);
2327 }
2328 catch (Exception e)
2329 {
2330 m_log.ErrorFormat(
2331 "[EVENT MANAGER]: Delegate for TriggerMovingEndEvent failed - continuing. {0} {1}",
2332 e.Message, e.StackTrace);
2333 }
2334 }
2335 }
2336 }
2337  
2338 public void TriggerRequestChangeWaterHeight(float height)
2339 {
2340 if (height < 0)
2341 {
2342 // ignore negative water height
2343 return;
2344 }
2345  
2346 RequestChangeWaterHeight handlerRequestChangeWaterHeight = OnRequestChangeWaterHeight;
2347 if (handlerRequestChangeWaterHeight != null)
2348 {
2349 foreach (RequestChangeWaterHeight d in handlerRequestChangeWaterHeight.GetInvocationList())
2350 {
2351 try
2352 {
2353 d(height);
2354 }
2355 catch (Exception e)
2356 {
2357 m_log.ErrorFormat(
2358 "[EVENT MANAGER]: Delegate for TriggerRequestChangeWaterHeight failed - continuing. {0} {1}",
2359 e.Message, e.StackTrace);
2360 }
2361 }
2362 }
2363 }
2364  
2365 public void TriggerAvatarKill(uint KillerObjectLocalID, ScenePresence DeadAvatar)
2366 {
2367 AvatarKillData handlerAvatarKill = OnAvatarKilled;
2368 if (handlerAvatarKill != null)
2369 {
2370 foreach (AvatarKillData d in handlerAvatarKill.GetInvocationList())
2371 {
2372 try
2373 {
2374 d(KillerObjectLocalID, DeadAvatar);
2375 }
2376 catch (Exception e)
2377 {
2378 m_log.ErrorFormat(
2379 "[EVENT MANAGER]: Delegate for TriggerAvatarKill failed - continuing. {0} {1}",
2380 e.Message, e.StackTrace);
2381 }
2382 }
2383 }
2384 }
2385  
2386 public void TriggerSignificantClientMovement(ScenePresence presence)
2387 {
2388 Action<ScenePresence> handlerSignificantClientMovement = OnSignificantClientMovement;
2389 if (handlerSignificantClientMovement != null)
2390 {
2391 foreach (Action<ScenePresence> d in handlerSignificantClientMovement.GetInvocationList())
2392 {
2393 try
2394 {
2395 d(presence);
2396 }
2397 catch (Exception e)
2398 {
2399 m_log.ErrorFormat(
2400 "[EVENT MANAGER]: Delegate for TriggerSignificantClientMovement failed - continuing. {0} {1}",
2401 e.Message, e.StackTrace);
2402 }
2403 }
2404 }
2405 }
2406  
2407 public void TriggerOnChatFromWorld(Object sender, OSChatMessage chat)
2408 {
2409 ChatFromWorldEvent handlerChatFromWorld = OnChatFromWorld;
2410 if (handlerChatFromWorld != null)
2411 {
2412 foreach (ChatFromWorldEvent d in handlerChatFromWorld.GetInvocationList())
2413 {
2414 try
2415 {
2416 d(sender, chat);
2417 }
2418 catch (Exception e)
2419 {
2420 m_log.ErrorFormat(
2421 "[EVENT MANAGER]: Delegate for TriggerOnChatFromWorld failed - continuing. {0} {1}",
2422 e.Message, e.StackTrace);
2423 }
2424 }
2425 }
2426 }
2427  
2428 public void TriggerOnChatFromClient(Object sender, OSChatMessage chat)
2429 {
2430 ChatFromClientEvent handlerChatFromClient = OnChatFromClient;
2431 if (handlerChatFromClient != null)
2432 {
2433 foreach (ChatFromClientEvent d in handlerChatFromClient.GetInvocationList())
2434 {
2435 try
2436 {
2437 d(sender, chat);
2438 }
2439 catch (Exception e)
2440 {
2441 m_log.ErrorFormat(
2442 "[EVENT MANAGER]: Delegate for TriggerOnChatFromClient failed - continuing. {0} {1}",
2443 e.Message, e.StackTrace);
2444 }
2445 }
2446 }
2447 }
2448  
2449 public void TriggerOnChatToClients(
2450 UUID senderID, HashSet<UUID> receiverIDs,
2451 string message, ChatTypeEnum type, Vector3 fromPos, string fromName,
2452 ChatSourceType src, ChatAudibleLevel level)
2453 {
2454 ChatToClientsEvent handler = OnChatToClients;
2455 if (handler != null)
2456 {
2457 foreach (ChatToClientsEvent d in handler.GetInvocationList())
2458 {
2459 try
2460 {
2461 d(senderID, receiverIDs, message, type, fromPos, fromName, src, level);
2462 }
2463 catch (Exception e)
2464 {
2465 m_log.ErrorFormat(
2466 "[EVENT MANAGER]: Delegate for TriggerOnChatToClients failed - continuing. {0} {1}",
2467 e.Message, e.StackTrace);
2468 }
2469 }
2470 }
2471 }
2472  
2473 public void TriggerOnChatBroadcast(Object sender, OSChatMessage chat)
2474 {
2475 ChatBroadcastEvent handlerChatBroadcast = OnChatBroadcast;
2476 if (handlerChatBroadcast != null)
2477 {
2478 foreach (ChatBroadcastEvent d in handlerChatBroadcast.GetInvocationList())
2479 {
2480 try
2481 {
2482 d(sender, chat);
2483 }
2484 catch (Exception e)
2485 {
2486 m_log.ErrorFormat(
2487 "[EVENT MANAGER]: Delegate for TriggerOnChatBroadcast failed - continuing. {0} {1}",
2488 e.Message, e.StackTrace);
2489 }
2490 }
2491 }
2492 }
2493  
2494 internal void TriggerControlEvent(UUID scriptUUID, UUID avatarID, uint held, uint _changed)
2495 {
2496 ScriptControlEvent handlerScriptControlEvent = OnScriptControlEvent;
2497 if (handlerScriptControlEvent != null)
2498 {
2499 foreach (ScriptControlEvent d in handlerScriptControlEvent.GetInvocationList())
2500 {
2501 try
2502 {
2503 d(scriptUUID, avatarID, held, _changed);
2504 }
2505 catch (Exception e)
2506 {
2507 m_log.ErrorFormat(
2508 "[EVENT MANAGER]: Delegate for TriggerControlEvent failed - continuing. {0} {1}",
2509 e.Message, e.StackTrace);
2510 }
2511 }
2512 }
2513 }
2514  
2515 public void TriggerNoticeNoLandDataFromStorage()
2516 {
2517 NoticeNoLandDataFromStorage handlerNoticeNoLandDataFromStorage = OnNoticeNoLandDataFromStorage;
2518 if (handlerNoticeNoLandDataFromStorage != null)
2519 {
2520 foreach (NoticeNoLandDataFromStorage d in handlerNoticeNoLandDataFromStorage.GetInvocationList())
2521 {
2522 try
2523 {
2524 d();
2525 }
2526 catch (Exception e)
2527 {
2528 m_log.ErrorFormat(
2529 "[EVENT MANAGER]: Delegate for TriggerNoticeNoLandDataFromStorage failed - continuing. {0} {1}",
2530 e.Message, e.StackTrace);
2531 }
2532 }
2533 }
2534 }
2535  
2536 public void TriggerIncomingLandDataFromStorage(List<LandData> landData)
2537 {
2538 IncomingLandDataFromStorage handlerIncomingLandDataFromStorage = OnIncomingLandDataFromStorage;
2539 if (handlerIncomingLandDataFromStorage != null)
2540 {
2541 foreach (IncomingLandDataFromStorage d in handlerIncomingLandDataFromStorage.GetInvocationList())
2542 {
2543 try
2544 {
2545 d(landData);
2546 }
2547 catch (Exception e)
2548 {
2549 m_log.ErrorFormat(
2550 "[EVENT MANAGER]: Delegate for TriggerIncomingLandDataFromStorage failed - continuing. {0} {1}",
2551 e.Message, e.StackTrace);
2552 }
2553 }
2554 }
2555 }
2556  
2557 public void TriggerSetAllowForcefulBan(bool allow)
2558 {
2559 SetAllowForcefulBan handlerSetAllowForcefulBan = OnSetAllowForcefulBan;
2560 if (handlerSetAllowForcefulBan != null)
2561 {
2562 foreach (SetAllowForcefulBan d in handlerSetAllowForcefulBan.GetInvocationList())
2563 {
2564 try
2565 {
2566 d(allow);
2567 }
2568 catch (Exception e)
2569 {
2570 m_log.ErrorFormat(
2571 "[EVENT MANAGER]: Delegate for TriggerSetAllowForcefulBan failed - continuing. {0} {1}",
2572 e.Message, e.StackTrace);
2573 }
2574 }
2575 }
2576 }
2577  
2578 public void TriggerRequestParcelPrimCountUpdate()
2579 {
2580 RequestParcelPrimCountUpdate handlerRequestParcelPrimCountUpdate = OnRequestParcelPrimCountUpdate;
2581 if (handlerRequestParcelPrimCountUpdate != null)
2582 {
2583 foreach (RequestParcelPrimCountUpdate d in handlerRequestParcelPrimCountUpdate.GetInvocationList())
2584 {
2585 try
2586 {
2587 d();
2588 }
2589 catch (Exception e)
2590 {
2591 m_log.ErrorFormat(
2592 "[EVENT MANAGER]: Delegate for TriggerRequestParcelPrimCountUpdate failed - continuing. {0} {1}",
2593 e.Message, e.StackTrace);
2594 }
2595 }
2596 }
2597 }
2598  
2599 public void TriggerParcelPrimCountTainted()
2600 {
2601 ParcelPrimCountTainted handlerParcelPrimCountTainted = OnParcelPrimCountTainted;
2602 if (handlerParcelPrimCountTainted != null)
2603 {
2604 foreach (ParcelPrimCountTainted d in handlerParcelPrimCountTainted.GetInvocationList())
2605 {
2606 try
2607 {
2608 d();
2609 }
2610 catch (Exception e)
2611 {
2612 m_log.ErrorFormat(
2613 "[EVENT MANAGER]: Delegate for TriggerParcelPrimCountTainted failed - continuing. {0} {1}",
2614 e.Message, e.StackTrace);
2615 }
2616 }
2617 }
2618 }
2619  
2620 /// <summary>
2621 /// this lets us keep track of nasty script events like timer, etc.
2622 /// </summary>
2623 /// <param name="objLocalID"></param>
2624 /// <param name="Interval"></param>
2625 public void TriggerTimerEvent(uint objLocalID, double Interval)
2626 {
2627 throw new NotImplementedException("TriggerTimerEvent was thought to be not used anymore and the registration for the event from scene object part has been commented out due to a memory leak");
2628 //handlerScriptTimerEvent = OnScriptTimerEvent;
2629 //if (handlerScriptTimerEvent != null)
2630 //{
2631 // handlerScriptTimerEvent(objLocalID, Interval);
2632 //}
2633 }
2634  
2635 /// <summary>
2636 /// Called when the sun's position parameters have changed in the Region and/or Estate
2637 /// </summary>
2638 /// <param name="regionHandle">The region that changed</param>
2639 public void TriggerEstateToolsSunUpdate(ulong regionHandle)
2640 {
2641 EstateToolsSunUpdate handlerEstateToolsSunUpdate = OnEstateToolsSunUpdate;
2642 if (handlerEstateToolsSunUpdate != null)
2643 {
2644 foreach (EstateToolsSunUpdate d in handlerEstateToolsSunUpdate.GetInvocationList())
2645 {
2646 try
2647 {
2648 d(regionHandle);
2649 }
2650 catch (Exception e)
2651 {
2652 m_log.ErrorFormat(
2653 "[EVENT MANAGER]: Delegate for TriggerEstateToolsSunUpdate failed - continuing. {0} {1}",
2654 e.Message, e.StackTrace);
2655 }
2656 }
2657 }
2658 }
2659  
2660 public float GetCurrentTimeAsSunLindenHour()
2661 {
2662 SunLindenHour handlerCurrentTimeAsLindenSunHour = OnGetCurrentTimeAsLindenSunHour;
2663 if (handlerCurrentTimeAsLindenSunHour != null)
2664 {
2665 foreach (SunLindenHour d in handlerCurrentTimeAsLindenSunHour.GetInvocationList())
2666 {
2667 try
2668 {
2669 return d();
2670 }
2671 catch (Exception e)
2672 {
2673 m_log.ErrorFormat(
2674 "[EVENT MANAGER]: Delegate for TriggerOnAttach failed - continuing. {0} {1}",
2675 e.Message, e.StackTrace);
2676 }
2677 }
2678 }
2679  
2680 return 6;
2681 }
2682  
2683 public void TriggerOarFileLoaded(Guid requestId, List<UUID> loadedScenes, string message)
2684 {
2685 OarFileLoaded handlerOarFileLoaded = OnOarFileLoaded;
2686 if (handlerOarFileLoaded != null)
2687 {
2688 foreach (OarFileLoaded d in handlerOarFileLoaded.GetInvocationList())
2689 {
2690 try
2691 {
2692 d(requestId, loadedScenes, message);
2693 }
2694 catch (Exception e)
2695 {
2696 m_log.ErrorFormat(
2697 "[EVENT MANAGER]: Delegate for TriggerOarFileLoaded failed - continuing. {0} {1}",
2698 e.Message, e.StackTrace);
2699 }
2700 }
2701 }
2702 }
2703  
2704 public void TriggerOarFileSaved(Guid requestId, string message)
2705 {
2706 OarFileSaved handlerOarFileSaved = OnOarFileSaved;
2707 if (handlerOarFileSaved != null)
2708 {
2709 foreach (OarFileSaved d in handlerOarFileSaved.GetInvocationList())
2710 {
2711 try
2712 {
2713 d(requestId, message);
2714 }
2715 catch (Exception e)
2716 {
2717 m_log.ErrorFormat(
2718 "[EVENT MANAGER]: Delegate for TriggerOarFileSaved failed - continuing. {0} {1}",
2719 e.Message, e.StackTrace);
2720 }
2721 }
2722 }
2723 }
2724  
2725 public void TriggerEmptyScriptCompileQueue(int numScriptsFailed, string message)
2726 {
2727 EmptyScriptCompileQueue handlerEmptyScriptCompileQueue = OnEmptyScriptCompileQueue;
2728 if (handlerEmptyScriptCompileQueue != null)
2729 {
2730 foreach (EmptyScriptCompileQueue d in handlerEmptyScriptCompileQueue.GetInvocationList())
2731 {
2732 try
2733 {
2734 d(numScriptsFailed, message);
2735 }
2736 catch (Exception e)
2737 {
2738 m_log.ErrorFormat(
2739 "[EVENT MANAGER]: Delegate for TriggerEmptyScriptCompileQueue failed - continuing. {0} {1}",
2740 e.Message, e.StackTrace);
2741 }
2742 }
2743 }
2744 }
2745  
2746 public void TriggerScriptCollidingStart(uint localId, ColliderArgs colliders)
2747 {
2748 ScriptColliding handlerCollidingStart = OnScriptColliderStart;
2749 if (handlerCollidingStart != null)
2750 {
2751 foreach (ScriptColliding d in handlerCollidingStart.GetInvocationList())
2752 {
2753 try
2754 {
2755 d(localId, colliders);
2756 }
2757 catch (Exception e)
2758 {
2759 m_log.ErrorFormat(
2760 "[EVENT MANAGER]: Delegate for TriggerScriptCollidingStart failed - continuing. {0} {1}",
2761 e.Message, e.StackTrace);
2762 }
2763 }
2764 }
2765 }
2766  
2767 public void TriggerScriptColliding(uint localId, ColliderArgs colliders)
2768 {
2769 ScriptColliding handlerColliding = OnScriptColliding;
2770 if (handlerColliding != null)
2771 {
2772 foreach (ScriptColliding d in handlerColliding.GetInvocationList())
2773 {
2774 try
2775 {
2776 d(localId, colliders);
2777 }
2778 catch (Exception e)
2779 {
2780 m_log.ErrorFormat(
2781 "[EVENT MANAGER]: Delegate for TriggerScriptColliding failed - continuing. {0} {1}",
2782 e.Message, e.StackTrace);
2783 }
2784 }
2785 }
2786 }
2787  
2788 public void TriggerScriptCollidingEnd(uint localId, ColliderArgs colliders)
2789 {
2790 ScriptColliding handlerCollidingEnd = OnScriptCollidingEnd;
2791 if (handlerCollidingEnd != null)
2792 {
2793 foreach (ScriptColliding d in handlerCollidingEnd.GetInvocationList())
2794 {
2795 try
2796 {
2797 d(localId, colliders);
2798 }
2799 catch (Exception e)
2800 {
2801 m_log.ErrorFormat(
2802 "[EVENT MANAGER]: Delegate for TriggerScriptCollidingEnd failed - continuing. {0} {1}",
2803 e.Message, e.StackTrace);
2804 }
2805 }
2806 }
2807 }
2808  
2809 public void TriggerScriptLandCollidingStart(uint localId, ColliderArgs colliders)
2810 {
2811 ScriptColliding handlerLandCollidingStart = OnScriptLandColliderStart;
2812 if (handlerLandCollidingStart != null)
2813 {
2814 foreach (ScriptColliding d in handlerLandCollidingStart.GetInvocationList())
2815 {
2816 try
2817 {
2818 d(localId, colliders);
2819 }
2820 catch (Exception e)
2821 {
2822 m_log.ErrorFormat(
2823 "[EVENT MANAGER]: Delegate for TriggerScriptLandCollidingStart failed - continuing. {0} {1}",
2824 e.Message, e.StackTrace);
2825 }
2826 }
2827 }
2828 }
2829  
2830 public void TriggerScriptLandColliding(uint localId, ColliderArgs colliders)
2831 {
2832 ScriptColliding handlerLandColliding = OnScriptLandColliding;
2833 if (handlerLandColliding != null)
2834 {
2835 foreach (ScriptColliding d in handlerLandColliding.GetInvocationList())
2836 {
2837 try
2838 {
2839 d(localId, colliders);
2840 }
2841 catch (Exception e)
2842 {
2843 m_log.ErrorFormat(
2844 "[EVENT MANAGER]: Delegate for TriggerScriptLandColliding failed - continuing. {0} {1}",
2845 e.Message, e.StackTrace);
2846 }
2847 }
2848 }
2849 }
2850  
2851 public void TriggerScriptLandCollidingEnd(uint localId, ColliderArgs colliders)
2852 {
2853 ScriptColliding handlerLandCollidingEnd = OnScriptLandColliderEnd;
2854 if (handlerLandCollidingEnd != null)
2855 {
2856 foreach (ScriptColliding d in handlerLandCollidingEnd.GetInvocationList())
2857 {
2858 try
2859 {
2860 d(localId, colliders);
2861 }
2862 catch (Exception e)
2863 {
2864 m_log.ErrorFormat(
2865 "[EVENT MANAGER]: Delegate for TriggerScriptLandCollidingEnd failed - continuing. {0} {1}",
2866 e.Message, e.StackTrace);
2867 }
2868 }
2869 }
2870 }
2871  
2872 public void TriggerSetRootAgentScene(UUID agentID, Scene scene)
2873 {
2874 OnSetRootAgentSceneDelegate handlerSetRootAgentScene = OnSetRootAgentScene;
2875 if (handlerSetRootAgentScene != null)
2876 {
2877 foreach (OnSetRootAgentSceneDelegate d in handlerSetRootAgentScene.GetInvocationList())
2878 {
2879 try
2880 {
2881 d(agentID, scene);
2882 }
2883 catch (Exception e)
2884 {
2885 m_log.ErrorFormat(
2886 "[EVENT MANAGER]: Delegate for TriggerSetRootAgentScene failed - continuing. {0} {1}",
2887 e.Message, e.StackTrace);
2888 }
2889 }
2890 }
2891 }
2892  
2893 public void TriggerOnRegionUp(GridRegion otherRegion)
2894 {
2895 RegionUp handlerOnRegionUp = OnRegionUp;
2896 if (handlerOnRegionUp != null)
2897 {
2898 foreach (RegionUp d in handlerOnRegionUp.GetInvocationList())
2899 {
2900 try
2901 {
2902 d(otherRegion);
2903 }
2904 catch (Exception e)
2905 {
2906 m_log.ErrorFormat(
2907 "[EVENT MANAGER]: Delegate for TriggerOnRegionUp failed - continuing. {0} {1}",
2908 e.Message, e.StackTrace);
2909 }
2910 }
2911 }
2912 }
2913  
2914 public void TriggerOnSceneObjectLoaded(SceneObjectGroup so)
2915 {
2916 SceneObjectDelegate handler = OnSceneObjectLoaded;
2917 if (handler != null)
2918 {
2919 foreach (SceneObjectDelegate d in handler.GetInvocationList())
2920 {
2921 try
2922 {
2923 d(so);
2924 }
2925 catch (Exception e)
2926 {
2927 m_log.ErrorFormat(
2928 "[EVENT MANAGER]: Delegate for TriggerOnSceneObjectLoaded failed - continuing. {0} {1}",
2929 e.Message, e.StackTrace);
2930 }
2931 }
2932 }
2933 }
2934  
2935 public void TriggerOnSceneObjectPreSave(SceneObjectGroup persistingSo, SceneObjectGroup originalSo)
2936 {
2937 SceneObjectPreSaveDelegate handler = OnSceneObjectPreSave;
2938 if (handler != null)
2939 {
2940 foreach (SceneObjectPreSaveDelegate d in handler.GetInvocationList())
2941 {
2942 try
2943 {
2944 d(persistingSo, originalSo);
2945 }
2946 catch (Exception e)
2947 {
2948 m_log.ErrorFormat(
2949 "[EVENT MANAGER]: Delegate for TriggerOnSceneObjectPreSave failed - continuing. {0} {1}",
2950 e.Message, e.StackTrace);
2951 }
2952 }
2953 }
2954 }
2955  
2956 public void TriggerOnSceneObjectPartCopy(SceneObjectPart copy, SceneObjectPart original, bool userExposed)
2957 {
2958 SceneObjectPartCopyDelegate handler = OnSceneObjectPartCopy;
2959 if (handler != null)
2960 {
2961 foreach (SceneObjectPartCopyDelegate d in handler.GetInvocationList())
2962 {
2963 try
2964 {
2965 d(copy, original, userExposed);
2966 }
2967 catch (Exception e)
2968 {
2969 m_log.ErrorFormat(
2970 "[EVENT MANAGER]: Delegate for TriggerOnSceneObjectPartCopy failed - continuing. {0} {1}",
2971 e.Message, e.StackTrace);
2972 }
2973 }
2974 }
2975 }
2976  
2977 public void TriggerSceneObjectPartUpdated(SceneObjectPart sop, bool full)
2978 {
2979 SceneObjectPartUpdated handler = OnSceneObjectPartUpdated;
2980 if (handler != null)
2981 {
2982 foreach (SceneObjectPartUpdated d in handler.GetInvocationList())
2983 {
2984 try
2985 {
2986 d(sop, full);
2987 }
2988 catch (Exception e)
2989 {
2990 m_log.ErrorFormat(
2991 "[EVENT MANAGER]: Delegate for TriggerSceneObjectPartUpdated failed - continuing. {0} {1}",
2992 e.Message, e.StackTrace);
2993 }
2994 }
2995 }
2996 }
2997  
2998 public void TriggerScenePresenceUpdated(ScenePresence sp)
2999 {
3000 ScenePresenceUpdated handler = OnScenePresenceUpdated;
3001 if (handler != null)
3002 {
3003 foreach (ScenePresenceUpdated d in handler.GetInvocationList())
3004 {
3005 try
3006 {
3007 d(sp);
3008 }
3009 catch (Exception e)
3010 {
3011 m_log.ErrorFormat(
3012 "[EVENT MANAGER]: Delegate for TriggerScenePresenceUpdated failed - continuing. {0} {1}",
3013 e.Message, e.StackTrace);
3014 }
3015 }
3016 }
3017 }
3018  
3019 public void TriggerOnParcelPropertiesUpdateRequest(LandUpdateArgs args,
3020 int local_id, IClientAPI remote_client)
3021 {
3022 ParcelPropertiesUpdateRequest handler = OnParcelPropertiesUpdateRequest;
3023 if (handler != null)
3024 {
3025 foreach (ParcelPropertiesUpdateRequest d in handler.GetInvocationList())
3026 {
3027 try
3028 {
3029 d(args, local_id, remote_client);
3030 }
3031 catch (Exception e)
3032 {
3033 m_log.ErrorFormat(
3034 "[EVENT MANAGER]: Delegate for TriggerOnSceneObjectPartCopy failed - continuing. {0} {1}",
3035 e.Message, e.StackTrace);
3036 }
3037 }
3038 }
3039 }
3040  
3041 public void TriggerSceneShuttingDown(Scene s)
3042 {
3043 Action<Scene> handler = OnSceneShuttingDown;
3044 if (handler != null)
3045 {
3046 foreach (Action<Scene> d in handler.GetInvocationList())
3047 {
3048 try
3049 {
3050 d(s);
3051 }
3052 catch (Exception e)
3053 {
3054 m_log.ErrorFormat(
3055 "[EVENT MANAGER]: Delegate for TriggerSceneShuttingDown failed - continuing. {0} {1}",
3056 e.Message, e.StackTrace);
3057 }
3058 }
3059 }
3060 }
3061  
3062 public void TriggerOnRegionStarted(Scene scene)
3063 {
3064 RegionStarted handler = OnRegionStarted;
3065  
3066 if (handler != null)
3067 {
3068 foreach (RegionStarted d in handler.GetInvocationList())
3069 {
3070 try
3071 {
3072 d(scene);
3073 }
3074 catch (Exception e)
3075 {
3076 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for RegionStarted failed - continuing {0} - {1}",
3077 e.Message, e.StackTrace);
3078 }
3079 }
3080 }
3081 }
3082  
3083 public void TriggerRegionHeartbeatStart(Scene scene)
3084 {
3085 RegionHeartbeatStart handler = OnRegionHeartbeatStart;
3086  
3087 if (handler != null)
3088 {
3089 foreach (RegionHeartbeatStart d in handler.GetInvocationList())
3090 {
3091 try
3092 {
3093 d(scene);
3094 }
3095 catch (Exception e)
3096 {
3097 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for OnRegionHeartbeatStart failed - continuing {0} - {1}",
3098 e.Message, e.StackTrace);
3099 }
3100 }
3101 }
3102 }
3103  
3104 public void TriggerRegionHeartbeatEnd(Scene scene)
3105 {
3106 RegionHeartbeatEnd handler = OnRegionHeartbeatEnd;
3107  
3108 if (handler != null)
3109 {
3110 foreach (RegionHeartbeatEnd d in handler.GetInvocationList())
3111 {
3112 try
3113 {
3114 d(scene);
3115 }
3116 catch (Exception e)
3117 {
3118 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for OnRegionHeartbeatEnd failed - continuing {0} - {1}",
3119 e.Message, e.StackTrace);
3120 }
3121 }
3122 }
3123 }
3124  
3125 public void TriggerRegionLoginsStatusChange(IScene scene)
3126 {
3127 RegionLoginsStatusChange handler = OnRegionLoginsStatusChange;
3128  
3129 if (handler != null)
3130 {
3131 foreach (RegionLoginsStatusChange d in handler.GetInvocationList())
3132 {
3133 try
3134 {
3135 d(scene);
3136 }
3137 catch (Exception e)
3138 {
3139 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for OnRegionLoginsStatusChange failed - continuing {0} - {1}",
3140 e.Message, e.StackTrace);
3141 }
3142 }
3143 }
3144 }
3145  
3146 public void TriggerRegionReadyStatusChange(IScene scene)
3147 {
3148 Action<IScene> handler = OnRegionReadyStatusChange;
3149  
3150 if (handler != null)
3151 {
3152 foreach (Action<IScene> d in handler.GetInvocationList())
3153 {
3154 try
3155 {
3156 d(scene);
3157 }
3158 catch (Exception e)
3159 {
3160 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for OnRegionReadyStatusChange failed - continuing {0} - {1}",
3161 e.Message, e.StackTrace);
3162 }
3163 }
3164 }
3165 }
3166  
3167 public void TriggerPrimsLoaded(Scene s)
3168 {
3169 PrimsLoaded handler = OnPrimsLoaded;
3170  
3171 if (handler != null)
3172 {
3173 foreach (PrimsLoaded d in handler.GetInvocationList())
3174 {
3175 try
3176 {
3177 d(s);
3178 }
3179 catch (Exception e)
3180 {
3181 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for PrimsLoaded failed - continuing {0} - {1}",
3182 e.Message, e.StackTrace);
3183 }
3184 }
3185 }
3186 }
3187  
3188 public void TriggerTeleportStart(IClientAPI client, GridRegion destination, GridRegion finalDestination, uint teleportFlags, bool gridLogout)
3189 {
3190 TeleportStart handler = OnTeleportStart;
3191  
3192 if (handler != null)
3193 {
3194 foreach (TeleportStart d in handler.GetInvocationList())
3195 {
3196 try
3197 {
3198 d(client, destination, finalDestination, teleportFlags, gridLogout);
3199 }
3200 catch (Exception e)
3201 {
3202 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for TeleportStart failed - continuing {0} - {1}",
3203 e.Message, e.StackTrace);
3204 }
3205 }
3206 }
3207 }
3208  
3209 public void TriggerTeleportFail(IClientAPI client, bool gridLogout)
3210 {
3211 TeleportFail handler = OnTeleportFail;
3212  
3213 if (handler != null)
3214 {
3215 foreach (TeleportFail d in handler.GetInvocationList())
3216 {
3217 try
3218 {
3219 d(client, gridLogout);
3220 }
3221 catch (Exception e)
3222 {
3223 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for TeleportFail failed - continuing {0} - {1}",
3224 e.Message, e.StackTrace);
3225 }
3226 }
3227 }
3228 }
3229  
3230 public void TriggerExtraSettingChanged(Scene scene, string name, string val)
3231 {
3232 ExtraSettingChangedDelegate handler = OnExtraSettingChanged;
3233  
3234 if (handler != null)
3235 {
3236 foreach (ExtraSettingChangedDelegate d in handler.GetInvocationList())
3237 {
3238 try
3239 {
3240 d(scene, name, val);
3241 }
3242 catch (Exception e)
3243 {
3244 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for ExtraSettingChanged failed - continuing {0} - {1}",
3245 e.Message, e.StackTrace);
3246 }
3247 }
3248 }
3249 }
3250  
3251 // public void TriggerGatherUuids(SceneObjectPart sop, IDictionary<UUID, AssetType> assetUuids)
3252 // {
3253 // GatherUuids handler = OnGatherUuids;
3254 //
3255 // if (handler != null)
3256 // {
3257 // foreach (GatherUuids d in handler.GetInvocationList())
3258 // {
3259 // try
3260 // {
3261 // d(sop, assetUuids);
3262 // }
3263 // catch (Exception e)
3264 // {
3265 // m_log.ErrorFormat("[EVENT MANAGER]: Delegate for TriggerUuidGather failed - continuing {0} - {1}",
3266 // e.Message, e.StackTrace);
3267 // }
3268 // }
3269 // }
3270 // }
3271 }
3272 }