clockwerk-opensim – Blame information for rev 1

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