aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs1484
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs72
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs9
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs10
4 files changed, 1204 insertions, 371 deletions
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index fe40f52..cabb5f9 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -27,11 +27,13 @@
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection;
31using log4net;
30using OpenMetaverse; 32using OpenMetaverse;
31using OpenSim.Framework; 33using OpenSim.Framework;
32using OpenSim.Framework.Client; 34using OpenSim.Framework.Client;
33using OpenSim.Region.Framework.Interfaces; 35using OpenSim.Region.Framework.Interfaces;
34using Caps=OpenSim.Framework.Capabilities.Caps; 36using Caps = OpenSim.Framework.Capabilities.Caps;
35using GridRegion = OpenSim.Services.Interfaces.GridRegion; 37using GridRegion = OpenSim.Services.Interfaces.GridRegion;
36 38
37namespace OpenSim.Region.Framework.Scenes 39namespace OpenSim.Region.Framework.Scenes
@@ -41,6 +43,8 @@ namespace OpenSim.Region.Framework.Scenes
41 /// </summary> 43 /// </summary>
42 public class EventManager 44 public class EventManager
43 { 45 {
46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
47
44 public delegate void OnFrameDelegate(); 48 public delegate void OnFrameDelegate();
45 49
46 public event OnFrameDelegate OnFrame; 50 public event OnFrameDelegate OnFrame;
@@ -212,14 +216,16 @@ namespace OpenSim.Region.Framework.Scenes
212 public delegate void RequestChangeWaterHeight(float height); 216 public delegate void RequestChangeWaterHeight(float height);
213 217
214 public event RequestChangeWaterHeight OnRequestChangeWaterHeight; 218 public event RequestChangeWaterHeight OnRequestChangeWaterHeight;
215 219
216 public delegate void AvatarKillData(uint KillerLocalID, ScenePresence avatar); 220 /// <summary>
217 221 /// Fired if any avatar is 'killed' due to its health falling to zero
222 /// </summary>
218 public event AvatarKillData OnAvatarKilled; 223 public event AvatarKillData OnAvatarKilled;
224 public delegate void AvatarKillData(uint KillerLocalID, ScenePresence avatar);
219 225
220 public delegate void ScriptTimerEvent(uint localID, double timerinterval); 226// public delegate void ScriptTimerEvent(uint localID, double timerinterval);
221 227
222 public event ScriptTimerEvent OnScriptTimerEvent; 228// public event ScriptTimerEvent OnScriptTimerEvent;
223 229
224 public delegate void EstateToolsSunUpdate(ulong regionHandle, bool FixedTime, bool EstateSun, float LindenHour); 230 public delegate void EstateToolsSunUpdate(ulong regionHandle, bool FixedTime, bool EstateSun, float LindenHour);
225 public delegate void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID); 231 public delegate void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID);
@@ -386,423 +392,806 @@ namespace OpenSim.Region.Framework.Scenes
386 public event LandBuy OnLandBuy; 392 public event LandBuy OnLandBuy;
387 public event LandBuy OnValidateLandBuy; 393 public event LandBuy OnValidateLandBuy;
388 394
389 /* Designated Event Deletage Instances */
390
391 private ScriptChangedEvent handlerScriptChangedEvent = null; //OnScriptChangedEvent;
392 private ScriptAtTargetEvent handlerScriptAtTargetEvent = null;
393 private ScriptNotAtTargetEvent handlerScriptNotAtTargetEvent = null;
394 private ScriptAtRotTargetEvent handlerScriptAtRotTargetEvent = null;
395 private ScriptNotAtRotTargetEvent handlerScriptNotAtRotTargetEvent = null;
396 private ClientMovement handlerClientMovement = null; //OnClientMovement;
397 private OnPermissionErrorDelegate handlerPermissionError = null; //OnPermissionError;
398 private OnPluginConsoleDelegate handlerPluginConsole = null; //OnPluginConsole;
399 private OnFrameDelegate handlerFrame = null; //OnFrame;
400 private OnNewClientDelegate handlerNewClient = null; //OnNewClient;
401 private OnClientConnectCoreDelegate handlerClientConnect = null; //OnClientConnect
402 private OnNewPresenceDelegate handlerNewPresence = null; //OnNewPresence;
403 private OnRemovePresenceDelegate handlerRemovePresence = null; //OnRemovePresence;
404 private OnBackupDelegate handlerBackup = null; //OnBackup;
405 private OnParcelPrimCountUpdateDelegate handlerParcelPrimCountUpdate = null; //OnParcelPrimCountUpdate;
406 private MoneyTransferEvent handlerMoneyTransfer = null; //OnMoneyTransfer;
407 private OnParcelPrimCountAddDelegate handlerParcelPrimCountAdd = null; //OnParcelPrimCountAdd;
408 private OnShutdownDelegate handlerShutdown = null; //OnShutdown;
409 private ObjectGrabDelegate handlerObjectGrab = null; //OnObjectGrab;
410 private ObjectGrabDelegate handlerObjectGrabbing = null; //OnObjectGrabbing;
411 private ObjectDeGrabDelegate handlerObjectDeGrab = null; //OnObjectDeGrab;
412 private ScriptResetDelegate handlerScriptReset = null; // OnScriptReset
413 private NewRezScript handlerRezScript = null; //OnRezScript;
414 private RemoveScript handlerRemoveScript = null; //OnRemoveScript;
415 private StartScript handlerStartScript = null; //OnStartScript;
416 private StopScript handlerStopScript = null; //OnStopScript;
417 private SceneGroupMoved handlerSceneGroupMove = null; //OnSceneGroupMove;
418 private SceneGroupGrabed handlerSceneGroupGrab = null; //OnSceneGroupGrab;
419 private SceneGroupSpinStarted handlerSceneGroupSpinStarted = null; //OnSceneGroupSpinStart;
420 private SceneGroupSpun handlerSceneGroupSpin = null; //OnSceneGroupSpin;
421 private LandObjectAdded handlerLandObjectAdded = null; //OnLandObjectAdded;
422 private LandObjectRemoved handlerLandObjectRemoved = null; //OnLandObjectRemoved;
423 private AvatarEnteringNewParcel handlerAvatarEnteringNewParcel = null; //OnAvatarEnteringNewParcel;
424 private IncomingInstantMessage handlerIncomingInstantMessage = null; //OnIncomingInstantMessage;
425 private IncomingInstantMessage handlerUnhandledInstantMessage = null; //OnUnhandledInstantMessage;
426 private ClientClosed handlerClientClosed = null; //OnClientClosed;
427 private OnMakeChildAgentDelegate handlerMakeChildAgent = null; //OnMakeChildAgent;
428 private OnSaveNewWindlightProfileDelegate handlerSaveNewWindlightProfile = null; //OnSaveNewWindlightProfile;
429 private OnSendNewWindlightProfileTargetedDelegate handlerSendNewWindlightProfileTargeted = null; //OnSendNewWindlightProfileTargeted;
430 private OnMakeRootAgentDelegate handlerMakeRootAgent = null; //OnMakeRootAgent;
431 private OnTerrainTickDelegate handlerTerrainTick = null; // OnTerainTick;
432 private RegisterCapsEvent handlerRegisterCaps = null; // OnRegisterCaps;
433 private DeregisterCapsEvent handlerDeregisterCaps = null; // OnDeregisterCaps;
434 private ChatFromWorldEvent handlerChatFromWorld = null; // OnChatFromWorld;
435 private ChatFromClientEvent handlerChatFromClient = null; // OnChatFromClient;
436 private ChatBroadcastEvent handlerChatBroadcast = null; // OnChatBroadcast;
437 private NewInventoryItemUploadComplete handlerNewInventoryItemUpdateComplete = null;
438 private RequestChangeWaterHeight handlerRequestChangeWaterHeight = null; //OnRequestChangeWaterHeight
439 private ScriptControlEvent handlerScriptControlEvent = null;
440 private SignificantClientMovement handlerSignificantClientMovement = null;
441
442 private LandBuy handlerLandBuy = null;
443 private LandBuy handlerValidateLandBuy = null;
444 private AvatarKillData handlerAvatarKill = null;
445
446 private NoticeNoLandDataFromStorage handlerNoticeNoLandDataFromStorage = null;
447 private IncomingLandDataFromStorage handlerIncomingLandDataFromStorage = null;
448 private SetAllowForcefulBan handlerSetAllowForcefulBan = null;
449 private RequestParcelPrimCountUpdate handlerRequestParcelPrimCountUpdate = null;
450 private ParcelPrimCountTainted handlerParcelPrimCountTainted = null;
451 private ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = null;
452 // TODO: unused: private ScriptTimerEvent handlerScriptTimerEvent = null;
453 private EstateToolsSunUpdate handlerEstateToolsSunUpdate = null;
454
455 private ScriptColliding handlerCollidingStart = null;
456 private ScriptColliding handlerColliding = null;
457 private ScriptColliding handlerCollidingEnd = null;
458 private ScriptColliding handlerLandCollidingStart = null;
459 private ScriptColliding handlerLandColliding = null;
460 private ScriptColliding handlerLandCollidingEnd = null;
461 private GetScriptRunning handlerGetScriptRunning = null;
462
463 private SunLindenHour handlerCurrentTimeAsLindenSunHour = null;
464 private OnSetRootAgentSceneDelegate handlerSetRootAgentScene = null;
465
466 private OarFileLoaded handlerOarFileLoaded = null;
467 private OarFileSaved handlerOarFileSaved = null;
468
469 private EmptyScriptCompileQueue handlerEmptyScriptCompileQueue = null;
470
471 private Attach handlerOnAttach = null;
472 private RegionUp handlerOnRegionUp = null;
473
474 public void TriggerOnAttach(uint localID, UUID itemID, UUID avatarID) 395 public void TriggerOnAttach(uint localID, UUID itemID, UUID avatarID)
475 { 396 {
476 handlerOnAttach = OnAttach; 397 Attach handlerOnAttach = OnAttach;
477 if (handlerOnAttach != null) 398 if (handlerOnAttach != null)
478 handlerOnAttach(localID, itemID, avatarID); 399 {
400 foreach (Attach d in handlerOnAttach.GetInvocationList())
401 {
402 try
403 {
404 d(localID, itemID, avatarID);
405 }
406 catch (Exception e)
407 {
408 m_log.ErrorFormat(
409 "[EVENT MANAGER]: Delegate for TriggerOnAttach failed - continuing. {0} {1}",
410 e.Message, e.StackTrace);
411 }
412 }
413 }
479 } 414 }
480 415
481 public void TriggerGetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID) 416 public void TriggerGetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
482 { 417 {
483 handlerGetScriptRunning = OnGetScriptRunning; 418 GetScriptRunning handlerGetScriptRunning = OnGetScriptRunning;
484 if (handlerGetScriptRunning != null) 419 if (handlerGetScriptRunning != null)
485 handlerGetScriptRunning(controllingClient, objectID, itemID); 420 {
421 foreach (GetScriptRunning d in handlerGetScriptRunning.GetInvocationList())
422 {
423 try
424 {
425 d(controllingClient, objectID, itemID);
426 }
427 catch (Exception e)
428 {
429 m_log.ErrorFormat(
430 "[EVENT MANAGER]: Delegate for TriggerGetScriptRunning failed - continuing. {0} {1}",
431 e.Message, e.StackTrace);
432 }
433 }
434 }
486 } 435 }
487 436
488 public void TriggerOnScriptChangedEvent(uint localID, uint change) 437 public void TriggerOnScriptChangedEvent(uint localID, uint change)
489 { 438 {
490 handlerScriptChangedEvent = OnScriptChangedEvent; 439 ScriptChangedEvent handlerScriptChangedEvent = OnScriptChangedEvent;
491 if (handlerScriptChangedEvent != null) 440 if (handlerScriptChangedEvent != null)
492 handlerScriptChangedEvent(localID, change); 441 {
442 foreach (ScriptChangedEvent d in handlerScriptChangedEvent.GetInvocationList())
443 {
444 try
445 {
446 d(localID, change);
447 }
448 catch (Exception e)
449 {
450 m_log.ErrorFormat(
451 "[EVENT MANAGER]: Delegate for TriggerOnScriptChangedEvent failed - continuing. {0} {1}",
452 e.Message, e.StackTrace);
453 }
454 }
455 }
493 } 456 }
494 457
495 public void TriggerOnClientMovement(ScenePresence avatar) 458 public void TriggerOnClientMovement(ScenePresence avatar)
496 { 459 {
497 handlerClientMovement = OnClientMovement; 460 ClientMovement handlerClientMovement = OnClientMovement;
498 if (handlerClientMovement != null) 461 if (handlerClientMovement != null)
499 handlerClientMovement(avatar); 462 {
463 foreach (ClientMovement d in handlerClientMovement.GetInvocationList())
464 {
465 try
466 {
467 d(avatar);
468 }
469 catch (Exception e)
470 {
471 m_log.ErrorFormat(
472 "[EVENT MANAGER]: Delegate for TriggerOnClientMovement failed - continuing. {0} {1}",
473 e.Message, e.StackTrace);
474 }
475 }
476 }
500 } 477 }
501 478
502 public void TriggerPermissionError(UUID user, string reason) 479 public void TriggerPermissionError(UUID user, string reason)
503 { 480 {
504 handlerPermissionError = OnPermissionError; 481 OnPermissionErrorDelegate handlerPermissionError = OnPermissionError;
505 if (handlerPermissionError != null) 482 if (handlerPermissionError != null)
506 handlerPermissionError(user, reason); 483 {
484 foreach (OnPermissionErrorDelegate d in handlerPermissionError.GetInvocationList())
485 {
486 try
487 {
488 d(user, reason);
489 }
490 catch (Exception e)
491 {
492 m_log.ErrorFormat(
493 "[EVENT MANAGER]: Delegate for TriggerPermissionError failed - continuing. {0} {1}",
494 e.Message, e.StackTrace);
495 }
496 }
497 }
507 } 498 }
508 499
509 public void TriggerOnPluginConsole(string[] args) 500 public void TriggerOnPluginConsole(string[] args)
510 { 501 {
511 handlerPluginConsole = OnPluginConsole; 502 OnPluginConsoleDelegate handlerPluginConsole = OnPluginConsole;
512 if (handlerPluginConsole != null) 503 if (handlerPluginConsole != null)
513 handlerPluginConsole(args); 504 {
505 foreach (OnPluginConsoleDelegate d in handlerPluginConsole.GetInvocationList())
506 {
507 try
508 {
509 d(args);
510 }
511 catch (Exception e)
512 {
513 m_log.ErrorFormat(
514 "[EVENT MANAGER]: Delegate for TriggerOnPluginConsole failed - continuing. {0} {1}",
515 e.Message, e.StackTrace);
516 }
517 }
518 }
514 } 519 }
515 520
516 public void TriggerOnFrame() 521 public void TriggerOnFrame()
517 { 522 {
518 handlerFrame = OnFrame; 523 OnFrameDelegate handlerFrame = OnFrame;
519 if (handlerFrame != null) 524 if (handlerFrame != null)
520 { 525 {
521 handlerFrame(); 526 foreach (OnFrameDelegate d in handlerFrame.GetInvocationList())
522 } 527 {
528 try
529 {
530 d();
531 }
532 catch (Exception e)
533 {
534 m_log.ErrorFormat(
535 "[EVENT MANAGER]: Delegate for TriggerOnFrame failed - continuing. {0} {1}",
536 e.Message, e.StackTrace);
537 }
538 }
539 }
523 } 540 }
524 541
525 public void TriggerOnNewClient(IClientAPI client) 542 public void TriggerOnNewClient(IClientAPI client)
526 { 543 {
527 handlerNewClient = OnNewClient; 544 OnNewClientDelegate handlerNewClient = OnNewClient;
528 if (handlerNewClient != null) 545 if (handlerNewClient != null)
529 handlerNewClient(client); 546 {
547 foreach (OnNewClientDelegate d in handlerNewClient.GetInvocationList())
548 {
549 try
550 {
551 d(client);
552 }
553 catch (Exception e)
554 {
555 m_log.ErrorFormat(
556 "[EVENT MANAGER]: Delegate for TriggerOnNewClient failed - continuing. {0} {1}",
557 e.Message, e.StackTrace);
558 }
559 }
560 }
530 561
531 if (client is IClientCore) 562 if (client is IClientCore)
532 { 563 {
533 handlerClientConnect = OnClientConnect; 564 OnClientConnectCoreDelegate handlerClientConnect = OnClientConnect;
534 if (handlerClientConnect != null) 565 if (handlerClientConnect != null)
535 handlerClientConnect((IClientCore)client); 566 {
567 foreach (OnClientConnectCoreDelegate d in handlerClientConnect.GetInvocationList())
568 {
569 try
570 {
571 d((IClientCore)client);
572 }
573 catch (Exception e)
574 {
575 m_log.ErrorFormat(
576 "[EVENT MANAGER]: Delegate for TriggerOnNewClient (IClientCore) failed - continuing. {0} {1}",
577 e.Message, e.StackTrace);
578 }
579 }
580 }
536 } 581 }
537 } 582 }
538 583
539 public void TriggerOnNewPresence(ScenePresence presence) 584 public void TriggerOnNewPresence(ScenePresence presence)
540 { 585 {
541 handlerNewPresence = OnNewPresence; 586 OnNewPresenceDelegate handlerNewPresence = OnNewPresence;
542 if (handlerNewPresence != null) 587 if (handlerNewPresence != null)
543 handlerNewPresence(presence); 588 {
589 foreach (OnNewPresenceDelegate d in handlerNewPresence.GetInvocationList())
590 {
591 try
592 {
593 d(presence);
594 }
595 catch (Exception e)
596 {
597 m_log.ErrorFormat(
598 "[EVENT MANAGER]: Delegate for TriggerOnNewPresence failed - continuing. {0} {1}",
599 e.Message, e.StackTrace);
600 }
601 }
602 }
544 } 603 }
545 604
546 public void TriggerOnRemovePresence(UUID agentId) 605 public void TriggerOnRemovePresence(UUID agentId)
547 { 606 {
548 handlerRemovePresence = OnRemovePresence; 607 OnRemovePresenceDelegate handlerRemovePresence = OnRemovePresence;
549 if (handlerRemovePresence != null) 608 if (handlerRemovePresence != null)
550 { 609 {
551 handlerRemovePresence(agentId); 610 foreach (OnRemovePresenceDelegate d in handlerRemovePresence.GetInvocationList())
552 } 611 {
612 try
613 {
614 d(agentId);
615 }
616 catch (Exception e)
617 {
618 m_log.ErrorFormat(
619 "[EVENT MANAGER]: Delegate for TriggerOnRemovePresence failed - continuing. {0} {1}",
620 e.Message, e.StackTrace);
621 }
622 }
623 }
553 } 624 }
554 625
555 public void TriggerOnBackup(IRegionDataStore dstore) 626 public void TriggerOnBackup(IRegionDataStore dstore)
556 { 627 {
557 handlerBackup = OnBackup; 628 OnBackupDelegate handlerOnAttach = OnBackup;
558 if (handlerBackup != null) 629 if (handlerOnAttach != null)
559 { 630 {
560 handlerBackup(dstore, false); 631 foreach (OnBackupDelegate d in handlerOnAttach.GetInvocationList())
561 } 632 {
633 try
634 {
635 d(dstore, false);
636 }
637 catch (Exception e)
638 {
639 m_log.ErrorFormat(
640 "[EVENT MANAGER]: Delegate for TriggerOnBackup failed - continuing. {0} {1}",
641 e.Message, e.StackTrace);
642 }
643 }
644 }
562 } 645 }
563 646
564 public void TriggerParcelPrimCountUpdate() 647 public void TriggerParcelPrimCountUpdate()
565 { 648 {
566 handlerParcelPrimCountUpdate = OnParcelPrimCountUpdate; 649 OnParcelPrimCountUpdateDelegate handlerParcelPrimCountUpdate = OnParcelPrimCountUpdate;
567 if (handlerParcelPrimCountUpdate != null) 650 if (handlerParcelPrimCountUpdate != null)
568 { 651 {
569 handlerParcelPrimCountUpdate(); 652 foreach (OnParcelPrimCountUpdateDelegate d in handlerParcelPrimCountUpdate.GetInvocationList())
570 } 653 {
571 } 654 try
572 655 {
573 public void TriggerMoneyTransfer(Object sender, MoneyTransferArgs e) 656 d();
574 { 657 }
575 handlerMoneyTransfer = OnMoneyTransfer; 658 catch (Exception e)
659 {
660 m_log.ErrorFormat(
661 "[EVENT MANAGER]: Delegate for TriggerParcelPrimCountUpdate failed - continuing. {0} {1}",
662 e.Message, e.StackTrace);
663 }
664 }
665 }
666 }
667
668 public void TriggerMoneyTransfer(Object sender, MoneyTransferArgs args)
669 {
670 MoneyTransferEvent handlerMoneyTransfer = OnMoneyTransfer;
576 if (handlerMoneyTransfer != null) 671 if (handlerMoneyTransfer != null)
577 { 672 {
578 handlerMoneyTransfer(sender, e); 673 foreach (MoneyTransferEvent d in handlerMoneyTransfer.GetInvocationList())
579 } 674 {
675 try
676 {
677 d(sender, args);
678 }
679 catch (Exception e)
680 {
681 m_log.ErrorFormat(
682 "[EVENT MANAGER]: Delegate for TriggerMoneyTransfer failed - continuing. {0} {1}",
683 e.Message, e.StackTrace);
684 }
685 }
686 }
580 } 687 }
581 688
582 public void TriggerTerrainTick() 689 public void TriggerTerrainTick()
583 { 690 {
584 handlerTerrainTick = OnTerrainTick; 691 OnTerrainTickDelegate handlerTerrainTick = OnTerrainTick;
585 if (handlerTerrainTick != null) 692 if (handlerTerrainTick != null)
586 { 693 {
587 handlerTerrainTick(); 694 foreach (OnTerrainTickDelegate d in handlerTerrainTick.GetInvocationList())
588 } 695 {
696 try
697 {
698 d();
699 }
700 catch (Exception e)
701 {
702 m_log.ErrorFormat(
703 "[EVENT MANAGER]: Delegate for TriggerTerrainTick failed - continuing. {0} {1}",
704 e.Message, e.StackTrace);
705 }
706 }
707 }
589 } 708 }
590 709
591 public void TriggerParcelPrimCountAdd(SceneObjectGroup obj) 710 public void TriggerParcelPrimCountAdd(SceneObjectGroup obj)
592 { 711 {
593 handlerParcelPrimCountAdd = OnParcelPrimCountAdd; 712 OnParcelPrimCountAddDelegate handlerParcelPrimCountAdd = OnParcelPrimCountAdd;
594 if (handlerParcelPrimCountAdd != null) 713 if (handlerParcelPrimCountAdd != null)
595 { 714 {
596 handlerParcelPrimCountAdd(obj); 715 foreach (OnParcelPrimCountAddDelegate d in handlerParcelPrimCountAdd.GetInvocationList())
597 } 716 {
717 try
718 {
719 d(obj);
720 }
721 catch (Exception e)
722 {
723 m_log.ErrorFormat(
724 "[EVENT MANAGER]: Delegate for TriggerParcelPrimCountAdd failed - continuing. {0} {1}",
725 e.Message, e.StackTrace);
726 }
727 }
728 }
598 } 729 }
599 730
600 public void TriggerObjectBeingRemovedFromScene(SceneObjectGroup obj) 731 public void TriggerObjectBeingRemovedFromScene(SceneObjectGroup obj)
601 { 732 {
602 handlerObjectBeingRemovedFromScene = OnObjectBeingRemovedFromScene; 733 ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = OnObjectBeingRemovedFromScene;
603 if (handlerObjectBeingRemovedFromScene != null) 734 if (handlerObjectBeingRemovedFromScene != null)
604 { 735 {
605 handlerObjectBeingRemovedFromScene(obj); 736 foreach (ObjectBeingRemovedFromScene d in handlerObjectBeingRemovedFromScene.GetInvocationList())
606 } 737 {
738 try
739 {
740 d(obj);
741 }
742 catch (Exception e)
743 {
744 m_log.ErrorFormat(
745 "[EVENT MANAGER]: Delegate for TriggerObjectBeingRemovedFromScene failed - continuing. {0} {1}",
746 e.Message, e.StackTrace);
747 }
748 }
749 }
607 } 750 }
608 751
609 public void TriggerShutdown() 752 public void TriggerShutdown()
610 { 753 {
611 handlerShutdown = OnShutdown; 754 OnShutdownDelegate handlerShutdown = OnShutdown;
612 if (handlerShutdown != null) 755 if (handlerShutdown != null)
613 handlerShutdown(); 756 {
757 foreach (OnShutdownDelegate d in handlerShutdown.GetInvocationList())
758 {
759 try
760 {
761 d();
762 }
763 catch (Exception e)
764 {
765 m_log.ErrorFormat(
766 "[EVENT MANAGER]: Delegate for TriggerShutdown failed - continuing. {0} {1}",
767 e.Message, e.StackTrace);
768 }
769 }
770 }
614 } 771 }
615 772
616 public void TriggerObjectGrab(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs) 773 public void TriggerObjectGrab(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
617 { 774 {
618 handlerObjectGrab = OnObjectGrab; 775 ObjectGrabDelegate handlerObjectGrab = OnObjectGrab;
619 if (handlerObjectGrab != null) 776 if (handlerObjectGrab != null)
620 { 777 {
621 handlerObjectGrab(localID, originalID, offsetPos, remoteClient, surfaceArgs); 778 foreach (ObjectGrabDelegate d in handlerObjectGrab.GetInvocationList())
622 } 779 {
780 try
781 {
782 d(localID, originalID, offsetPos, remoteClient, surfaceArgs);
783 }
784 catch (Exception e)
785 {
786 m_log.ErrorFormat(
787 "[EVENT MANAGER]: Delegate for TriggerObjectGrab failed - continuing. {0} {1}",
788 e.Message, e.StackTrace);
789 }
790 }
791 }
623 } 792 }
624 793
625 public void TriggerObjectGrabbing(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs) 794 public void TriggerObjectGrabbing(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
626 { 795 {
627 handlerObjectGrabbing = OnObjectGrabbing; 796 ObjectGrabDelegate handlerObjectGrabbing = OnObjectGrabbing;
628 if (handlerObjectGrabbing != null) 797 if (handlerObjectGrabbing != null)
629 { 798 {
630 handlerObjectGrabbing(localID, originalID, offsetPos, remoteClient, surfaceArgs); 799 foreach (ObjectGrabDelegate d in handlerObjectGrabbing.GetInvocationList())
631 } 800 {
801 try
802 {
803 d(localID, originalID, offsetPos, remoteClient, surfaceArgs);
804 }
805 catch (Exception e)
806 {
807 m_log.ErrorFormat(
808 "[EVENT MANAGER]: Delegate for TriggerObjectGrabbing failed - continuing. {0} {1}",
809 e.Message, e.StackTrace);
810 }
811 }
812 }
632 } 813 }
633 814
634 public void TriggerObjectDeGrab(uint localID, uint originalID, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs) 815 public void TriggerObjectDeGrab(uint localID, uint originalID, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
635 { 816 {
636 handlerObjectDeGrab = OnObjectDeGrab; 817 ObjectDeGrabDelegate handlerObjectDeGrab = OnObjectDeGrab;
637 if (handlerObjectDeGrab != null) 818 if (handlerObjectDeGrab != null)
638 { 819 {
639 handlerObjectDeGrab(localID, originalID, remoteClient, surfaceArgs); 820 foreach (ObjectDeGrabDelegate d in handlerObjectDeGrab.GetInvocationList())
640 } 821 {
822 try
823 {
824 d(localID, originalID, remoteClient, surfaceArgs);
825 }
826 catch (Exception e)
827 {
828 m_log.ErrorFormat(
829 "[EVENT MANAGER]: Delegate for TriggerObjectDeGrab failed - continuing. {0} {1}",
830 e.Message, e.StackTrace);
831 }
832 }
833 }
641 } 834 }
642 835
643 public void TriggerScriptReset(uint localID, UUID itemID) 836 public void TriggerScriptReset(uint localID, UUID itemID)
644 { 837 {
645 handlerScriptReset = OnScriptReset; 838 ScriptResetDelegate handlerScriptReset = OnScriptReset;
646 if (handlerScriptReset != null) 839 if (handlerScriptReset != null)
647 { 840 {
648 handlerScriptReset(localID, itemID); 841 foreach (ScriptResetDelegate d in handlerScriptReset.GetInvocationList())
649 } 842 {
843 try
844 {
845 d(localID, itemID);
846 }
847 catch (Exception e)
848 {
849 m_log.ErrorFormat(
850 "[EVENT MANAGER]: Delegate for TriggerScriptReset failed - continuing. {0} {1}",
851 e.Message, e.StackTrace);
852 }
853 }
854 }
650 } 855 }
651 856
652 public void TriggerRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource) 857 public void TriggerRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource)
653 { 858 {
654 handlerRezScript = OnRezScript; 859 NewRezScript handlerRezScript = OnRezScript;
655 if (handlerRezScript != null) 860 if (handlerRezScript != null)
656 { 861 {
657 handlerRezScript(localID, itemID, script, startParam, 862 foreach (NewRezScript d in handlerRezScript.GetInvocationList())
658 postOnRez, engine, stateSource); 863 {
659 } 864 try
865 {
866 d(localID, itemID, script, startParam, postOnRez, engine, stateSource);
867 }
868 catch (Exception e)
869 {
870 m_log.ErrorFormat(
871 "[EVENT MANAGER]: Delegate for TriggerRezScript failed - continuing. {0} {1}",
872 e.Message, e.StackTrace);
873 }
874 }
875 }
660 } 876 }
661 877
662 public void TriggerStartScript(uint localID, UUID itemID) 878 public void TriggerStartScript(uint localID, UUID itemID)
663 { 879 {
664 handlerStartScript = OnStartScript; 880 StartScript handlerStartScript = OnStartScript;
665 if (handlerStartScript != null) 881 if (handlerStartScript != null)
666 { 882 {
667 handlerStartScript(localID, itemID); 883 foreach (StartScript d in handlerStartScript.GetInvocationList())
668 } 884 {
885 try
886 {
887 d(localID, itemID);
888 }
889 catch (Exception e)
890 {
891 m_log.ErrorFormat(
892 "[EVENT MANAGER]: Delegate for TriggerStartScript failed - continuing. {0} {1}",
893 e.Message, e.StackTrace);
894 }
895 }
896 }
669 } 897 }
670 898
671 public void TriggerStopScript(uint localID, UUID itemID) 899 public void TriggerStopScript(uint localID, UUID itemID)
672 { 900 {
673 handlerStopScript = OnStopScript; 901 StopScript handlerStopScript = OnStopScript;
674 if (handlerStopScript != null) 902 if (handlerStopScript != null)
675 { 903 {
676 handlerStopScript(localID, itemID); 904 foreach (StopScript d in handlerStopScript.GetInvocationList())
677 } 905 {
906 try
907 {
908 d(localID, itemID);
909 }
910 catch (Exception e)
911 {
912 m_log.ErrorFormat(
913 "[EVENT MANAGER]: Delegate for TriggerStopScript failed - continuing. {0} {1}",
914 e.Message, e.StackTrace);
915 }
916 }
917 }
678 } 918 }
679 919
680 public void TriggerRemoveScript(uint localID, UUID itemID) 920 public void TriggerRemoveScript(uint localID, UUID itemID)
681 { 921 {
682 handlerRemoveScript = OnRemoveScript; 922 RemoveScript handlerRemoveScript = OnRemoveScript;
683 if (handlerRemoveScript != null) 923 if (handlerRemoveScript != null)
684 { 924 {
685 handlerRemoveScript(localID, itemID); 925 foreach (RemoveScript d in handlerRemoveScript.GetInvocationList())
686 } 926 {
927 try
928 {
929 d(localID, itemID);
930 }
931 catch (Exception e)
932 {
933 m_log.ErrorFormat(
934 "[EVENT MANAGER]: Delegate for TriggerRemoveScript failed - continuing. {0} {1}",
935 e.Message, e.StackTrace);
936 }
937 }
938 }
687 } 939 }
688 940
689 public bool TriggerGroupMove(UUID groupID, Vector3 delta) 941 public bool TriggerGroupMove(UUID groupID, Vector3 delta)
690 { 942 {
691 handlerSceneGroupMove = OnSceneGroupMove; 943 bool result = true;
692 944
945 SceneGroupMoved handlerSceneGroupMove = OnSceneGroupMove;
693 if (handlerSceneGroupMove != null) 946 if (handlerSceneGroupMove != null)
694 { 947 {
695 return handlerSceneGroupMove(groupID, delta); 948 foreach (SceneGroupMoved d in handlerSceneGroupMove.GetInvocationList())
949 {
950 try
951 {
952 if (d(groupID, delta) == false)
953 result = false;
954 }
955 catch (Exception e)
956 {
957 m_log.ErrorFormat(
958 "[EVENT MANAGER]: Delegate for TriggerOnAttach failed - continuing. {0} {1}",
959 e.Message, e.StackTrace);
960 }
961 }
696 } 962 }
697 return true; 963
964 return result;
698 } 965 }
699 966
700 public bool TriggerGroupSpinStart(UUID groupID) 967 public bool TriggerGroupSpinStart(UUID groupID)
701 { 968 {
702 handlerSceneGroupSpinStarted = OnSceneGroupSpinStart; 969 bool result = true;
703 970
971 SceneGroupSpinStarted handlerSceneGroupSpinStarted = OnSceneGroupSpinStart;
704 if (handlerSceneGroupSpinStarted != null) 972 if (handlerSceneGroupSpinStarted != null)
705 { 973 {
706 return handlerSceneGroupSpinStarted(groupID); 974 foreach (SceneGroupSpinStarted d in handlerSceneGroupSpinStarted.GetInvocationList())
975 {
976 try
977 {
978 if (d(groupID) == false)
979 result = false;
980 }
981 catch (Exception e)
982 {
983 m_log.ErrorFormat(
984 "[EVENT MANAGER]: Delegate for TriggerGroupSpinStart failed - continuing. {0} {1}",
985 e.Message, e.StackTrace);
986 }
987 }
707 } 988 }
708 return true; 989
990 return result;
709 } 991 }
710 992
711 public bool TriggerGroupSpin(UUID groupID, Quaternion rotation) 993 public bool TriggerGroupSpin(UUID groupID, Quaternion rotation)
712 { 994 {
713 handlerSceneGroupSpin = OnSceneGroupSpin; 995 bool result = true;
714 996
997 SceneGroupSpun handlerSceneGroupSpin = OnSceneGroupSpin;
715 if (handlerSceneGroupSpin != null) 998 if (handlerSceneGroupSpin != null)
716 { 999 {
717 return handlerSceneGroupSpin(groupID, rotation); 1000 foreach (SceneGroupSpun d in handlerSceneGroupSpin.GetInvocationList())
1001 {
1002 try
1003 {
1004 if (d(groupID, rotation) == false)
1005 result = false;
1006 }
1007 catch (Exception e)
1008 {
1009 m_log.ErrorFormat(
1010 "[EVENT MANAGER]: Delegate for TriggerGroupSpin failed - continuing. {0} {1}",
1011 e.Message, e.StackTrace);
1012 }
1013 }
718 } 1014 }
719 return true; 1015
1016 return result;
720 } 1017 }
721 1018
722 public void TriggerGroupGrab(UUID groupID, Vector3 offset, UUID userID) 1019 public void TriggerGroupGrab(UUID groupID, Vector3 offset, UUID userID)
723 { 1020 {
724 handlerSceneGroupGrab = OnSceneGroupGrab; 1021 SceneGroupGrabed handlerSceneGroupGrab = OnSceneGroupGrab;
725 if (handlerSceneGroupGrab != null) 1022 if (handlerSceneGroupGrab != null)
726 { 1023 {
727 handlerSceneGroupGrab(groupID, offset, userID); 1024 foreach (SceneGroupGrabed d in handlerSceneGroupGrab.GetInvocationList())
728 } 1025 {
1026 try
1027 {
1028 d(groupID, offset, userID);
1029 }
1030 catch (Exception e)
1031 {
1032 m_log.ErrorFormat(
1033 "[EVENT MANAGER]: Delegate for TriggerGroupGrab failed - continuing. {0} {1}",
1034 e.Message, e.StackTrace);
1035 }
1036 }
1037 }
729 } 1038 }
730 1039
731 public void TriggerLandObjectAdded(ILandObject newParcel) 1040 public void TriggerLandObjectAdded(ILandObject newParcel)
732 { 1041 {
733 handlerLandObjectAdded = OnLandObjectAdded; 1042 LandObjectAdded handlerLandObjectAdded = OnLandObjectAdded;
734
735 if (handlerLandObjectAdded != null) 1043 if (handlerLandObjectAdded != null)
736 { 1044 {
737 handlerLandObjectAdded(newParcel); 1045 foreach (LandObjectAdded d in handlerLandObjectAdded.GetInvocationList())
738 } 1046 {
1047 try
1048 {
1049 d(newParcel);
1050 }
1051 catch (Exception e)
1052 {
1053 m_log.ErrorFormat(
1054 "[EVENT MANAGER]: Delegate for TriggerLandObjectAdded failed - continuing. {0} {1}",
1055 e.Message, e.StackTrace);
1056 }
1057 }
1058 }
739 } 1059 }
740 1060
741 public void TriggerLandObjectRemoved(UUID globalID) 1061 public void TriggerLandObjectRemoved(UUID globalID)
742 { 1062 {
743 handlerLandObjectRemoved = OnLandObjectRemoved; 1063 LandObjectRemoved handlerLandObjectRemoved = OnLandObjectRemoved;
744 if (handlerLandObjectRemoved != null) 1064 if (handlerLandObjectRemoved != null)
745 { 1065 {
746 handlerLandObjectRemoved(globalID); 1066 foreach (LandObjectRemoved d in handlerLandObjectRemoved.GetInvocationList())
747 } 1067 {
1068 try
1069 {
1070 d(globalID);
1071 }
1072 catch (Exception e)
1073 {
1074 m_log.ErrorFormat(
1075 "[EVENT MANAGER]: Delegate for TriggerLandObjectRemoved failed - continuing. {0} {1}",
1076 e.Message, e.StackTrace);
1077 }
1078 }
1079 }
748 } 1080 }
749 1081
750 public void TriggerLandObjectUpdated(uint localParcelID, ILandObject newParcel) 1082 public void TriggerLandObjectUpdated(uint localParcelID, ILandObject newParcel)
751 { 1083 {
752 //triggerLandObjectRemoved(localParcelID);
753
754 TriggerLandObjectAdded(newParcel); 1084 TriggerLandObjectAdded(newParcel);
755 } 1085 }
756 1086
757 public void TriggerAvatarEnteringNewParcel(ScenePresence avatar, int localLandID, UUID regionID) 1087 public void TriggerAvatarEnteringNewParcel(ScenePresence avatar, int localLandID, UUID regionID)
758 { 1088 {
759 handlerAvatarEnteringNewParcel = OnAvatarEnteringNewParcel; 1089 AvatarEnteringNewParcel handlerAvatarEnteringNewParcel = OnAvatarEnteringNewParcel;
760
761 if (handlerAvatarEnteringNewParcel != null) 1090 if (handlerAvatarEnteringNewParcel != null)
762 { 1091 {
763 handlerAvatarEnteringNewParcel(avatar, localLandID, regionID); 1092 foreach (AvatarEnteringNewParcel d in handlerAvatarEnteringNewParcel.GetInvocationList())
764 } 1093 {
1094 try
1095 {
1096 d(avatar, localLandID, regionID);
1097 }
1098 catch (Exception e)
1099 {
1100 m_log.ErrorFormat(
1101 "[EVENT MANAGER]: Delegate for TriggerAvatarEnteringNewParcel failed - continuing. {0} {1}",
1102 e.Message, e.StackTrace);
1103 }
1104 }
1105 }
765 } 1106 }
766 1107
767 public void TriggerIncomingInstantMessage(GridInstantMessage message) 1108 public void TriggerIncomingInstantMessage(GridInstantMessage message)
768 { 1109 {
769 handlerIncomingInstantMessage = OnIncomingInstantMessage; 1110 IncomingInstantMessage handlerIncomingInstantMessage = OnIncomingInstantMessage;
770 if (handlerIncomingInstantMessage != null) 1111 if (handlerIncomingInstantMessage != null)
771 { 1112 {
772 handlerIncomingInstantMessage(message); 1113 foreach (IncomingInstantMessage d in handlerIncomingInstantMessage.GetInvocationList())
773 } 1114 {
1115 try
1116 {
1117 d(message);
1118 }
1119 catch (Exception e)
1120 {
1121 m_log.ErrorFormat(
1122 "[EVENT MANAGER]: Delegate for TriggerIncomingInstantMessage failed - continuing. {0} {1}",
1123 e.Message, e.StackTrace);
1124 }
1125 }
1126 }
774 } 1127 }
775 1128
776 public void TriggerUnhandledInstantMessage(GridInstantMessage message) 1129 public void TriggerUnhandledInstantMessage(GridInstantMessage message)
777 { 1130 {
778 handlerUnhandledInstantMessage = OnUnhandledInstantMessage; 1131 IncomingInstantMessage handlerUnhandledInstantMessage = OnUnhandledInstantMessage;
779 if (handlerUnhandledInstantMessage != null) 1132 if (handlerUnhandledInstantMessage != null)
780 { 1133 {
781 handlerUnhandledInstantMessage(message); 1134 foreach (IncomingInstantMessage d in handlerUnhandledInstantMessage.GetInvocationList())
782 } 1135 {
1136 try
1137 {
1138 d(message);
1139 }
1140 catch (Exception e)
1141 {
1142 m_log.ErrorFormat(
1143 "[EVENT MANAGER]: Delegate for TriggerOnAttach failed - continuing. {0} {1}",
1144 e.Message, e.StackTrace);
1145 }
1146 }
1147 }
783 } 1148 }
784 1149
785 public void TriggerClientClosed(UUID ClientID, Scene scene) 1150 public void TriggerClientClosed(UUID ClientID, Scene scene)
786 { 1151 {
787 handlerClientClosed = OnClientClosed; 1152 ClientClosed handlerClientClosed = OnClientClosed;
788 if (handlerClientClosed != null) 1153 if (handlerClientClosed != null)
789 { 1154 {
790 handlerClientClosed(ClientID, scene); 1155 foreach (ClientClosed d in handlerClientClosed.GetInvocationList())
791 } 1156 {
1157 try
1158 {
1159 d(ClientID, scene);
1160 }
1161 catch (Exception e)
1162 {
1163 m_log.ErrorFormat(
1164 "[EVENT MANAGER]: Delegate for TriggerClientClosed failed - continuing. {0} {1}",
1165 e.Message, e.StackTrace);
1166 }
1167 }
1168 }
792 } 1169 }
793 1170
794 public void TriggerOnMakeChildAgent(ScenePresence presence) 1171 public void TriggerOnMakeChildAgent(ScenePresence presence)
795 { 1172 {
796 handlerMakeChildAgent = OnMakeChildAgent; 1173 OnMakeChildAgentDelegate handlerMakeChildAgent = OnMakeChildAgent;
797 if (handlerMakeChildAgent != null) 1174 if (handlerMakeChildAgent != null)
798 { 1175 {
799 handlerMakeChildAgent(presence); 1176 foreach (OnMakeChildAgentDelegate d in handlerMakeChildAgent.GetInvocationList())
800 } 1177 {
1178 try
1179 {
1180 d(presence);
1181 }
1182 catch (Exception e)
1183 {
1184 m_log.ErrorFormat(
1185 "[EVENT MANAGER]: Delegate for TriggerOnMakeChildAgent failed - continuing. {0} {1}",
1186 e.Message, e.StackTrace);
1187 }
1188 }
1189 }
801 } 1190 }
802 1191
803 public void TriggerOnSendNewWindlightProfileTargeted(RegionMeta7WindlightData wl, UUID user) 1192 public void TriggerOnSendNewWindlightProfileTargeted(RegionMeta7WindlightData wl, UUID user)
804 { 1193 {
805 handlerSendNewWindlightProfileTargeted = OnSendNewWindlightProfileTargeted; 1194 OnSendNewWindlightProfileTargetedDelegate handlerSendNewWindlightProfileTargeted = OnSendNewWindlightProfileTargeted;
806 if (handlerSendNewWindlightProfileTargeted != null) 1195 if (handlerSendNewWindlightProfileTargeted != null)
807 { 1196 {
808 handlerSendNewWindlightProfileTargeted(wl, user); 1197 handlerSendNewWindlightProfileTargeted(wl, user);
@@ -811,7 +1200,7 @@ namespace OpenSim.Region.Framework.Scenes
811 1200
812 public void TriggerOnSaveNewWindlightProfile() 1201 public void TriggerOnSaveNewWindlightProfile()
813 { 1202 {
814 handlerSaveNewWindlightProfile = OnSaveNewWindlightProfile; 1203 OnSaveNewWindlightProfileDelegate handlerSaveNewWindlightProfile = OnSaveNewWindlightProfile;
815 if (handlerSaveNewWindlightProfile != null) 1204 if (handlerSaveNewWindlightProfile != null)
816 { 1205 {
817 handlerSaveNewWindlightProfile(); 1206 handlerSaveNewWindlightProfile();
@@ -820,203 +1209,464 @@ namespace OpenSim.Region.Framework.Scenes
820 1209
821 public void TriggerOnMakeRootAgent(ScenePresence presence) 1210 public void TriggerOnMakeRootAgent(ScenePresence presence)
822 { 1211 {
823 handlerMakeRootAgent = OnMakeRootAgent; 1212 OnMakeRootAgentDelegate handlerMakeRootAgent = OnMakeRootAgent;
824 if (handlerMakeRootAgent != null) 1213 if (handlerMakeRootAgent != null)
825 { 1214 {
826 handlerMakeRootAgent(presence); 1215 foreach (OnMakeRootAgentDelegate d in handlerMakeRootAgent.GetInvocationList())
827 } 1216 {
1217 try
1218 {
1219 d(presence);
1220 }
1221 catch (Exception e)
1222 {
1223 m_log.ErrorFormat(
1224 "[EVENT MANAGER]: Delegate for TriggerOnMakeRootAgent failed - continuing. {0} {1}",
1225 e.Message, e.StackTrace);
1226 }
1227 }
1228 }
828 } 1229 }
829 1230
830 public void TriggerOnRegisterCaps(UUID agentID, Caps caps) 1231 public void TriggerOnRegisterCaps(UUID agentID, Caps caps)
831 { 1232 {
832 handlerRegisterCaps = OnRegisterCaps; 1233 RegisterCapsEvent handlerRegisterCaps = OnRegisterCaps;
833 if (handlerRegisterCaps != null) 1234 if (handlerRegisterCaps != null)
834 { 1235 {
835 handlerRegisterCaps(agentID, caps); 1236 foreach (RegisterCapsEvent d in handlerRegisterCaps.GetInvocationList())
836 } 1237 {
1238 try
1239 {
1240 d(agentID, caps);
1241 }
1242 catch (Exception e)
1243 {
1244 m_log.ErrorFormat(
1245 "[EVENT MANAGER]: Delegate for TriggerOnRegisterCaps failed - continuing. {0} {1}",
1246 e.Message, e.StackTrace);
1247 }
1248 }
1249 }
837 } 1250 }
838 1251
839 public void TriggerOnDeregisterCaps(UUID agentID, Caps caps) 1252 public void TriggerOnDeregisterCaps(UUID agentID, Caps caps)
840 { 1253 {
841 handlerDeregisterCaps = OnDeregisterCaps; 1254 DeregisterCapsEvent handlerDeregisterCaps = OnDeregisterCaps;
842 if (handlerDeregisterCaps != null) 1255 if (handlerDeregisterCaps != null)
843 { 1256 {
844 handlerDeregisterCaps(agentID, caps); 1257 foreach (DeregisterCapsEvent d in handlerDeregisterCaps.GetInvocationList())
845 } 1258 {
1259 try
1260 {
1261 d(agentID, caps);
1262 }
1263 catch (Exception e)
1264 {
1265 m_log.ErrorFormat(
1266 "[EVENT MANAGER]: Delegate for TriggerOnDeregisterCaps failed - continuing. {0} {1}",
1267 e.Message, e.StackTrace);
1268 }
1269 }
1270 }
846 } 1271 }
847 1272
848 public void TriggerOnNewInventoryItemUploadComplete(UUID agentID, UUID AssetID, String AssetName, int userlevel) 1273 public void TriggerOnNewInventoryItemUploadComplete(UUID agentID, UUID AssetID, String AssetName, int userlevel)
849 { 1274 {
850 handlerNewInventoryItemUpdateComplete = OnNewInventoryItemUploadComplete; 1275 NewInventoryItemUploadComplete handlerNewInventoryItemUpdateComplete = OnNewInventoryItemUploadComplete;
851 if (handlerNewInventoryItemUpdateComplete != null) 1276 if (handlerNewInventoryItemUpdateComplete != null)
852 { 1277 {
853 handlerNewInventoryItemUpdateComplete(agentID, AssetID, AssetName, userlevel); 1278 foreach (NewInventoryItemUploadComplete d in handlerNewInventoryItemUpdateComplete.GetInvocationList())
854 } 1279 {
855 } 1280 try
856 1281 {
857 public void TriggerLandBuy(Object sender, LandBuyArgs e) 1282 d(agentID, AssetID, AssetName, userlevel);
858 { 1283 }
859 handlerLandBuy = OnLandBuy; 1284 catch (Exception e)
1285 {
1286 m_log.ErrorFormat(
1287 "[EVENT MANAGER]: Delegate for TriggerOnNewInventoryItemUploadComplete failed - continuing. {0} {1}",
1288 e.Message, e.StackTrace);
1289 }
1290 }
1291 }
1292 }
1293
1294 public void TriggerLandBuy(Object sender, LandBuyArgs args)
1295 {
1296 LandBuy handlerLandBuy = OnLandBuy;
860 if (handlerLandBuy != null) 1297 if (handlerLandBuy != null)
861 { 1298 {
862 handlerLandBuy(sender, e); 1299 foreach (LandBuy d in handlerLandBuy.GetInvocationList())
863 } 1300 {
864 } 1301 try
865 1302 {
866 public void TriggerValidateLandBuy(Object sender, LandBuyArgs e) 1303 d(sender, args);
867 { 1304 }
868 handlerValidateLandBuy = OnValidateLandBuy; 1305 catch (Exception e)
1306 {
1307 m_log.ErrorFormat(
1308 "[EVENT MANAGER]: Delegate for TriggerLandBuy failed - continuing. {0} {1}",
1309 e.Message, e.StackTrace);
1310 }
1311 }
1312 }
1313 }
1314
1315 public void TriggerValidateLandBuy(Object sender, LandBuyArgs args)
1316 {
1317 LandBuy handlerValidateLandBuy = OnValidateLandBuy;
869 if (handlerValidateLandBuy != null) 1318 if (handlerValidateLandBuy != null)
870 { 1319 {
871 handlerValidateLandBuy(sender, e); 1320 foreach (LandBuy d in handlerValidateLandBuy.GetInvocationList())
872 } 1321 {
1322 try
1323 {
1324 d(sender, args);
1325 }
1326 catch (Exception e)
1327 {
1328 m_log.ErrorFormat(
1329 "[EVENT MANAGER]: Delegate for TriggerValidateLandBuy failed - continuing. {0} {1}",
1330 e.Message, e.StackTrace);
1331 }
1332 }
1333 }
873 } 1334 }
874 1335
875 public void TriggerAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 currentpos) 1336 public void TriggerAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 currentpos)
876 { 1337 {
877 handlerScriptAtTargetEvent = OnScriptAtTargetEvent; 1338 ScriptAtTargetEvent handlerScriptAtTargetEvent = OnScriptAtTargetEvent;
878 if (handlerScriptAtTargetEvent != null) 1339 if (handlerScriptAtTargetEvent != null)
879 { 1340 {
880 handlerScriptAtTargetEvent(localID, handle, targetpos, currentpos); 1341 foreach (ScriptAtTargetEvent d in handlerScriptAtTargetEvent.GetInvocationList())
881 } 1342 {
1343 try
1344 {
1345 d(localID, handle, targetpos, currentpos);
1346 }
1347 catch (Exception e)
1348 {
1349 m_log.ErrorFormat(
1350 "[EVENT MANAGER]: Delegate for TriggerAtTargetEvent failed - continuing. {0} {1}",
1351 e.Message, e.StackTrace);
1352 }
1353 }
1354 }
882 } 1355 }
883 1356
884 public void TriggerNotAtTargetEvent(uint localID) 1357 public void TriggerNotAtTargetEvent(uint localID)
885 { 1358 {
886 handlerScriptNotAtTargetEvent = OnScriptNotAtTargetEvent; 1359 ScriptNotAtTargetEvent handlerScriptNotAtTargetEvent = OnScriptNotAtTargetEvent;
887 if (handlerScriptNotAtTargetEvent != null) 1360 if (handlerScriptNotAtTargetEvent != null)
888 { 1361 {
889 handlerScriptNotAtTargetEvent(localID); 1362 foreach (ScriptNotAtTargetEvent d in handlerScriptNotAtTargetEvent.GetInvocationList())
890 } 1363 {
1364 try
1365 {
1366 d(localID);
1367 }
1368 catch (Exception e)
1369 {
1370 m_log.ErrorFormat(
1371 "[EVENT MANAGER]: Delegate for TriggerNotAtTargetEvent failed - continuing. {0} {1}",
1372 e.Message, e.StackTrace);
1373 }
1374 }
1375 }
891 } 1376 }
892 1377
893 public void TriggerAtRotTargetEvent(uint localID, uint handle, Quaternion targetrot, Quaternion currentrot) 1378 public void TriggerAtRotTargetEvent(uint localID, uint handle, Quaternion targetrot, Quaternion currentrot)
894 { 1379 {
895 handlerScriptAtRotTargetEvent = OnScriptAtRotTargetEvent; 1380 ScriptAtRotTargetEvent handlerScriptAtRotTargetEvent = OnScriptAtRotTargetEvent;
896 if (handlerScriptAtRotTargetEvent != null) 1381 if (handlerScriptAtRotTargetEvent != null)
897 { 1382 {
898 handlerScriptAtRotTargetEvent(localID, handle, targetrot, currentrot); 1383 foreach (ScriptAtRotTargetEvent d in handlerScriptAtRotTargetEvent.GetInvocationList())
899 } 1384 {
1385 try
1386 {
1387 d(localID, handle, targetrot, currentrot);
1388 }
1389 catch (Exception e)
1390 {
1391 m_log.ErrorFormat(
1392 "[EVENT MANAGER]: Delegate for TriggerAtRotTargetEvent failed - continuing. {0} {1}",
1393 e.Message, e.StackTrace);
1394 }
1395 }
1396 }
900 } 1397 }
901 1398
902 public void TriggerNotAtRotTargetEvent(uint localID) 1399 public void TriggerNotAtRotTargetEvent(uint localID)
903 { 1400 {
904 handlerScriptNotAtRotTargetEvent = OnScriptNotAtRotTargetEvent; 1401 ScriptNotAtRotTargetEvent handlerScriptNotAtRotTargetEvent = OnScriptNotAtRotTargetEvent;
905 if (handlerScriptNotAtRotTargetEvent != null) 1402 if (handlerScriptNotAtRotTargetEvent != null)
906 { 1403 {
907 handlerScriptNotAtRotTargetEvent(localID); 1404 foreach (ScriptNotAtRotTargetEvent d in handlerScriptNotAtRotTargetEvent.GetInvocationList())
908 } 1405 {
1406 try
1407 {
1408 d(localID);
1409 }
1410 catch (Exception e)
1411 {
1412 m_log.ErrorFormat(
1413 "[EVENT MANAGER]: Delegate for TriggerNotAtRotTargetEvent failed - continuing. {0} {1}",
1414 e.Message, e.StackTrace);
1415 }
1416 }
1417 }
909 } 1418 }
910 1419
911 public void TriggerRequestChangeWaterHeight(float height) 1420 public void TriggerRequestChangeWaterHeight(float height)
912 { 1421 {
913 handlerRequestChangeWaterHeight = OnRequestChangeWaterHeight; 1422 RequestChangeWaterHeight handlerRequestChangeWaterHeight = OnRequestChangeWaterHeight;
914 if (handlerRequestChangeWaterHeight != null) 1423 if (handlerRequestChangeWaterHeight != null)
915 { 1424 {
916 handlerRequestChangeWaterHeight(height); 1425 foreach (RequestChangeWaterHeight d in handlerRequestChangeWaterHeight.GetInvocationList())
917 } 1426 {
1427 try
1428 {
1429 d(height);
1430 }
1431 catch (Exception e)
1432 {
1433 m_log.ErrorFormat(
1434 "[EVENT MANAGER]: Delegate for TriggerRequestChangeWaterHeight failed - continuing. {0} {1}",
1435 e.Message, e.StackTrace);
1436 }
1437 }
1438 }
918 } 1439 }
919 1440
920 public void TriggerAvatarKill(uint KillerObjectLocalID, ScenePresence DeadAvatar) 1441 public void TriggerAvatarKill(uint KillerObjectLocalID, ScenePresence DeadAvatar)
921 { 1442 {
922 handlerAvatarKill = OnAvatarKilled; 1443 AvatarKillData handlerAvatarKill = OnAvatarKilled;
923 if (handlerAvatarKill != null) 1444 if (handlerAvatarKill != null)
924 { 1445 {
925 handlerAvatarKill(KillerObjectLocalID, DeadAvatar); 1446 foreach (AvatarKillData d in handlerAvatarKill.GetInvocationList())
926 } 1447 {
1448 try
1449 {
1450 d(KillerObjectLocalID, DeadAvatar);
1451 }
1452 catch (Exception e)
1453 {
1454 m_log.ErrorFormat(
1455 "[EVENT MANAGER]: Delegate for TriggerAvatarKill failed - continuing. {0} {1}",
1456 e.Message, e.StackTrace);
1457 }
1458 }
1459 }
927 } 1460 }
928 1461
929 public void TriggerSignificantClientMovement(IClientAPI client) 1462 public void TriggerSignificantClientMovement(IClientAPI client)
930 { 1463 {
931 handlerSignificantClientMovement = OnSignificantClientMovement; 1464 SignificantClientMovement handlerSignificantClientMovement = OnSignificantClientMovement;
932 if (handlerSignificantClientMovement != null) 1465 if (handlerSignificantClientMovement != null)
933 { 1466 {
934 handlerSignificantClientMovement(client); 1467 foreach (SignificantClientMovement d in handlerSignificantClientMovement.GetInvocationList())
935 } 1468 {
1469 try
1470 {
1471 d(client);
1472 }
1473 catch (Exception e)
1474 {
1475 m_log.ErrorFormat(
1476 "[EVENT MANAGER]: Delegate for TriggerSignificantClientMovement failed - continuing. {0} {1}",
1477 e.Message, e.StackTrace);
1478 }
1479 }
1480 }
936 } 1481 }
937 1482
938 public void TriggerOnChatFromWorld(Object sender, OSChatMessage chat) 1483 public void TriggerOnChatFromWorld(Object sender, OSChatMessage chat)
939 { 1484 {
940 handlerChatFromWorld = OnChatFromWorld; 1485 ChatFromWorldEvent handlerChatFromWorld = OnChatFromWorld;
941 if (handlerChatFromWorld != null) 1486 if (handlerChatFromWorld != null)
942 { 1487 {
943 handlerChatFromWorld(sender, chat); 1488 foreach (ChatFromWorldEvent d in handlerChatFromWorld.GetInvocationList())
944 } 1489 {
1490 try
1491 {
1492 d(sender, chat);
1493 }
1494 catch (Exception e)
1495 {
1496 m_log.ErrorFormat(
1497 "[EVENT MANAGER]: Delegate for TriggerOnChatFromWorld failed - continuing. {0} {1}",
1498 e.Message, e.StackTrace);
1499 }
1500 }
1501 }
945 } 1502 }
946 1503
947 public void TriggerOnChatFromClient(Object sender, OSChatMessage chat) 1504 public void TriggerOnChatFromClient(Object sender, OSChatMessage chat)
948 { 1505 {
949 handlerChatFromClient = OnChatFromClient; 1506 ChatFromClientEvent handlerChatFromClient = OnChatFromClient;
950 if (handlerChatFromClient != null) 1507 if (handlerChatFromClient != null)
951 { 1508 {
952 handlerChatFromClient(sender, chat); 1509 foreach (ChatFromClientEvent d in handlerChatFromClient.GetInvocationList())
953 } 1510 {
1511 try
1512 {
1513 d(sender, chat);
1514 }
1515 catch (Exception e)
1516 {
1517 m_log.ErrorFormat(
1518 "[EVENT MANAGER]: Delegate for TriggerOnChatFromClient failed - continuing. {0} {1}",
1519 e.Message, e.StackTrace);
1520 }
1521 }
1522 }
954 } 1523 }
955 1524
956 public void TriggerOnChatBroadcast(Object sender, OSChatMessage chat) 1525 public void TriggerOnChatBroadcast(Object sender, OSChatMessage chat)
957 { 1526 {
958 handlerChatBroadcast = OnChatBroadcast; 1527 ChatBroadcastEvent handlerChatBroadcast = OnChatBroadcast;
959 if (handlerChatBroadcast != null) 1528 if (handlerChatBroadcast != null)
960 { 1529 {
961 handlerChatBroadcast(sender, chat); 1530 foreach (ChatBroadcastEvent d in handlerChatBroadcast.GetInvocationList())
962 } 1531 {
1532 try
1533 {
1534 d(sender, chat);
1535 }
1536 catch (Exception e)
1537 {
1538 m_log.ErrorFormat(
1539 "[EVENT MANAGER]: Delegate for TriggerOnChatBroadcast failed - continuing. {0} {1}",
1540 e.Message, e.StackTrace);
1541 }
1542 }
1543 }
963 } 1544 }
964 1545
965 internal void TriggerControlEvent(uint p, UUID scriptUUID, UUID avatarID, uint held, uint _changed) 1546 internal void TriggerControlEvent(uint p, UUID scriptUUID, UUID avatarID, uint held, uint _changed)
966 { 1547 {
967 handlerScriptControlEvent = OnScriptControlEvent; 1548 ScriptControlEvent handlerScriptControlEvent = OnScriptControlEvent;
968 if (handlerScriptControlEvent != null) 1549 if (handlerScriptControlEvent != null)
969 { 1550 {
970 handlerScriptControlEvent(p, scriptUUID, avatarID, held, _changed); 1551 foreach (ScriptControlEvent d in handlerScriptControlEvent.GetInvocationList())
971 } 1552 {
1553 try
1554 {
1555 d(p, scriptUUID, avatarID, held, _changed);
1556 }
1557 catch (Exception e)
1558 {
1559 m_log.ErrorFormat(
1560 "[EVENT MANAGER]: Delegate for TriggerControlEvent failed - continuing. {0} {1}",
1561 e.Message, e.StackTrace);
1562 }
1563 }
1564 }
972 } 1565 }
973 1566
974 public void TriggerNoticeNoLandDataFromStorage() 1567 public void TriggerNoticeNoLandDataFromStorage()
975 { 1568 {
976 handlerNoticeNoLandDataFromStorage = OnNoticeNoLandDataFromStorage; 1569 NoticeNoLandDataFromStorage handlerNoticeNoLandDataFromStorage = OnNoticeNoLandDataFromStorage;
977 if (handlerNoticeNoLandDataFromStorage != null) 1570 if (handlerNoticeNoLandDataFromStorage != null)
978 { 1571 {
979 handlerNoticeNoLandDataFromStorage(); 1572 foreach (NoticeNoLandDataFromStorage d in handlerNoticeNoLandDataFromStorage.GetInvocationList())
980 1573 {
981 } 1574 try
1575 {
1576 d();
1577 }
1578 catch (Exception e)
1579 {
1580 m_log.ErrorFormat(
1581 "[EVENT MANAGER]: Delegate for TriggerNoticeNoLandDataFromStorage failed - continuing. {0} {1}",
1582 e.Message, e.StackTrace);
1583 }
1584 }
1585 }
982 } 1586 }
983 1587
984 public void TriggerIncomingLandDataFromStorage(List<LandData> landData) 1588 public void TriggerIncomingLandDataFromStorage(List<LandData> landData)
985 { 1589 {
986 handlerIncomingLandDataFromStorage = OnIncomingLandDataFromStorage; 1590 IncomingLandDataFromStorage handlerIncomingLandDataFromStorage = OnIncomingLandDataFromStorage;
987 if (handlerIncomingLandDataFromStorage != null) 1591 if (handlerIncomingLandDataFromStorage != null)
988 { 1592 {
989 handlerIncomingLandDataFromStorage(landData); 1593 foreach (IncomingLandDataFromStorage d in handlerIncomingLandDataFromStorage.GetInvocationList())
990 1594 {
991 } 1595 try
1596 {
1597 d(landData);
1598 }
1599 catch (Exception e)
1600 {
1601 m_log.ErrorFormat(
1602 "[EVENT MANAGER]: Delegate for TriggerIncomingLandDataFromStorage failed - continuing. {0} {1}",
1603 e.Message, e.StackTrace);
1604 }
1605 }
1606 }
992 } 1607 }
993 1608
994 public void TriggerSetAllowForcefulBan(bool allow) 1609 public void TriggerSetAllowForcefulBan(bool allow)
995 { 1610 {
996 handlerSetAllowForcefulBan = OnSetAllowForcefulBan; 1611 SetAllowForcefulBan handlerSetAllowForcefulBan = OnSetAllowForcefulBan;
997 if (handlerSetAllowForcefulBan != null) 1612 if (handlerSetAllowForcefulBan != null)
998 { 1613 {
999 handlerSetAllowForcefulBan(allow); 1614 foreach (SetAllowForcefulBan d in handlerSetAllowForcefulBan.GetInvocationList())
1000 1615 {
1001 } 1616 try
1617 {
1618 d(allow);
1619 }
1620 catch (Exception e)
1621 {
1622 m_log.ErrorFormat(
1623 "[EVENT MANAGER]: Delegate for TriggerSetAllowForcefulBan failed - continuing. {0} {1}",
1624 e.Message, e.StackTrace);
1625 }
1626 }
1627 }
1002 } 1628 }
1003 1629
1004 public void TriggerRequestParcelPrimCountUpdate() 1630 public void TriggerRequestParcelPrimCountUpdate()
1005 { 1631 {
1006 handlerRequestParcelPrimCountUpdate = OnRequestParcelPrimCountUpdate; 1632 RequestParcelPrimCountUpdate handlerRequestParcelPrimCountUpdate = OnRequestParcelPrimCountUpdate;
1007 if (handlerRequestParcelPrimCountUpdate != null) 1633 if (handlerRequestParcelPrimCountUpdate != null)
1008 { 1634 {
1009 handlerRequestParcelPrimCountUpdate(); 1635 foreach (RequestParcelPrimCountUpdate d in handlerRequestParcelPrimCountUpdate.GetInvocationList())
1010 } 1636 {
1637 try
1638 {
1639 d();
1640 }
1641 catch (Exception e)
1642 {
1643 m_log.ErrorFormat(
1644 "[EVENT MANAGER]: Delegate for TriggerRequestParcelPrimCountUpdate failed - continuing. {0} {1}",
1645 e.Message, e.StackTrace);
1646 }
1647 }
1648 }
1011 } 1649 }
1012 1650
1013 public void TriggerParcelPrimCountTainted() 1651 public void TriggerParcelPrimCountTainted()
1014 { 1652 {
1015 handlerParcelPrimCountTainted = OnParcelPrimCountTainted; 1653 ParcelPrimCountTainted handlerParcelPrimCountTainted = OnParcelPrimCountTainted;
1016 if (handlerParcelPrimCountTainted != null) 1654 if (handlerParcelPrimCountTainted != null)
1017 { 1655 {
1018 handlerParcelPrimCountTainted(); 1656 foreach (ParcelPrimCountTainted d in handlerParcelPrimCountTainted.GetInvocationList())
1019 } 1657 {
1658 try
1659 {
1660 d();
1661 }
1662 catch (Exception e)
1663 {
1664 m_log.ErrorFormat(
1665 "[EVENT MANAGER]: Delegate for TriggerParcelPrimCountTainted failed - continuing. {0} {1}",
1666 e.Message, e.StackTrace);
1667 }
1668 }
1669 }
1020 } 1670 }
1021 1671
1022 // this lets us keep track of nasty script events like timer, etc. 1672 // this lets us keep track of nasty script events like timer, etc.
@@ -1039,99 +1689,277 @@ namespace OpenSim.Region.Framework.Scenes
1039 /// <param name="FixedSunHour">The hour 0.0 <= FixedSunHour <= 24.0 at which the sun is fixed at. Sun Hour 0 is sun-rise, when Day/Night ratio is 1:1</param> 1689 /// <param name="FixedSunHour">The hour 0.0 <= FixedSunHour <= 24.0 at which the sun is fixed at. Sun Hour 0 is sun-rise, when Day/Night ratio is 1:1</param>
1040 public void TriggerEstateToolsSunUpdate(ulong regionHandle, bool FixedTime, bool useEstateTime, float FixedSunHour) 1690 public void TriggerEstateToolsSunUpdate(ulong regionHandle, bool FixedTime, bool useEstateTime, float FixedSunHour)
1041 { 1691 {
1042 handlerEstateToolsSunUpdate = OnEstateToolsSunUpdate; 1692 EstateToolsSunUpdate handlerEstateToolsSunUpdate = OnEstateToolsSunUpdate;
1043 if (handlerEstateToolsSunUpdate != null) 1693 if (handlerEstateToolsSunUpdate != null)
1044 { 1694 {
1045 handlerEstateToolsSunUpdate(regionHandle, FixedTime, useEstateTime, FixedSunHour); 1695 foreach (EstateToolsSunUpdate d in handlerEstateToolsSunUpdate.GetInvocationList())
1046 } 1696 {
1697 try
1698 {
1699 d(regionHandle, FixedTime, useEstateTime, FixedSunHour);
1700 }
1701 catch (Exception e)
1702 {
1703 m_log.ErrorFormat(
1704 "[EVENT MANAGER]: Delegate for TriggerEstateToolsSunUpdate failed - continuing. {0} {1}",
1705 e.Message, e.StackTrace);
1706 }
1707 }
1708 }
1047 } 1709 }
1048 1710
1049 public float GetCurrentTimeAsSunLindenHour() 1711 public float GetCurrentTimeAsSunLindenHour()
1050 { 1712 {
1051 handlerCurrentTimeAsLindenSunHour = OnGetCurrentTimeAsLindenSunHour; 1713 SunLindenHour handlerCurrentTimeAsLindenSunHour = OnGetCurrentTimeAsLindenSunHour;
1052 if (handlerCurrentTimeAsLindenSunHour != null) 1714 if (handlerCurrentTimeAsLindenSunHour != null)
1053 { 1715 {
1054 return handlerCurrentTimeAsLindenSunHour(); 1716 foreach (SunLindenHour d in handlerCurrentTimeAsLindenSunHour.GetInvocationList())
1717 {
1718 try
1719 {
1720 return d();
1721 }
1722 catch (Exception e)
1723 {
1724 m_log.ErrorFormat(
1725 "[EVENT MANAGER]: Delegate for TriggerOnAttach failed - continuing. {0} {1}",
1726 e.Message, e.StackTrace);
1727 }
1728 }
1055 } 1729 }
1730
1056 return 6; 1731 return 6;
1057 } 1732 }
1058 1733
1059 public void TriggerOarFileLoaded(Guid requestId, string message) 1734 public void TriggerOarFileLoaded(Guid requestId, string message)
1060 { 1735 {
1061 handlerOarFileLoaded = OnOarFileLoaded; 1736 OarFileLoaded handlerOarFileLoaded = OnOarFileLoaded;
1062 if (handlerOarFileLoaded != null) 1737 if (handlerOarFileLoaded != null)
1063 handlerOarFileLoaded(requestId, message); 1738 {
1739 foreach (OarFileLoaded d in handlerOarFileLoaded.GetInvocationList())
1740 {
1741 try
1742 {
1743 d(requestId, message);
1744 }
1745 catch (Exception e)
1746 {
1747 m_log.ErrorFormat(
1748 "[EVENT MANAGER]: Delegate for TriggerOarFileLoaded failed - continuing. {0} {1}",
1749 e.Message, e.StackTrace);
1750 }
1751 }
1752 }
1064 } 1753 }
1065 1754
1066 public void TriggerOarFileSaved(Guid requestId, string message) 1755 public void TriggerOarFileSaved(Guid requestId, string message)
1067 { 1756 {
1068 handlerOarFileSaved = OnOarFileSaved; 1757 OarFileSaved handlerOarFileSaved = OnOarFileSaved;
1069 if (handlerOarFileSaved != null) 1758 if (handlerOarFileSaved != null)
1070 handlerOarFileSaved(requestId, message); 1759 {
1760 foreach (OarFileSaved d in handlerOarFileSaved.GetInvocationList())
1761 {
1762 try
1763 {
1764 d(requestId, message);
1765 }
1766 catch (Exception e)
1767 {
1768 m_log.ErrorFormat(
1769 "[EVENT MANAGER]: Delegate for TriggerOarFileSaved failed - continuing. {0} {1}",
1770 e.Message, e.StackTrace);
1771 }
1772 }
1773 }
1071 } 1774 }
1072 1775
1073 public void TriggerEmptyScriptCompileQueue(int numScriptsFailed, string message) 1776 public void TriggerEmptyScriptCompileQueue(int numScriptsFailed, string message)
1074 { 1777 {
1075 handlerEmptyScriptCompileQueue = OnEmptyScriptCompileQueue; 1778 EmptyScriptCompileQueue handlerEmptyScriptCompileQueue = OnEmptyScriptCompileQueue;
1076 if (handlerEmptyScriptCompileQueue != null) 1779 if (handlerEmptyScriptCompileQueue != null)
1077 handlerEmptyScriptCompileQueue(numScriptsFailed, message); 1780 {
1781 foreach (EmptyScriptCompileQueue d in handlerEmptyScriptCompileQueue.GetInvocationList())
1782 {
1783 try
1784 {
1785 d(numScriptsFailed, message);
1786 }
1787 catch (Exception e)
1788 {
1789 m_log.ErrorFormat(
1790 "[EVENT MANAGER]: Delegate for TriggerEmptyScriptCompileQueue failed - continuing. {0} {1}",
1791 e.Message, e.StackTrace);
1792 }
1793 }
1794 }
1078 } 1795 }
1079 1796
1080 public void TriggerScriptCollidingStart(uint localId, ColliderArgs colliders) 1797 public void TriggerScriptCollidingStart(uint localId, ColliderArgs colliders)
1081 { 1798 {
1082 handlerCollidingStart = OnScriptColliderStart; 1799 ScriptColliding handlerCollidingStart = OnScriptColliderStart;
1083 if (handlerCollidingStart != null) 1800 if (handlerCollidingStart != null)
1084 handlerCollidingStart(localId, colliders); 1801 {
1802 foreach (ScriptColliding d in handlerCollidingStart.GetInvocationList())
1803 {
1804 try
1805 {
1806 d(localId, colliders);
1807 }
1808 catch (Exception e)
1809 {
1810 m_log.ErrorFormat(
1811 "[EVENT MANAGER]: Delegate for TriggerScriptCollidingStart failed - continuing. {0} {1}",
1812 e.Message, e.StackTrace);
1813 }
1814 }
1815 }
1085 } 1816 }
1086 1817
1087 public void TriggerScriptColliding(uint localId, ColliderArgs colliders) 1818 public void TriggerScriptColliding(uint localId, ColliderArgs colliders)
1088 { 1819 {
1089 handlerColliding = OnScriptColliding; 1820 ScriptColliding handlerColliding = OnScriptColliding;
1090 if (handlerColliding != null) 1821 if (handlerColliding != null)
1091 handlerColliding(localId, colliders); 1822 {
1823 foreach (ScriptColliding d in handlerColliding.GetInvocationList())
1824 {
1825 try
1826 {
1827 d(localId, colliders);
1828 }
1829 catch (Exception e)
1830 {
1831 m_log.ErrorFormat(
1832 "[EVENT MANAGER]: Delegate for TriggerScriptColliding failed - continuing. {0} {1}",
1833 e.Message, e.StackTrace);
1834 }
1835 }
1836 }
1092 } 1837 }
1093 1838
1094 public void TriggerScriptCollidingEnd(uint localId, ColliderArgs colliders) 1839 public void TriggerScriptCollidingEnd(uint localId, ColliderArgs colliders)
1095 { 1840 {
1096 handlerCollidingEnd = OnScriptCollidingEnd; 1841 ScriptColliding handlerCollidingEnd = OnScriptCollidingEnd;
1097 if (handlerCollidingEnd != null) 1842 if (handlerCollidingEnd != null)
1098 handlerCollidingEnd(localId, colliders); 1843 {
1844 foreach (ScriptColliding d in handlerCollidingEnd.GetInvocationList())
1845 {
1846 try
1847 {
1848 d(localId, colliders);
1849 }
1850 catch (Exception e)
1851 {
1852 m_log.ErrorFormat(
1853 "[EVENT MANAGER]: Delegate for TriggerScriptCollidingEnd failed - continuing. {0} {1}",
1854 e.Message, e.StackTrace);
1855 }
1856 }
1857 }
1099 } 1858 }
1100 1859
1101 public void TriggerScriptLandCollidingStart(uint localId, ColliderArgs colliders) 1860 public void TriggerScriptLandCollidingStart(uint localId, ColliderArgs colliders)
1102 { 1861 {
1103 handlerLandCollidingStart = OnScriptLandColliderStart; 1862 ScriptColliding handlerLandCollidingStart = OnScriptLandColliderStart;
1104 if (handlerLandCollidingStart != null) 1863 if (handlerLandCollidingStart != null)
1105 handlerLandCollidingStart(localId, colliders); 1864 {
1865 foreach (ScriptColliding d in handlerLandCollidingStart.GetInvocationList())
1866 {
1867 try
1868 {
1869 d(localId, colliders);
1870 }
1871 catch (Exception e)
1872 {
1873 m_log.ErrorFormat(
1874 "[EVENT MANAGER]: Delegate for TriggerScriptLandCollidingStart failed - continuing. {0} {1}",
1875 e.Message, e.StackTrace);
1876 }
1877 }
1878 }
1106 } 1879 }
1107 1880
1108 public void TriggerScriptLandColliding(uint localId, ColliderArgs colliders) 1881 public void TriggerScriptLandColliding(uint localId, ColliderArgs colliders)
1109 { 1882 {
1110 handlerLandColliding = OnScriptLandColliding; 1883 ScriptColliding handlerLandColliding = OnScriptLandColliding;
1111 if (handlerLandColliding != null) 1884 if (handlerLandColliding != null)
1112 handlerLandColliding(localId, colliders); 1885 {
1886 foreach (ScriptColliding d in handlerLandColliding.GetInvocationList())
1887 {
1888 try
1889 {
1890 d(localId, colliders);
1891 }
1892 catch (Exception e)
1893 {
1894 m_log.ErrorFormat(
1895 "[EVENT MANAGER]: Delegate for TriggerScriptLandColliding failed - continuing. {0} {1}",
1896 e.Message, e.StackTrace);
1897 }
1898 }
1899 }
1113 } 1900 }
1114 1901
1115 public void TriggerScriptLandCollidingEnd(uint localId, ColliderArgs colliders) 1902 public void TriggerScriptLandCollidingEnd(uint localId, ColliderArgs colliders)
1116 { 1903 {
1117 handlerLandCollidingEnd = OnScriptLandColliderEnd; 1904 ScriptColliding handlerLandCollidingEnd = OnScriptLandColliderEnd;
1118 if (handlerLandCollidingEnd != null) 1905 if (handlerLandCollidingEnd != null)
1119 handlerLandCollidingEnd(localId, colliders); 1906 {
1907 foreach (ScriptColliding d in handlerLandCollidingEnd.GetInvocationList())
1908 {
1909 try
1910 {
1911 d(localId, colliders);
1912 }
1913 catch (Exception e)
1914 {
1915 m_log.ErrorFormat(
1916 "[EVENT MANAGER]: Delegate for TriggerScriptLandCollidingEnd failed - continuing. {0} {1}",
1917 e.Message, e.StackTrace);
1918 }
1919 }
1920 }
1120 } 1921 }
1121 1922
1122 public void TriggerSetRootAgentScene(UUID agentID, Scene scene) 1923 public void TriggerSetRootAgentScene(UUID agentID, Scene scene)
1123 { 1924 {
1124 handlerSetRootAgentScene = OnSetRootAgentScene; 1925 OnSetRootAgentSceneDelegate handlerSetRootAgentScene = OnSetRootAgentScene;
1125 if (handlerSetRootAgentScene != null) 1926 if (handlerSetRootAgentScene != null)
1126 handlerSetRootAgentScene(agentID, scene); 1927 {
1928 foreach (OnSetRootAgentSceneDelegate d in handlerSetRootAgentScene.GetInvocationList())
1929 {
1930 try
1931 {
1932 d(agentID, scene);
1933 }
1934 catch (Exception e)
1935 {
1936 m_log.ErrorFormat(
1937 "[EVENT MANAGER]: Delegate for TriggerSetRootAgentScene failed - continuing. {0} {1}",
1938 e.Message, e.StackTrace);
1939 }
1940 }
1941 }
1127 } 1942 }
1128 1943
1129 public void TriggerOnRegionUp(GridRegion otherRegion) 1944 public void TriggerOnRegionUp(GridRegion otherRegion)
1130 { 1945 {
1131 handlerOnRegionUp = OnRegionUp; 1946 RegionUp handlerOnRegionUp = OnRegionUp;
1132 if (handlerOnRegionUp != null) 1947 if (handlerOnRegionUp != null)
1133 handlerOnRegionUp(otherRegion); 1948 {
1949 foreach (RegionUp d in handlerOnRegionUp.GetInvocationList())
1950 {
1951 try
1952 {
1953 d(otherRegion);
1954 }
1955 catch (Exception e)
1956 {
1957 m_log.ErrorFormat(
1958 "[EVENT MANAGER]: Delegate for TriggerOnRegionUp failed - continuing. {0} {1}",
1959 e.Message, e.StackTrace);
1960 }
1961 }
1962 }
1134 } 1963 }
1135
1136 } 1964 }
1137} 1965}
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
index 6a3c386..545183b 100644
--- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
@@ -699,42 +699,42 @@ namespace OpenSim.Region.Framework.Scenes
699 { 699 {
700 m_log.DebugFormat( 700 m_log.DebugFormat(
701 "[SCENE COMMUNICATION SERVICE]: RequestTeleportToLocation {0} within {1}", 701 "[SCENE COMMUNICATION SERVICE]: RequestTeleportToLocation {0} within {1}",
702 position, m_regionInfo.RegionName); 702 position, m_regionInfo.RegionName);
703 703
704 // Teleport within the same region 704 // Teleport within the same region
705 if (IsOutsideRegion(avatar.Scene, position) || position.Z < 0) 705 if (IsOutsideRegion(avatar.Scene, position) || position.Z < 0)
706 { 706 {
707 Vector3 emergencyPos = new Vector3(128, 128, 128); 707 Vector3 emergencyPos = new Vector3(128, 128, 128);
708 708
709 m_log.WarnFormat( 709 m_log.WarnFormat(
710 "[SCENE COMMUNICATION SERVICE]: RequestTeleportToLocation() was given an illegal position of {0} for avatar {1}, {2}. Substituting {3}", 710 "[SCENE COMMUNICATION SERVICE]: RequestTeleportToLocation() was given an illegal position of {0} for avatar {1}, {2}. Substituting {3}",
711 position, avatar.Name, avatar.UUID, emergencyPos); 711 position, avatar.Name, avatar.UUID, emergencyPos);
712 position = emergencyPos; 712 position = emergencyPos;
713 } 713 }
714 714
715 Vector3 currentPos = avatar.AbsolutePosition; 715 Vector3 currentPos = avatar.AbsolutePosition;
716 ILandObject srcLand = m_scene.LandChannel.GetLandObject(currentPos.X, currentPos.Y); 716 ILandObject srcLand = m_scene.LandChannel.GetLandObject(currentPos.X, currentPos.Y);
717 ILandObject destLand = m_scene.LandChannel.GetLandObject(position.X, position.Y); 717 ILandObject destLand = m_scene.LandChannel.GetLandObject(position.X, position.Y);
718 if (srcLand != null && destLand != null && (teleportFlags & (uint)TeleportFlags.ViaLure) == 0 && (teleportFlags & (uint)TeleportFlags.ViaGodlikeLure) == 0) 718 if (srcLand != null && destLand != null && (teleportFlags & (uint)TeleportFlags.ViaLure) == 0 && (teleportFlags & (uint)TeleportFlags.ViaGodlikeLure) == 0)
719 { 719 {
720 if (srcLand.LandData.LocalID == destLand.LandData.LocalID) 720 if (srcLand.LandData.LocalID == destLand.LandData.LocalID)
721 { 721 {
722 //TPing within the same parcel. If the landing point is restricted, block the TP. 722 //TPing within the same parcel. If the landing point is restricted, block the TP.
723 //Don't restrict gods, estate managers, or land owners to the TP point. This behaviour mimics agni. 723 //Don't restrict gods, estate managers, or land owners to the TP point. This behaviour mimics agni.
724 if (destLand.LandData.LandingType == (byte)1 && destLand.LandData.UserLocation != Vector3.Zero && avatar.GodLevel < 200 && !m_scene.RegionInfo.EstateSettings.IsEstateManager(avatar.UUID) && destLand.LandData.OwnerID != avatar.UUID) 724 if (destLand.LandData.LandingType == (byte)1 && destLand.LandData.UserLocation != Vector3.Zero && avatar.GodLevel < 200 && !m_scene.RegionInfo.EstateSettings.IsEstateManager(avatar.UUID) && destLand.LandData.OwnerID != avatar.UUID)
725 { 725 {
726 avatar.ControllingClient.SendAgentAlertMessage("Can't TP to the destination; landing point set.", false); 726 avatar.ControllingClient.SendAgentAlertMessage("Can't TP to the destination; landing point set.", false);
727 position = currentPos; 727 position = currentPos;
728 } 728 }
729 } 729 }
730 else 730 else
731 { 731 {
732 //Tping to a different parcel. Respect the landing point on the destination parcel. 732 //Tping to a different parcel. Respect the landing point on the destination parcel.
733 if (destLand.LandData.LandingType == (byte)1 && destLand.LandData.UserLocation != Vector3.Zero && avatar.GodLevel < 200 && !m_scene.RegionInfo.EstateSettings.IsEstateManager(avatar.UUID) && destLand.LandData.OwnerID != avatar.UUID) 733 if (destLand.LandData.LandingType == (byte)1 && destLand.LandData.UserLocation != Vector3.Zero && avatar.GodLevel < 200 && !m_scene.RegionInfo.EstateSettings.IsEstateManager(avatar.UUID) && destLand.LandData.OwnerID != avatar.UUID)
734 { 734 {
735 position = destLand.LandData.UserLocation; 735 position = destLand.LandData.UserLocation;
736 } 736 }
737 } 737 }
738 } 738 }
739 739
740 // TODO: Get proper AVG Height 740 // TODO: Get proper AVG Height
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index fe1e218..72604d8 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -113,6 +113,15 @@ namespace OpenSim.Region.Framework.Scenes
113 113
114 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 114 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
115 115
116 /// <value>
117 /// Is this sop a root part?
118 /// </value>
119 [XmlIgnore]
120 public bool IsRoot
121 {
122 get { return ParentGroup.RootPart == this; }
123 }
124
116 // use only one serializer to give the runtime a chance to optimize it (it won't do that if you 125 // use only one serializer to give the runtime a chance to optimize it (it won't do that if you
117 // use a new instance every time) 126 // use a new instance every time)
118 private static XmlSerializer serializer = new XmlSerializer(typeof (SceneObjectPart)); 127 private static XmlSerializer serializer = new XmlSerializer(typeof (SceneObjectPart));
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 27df3b2..f1555f7 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2979,11 +2979,10 @@ namespace OpenSim.Region.Framework.Scenes
2979 { 2979 {
2980 m_scene.CrossAgentToNewRegion(this, m_physicsActor.Flying); 2980 m_scene.CrossAgentToNewRegion(this, m_physicsActor.Flying);
2981 } 2981 }
2982 catch(Exception ex) 2982 catch
2983 { 2983 {
2984 m_scene.CrossAgentToNewRegion(this, false); 2984 m_scene.CrossAgentToNewRegion(this, false);
2985 } 2985 }
2986
2987 } 2986 }
2988 2987
2989 public void InTransit() 2988 public void InTransit()
@@ -3061,7 +3060,6 @@ namespace OpenSim.Region.Framework.Scenes
3061 { 3060 {
3062 RemoveNeighbourRegion(handle); 3061 RemoveNeighbourRegion(handle);
3063 } 3062 }
3064
3065 } 3063 }
3066 3064
3067 #endregion 3065 #endregion
@@ -3222,7 +3220,7 @@ namespace OpenSim.Region.Framework.Scenes
3222 List<int> attPoints = m_appearance.GetAttachedPoints(); 3220 List<int> attPoints = m_appearance.GetAttachedPoints();
3223 if (attPoints != null) 3221 if (attPoints != null)
3224 { 3222 {
3225 m_log.DebugFormat("[SCENE PRESENCE]: attachments {0}", attPoints.Count); 3223 //m_log.DebugFormat("[SCENE PRESENCE]: attachments {0}", attPoints.Count);
3226 int i = 0; 3224 int i = 0;
3227 AttachmentData[] attachs = new AttachmentData[attPoints.Count]; 3225 AttachmentData[] attachs = new AttachmentData[attPoints.Count];
3228 foreach (int point in attPoints) 3226 foreach (int point in attPoints)
@@ -3494,9 +3492,7 @@ namespace OpenSim.Region.Framework.Scenes
3494 } 3492 }
3495 if (m_health <= 0) 3493 if (m_health <= 0)
3496 m_scene.EventManager.TriggerAvatarKill(killerObj, this); 3494 m_scene.EventManager.TriggerAvatarKill(killerObj, this);
3497 } 3495 }
3498
3499
3500 } 3496 }
3501 3497
3502 public void setHealthWithUpdate(float health) 3498 public void setHealthWithUpdate(float health)