Add new and updated script events
							parent
							
								
									0e16e0fb6a
								
							
						
					
					
						commit
						6baa13ab7a
					
				| 
						 | 
				
			
			@ -184,10 +184,62 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
 | 
			
		||||
        public event ClientClosed OnClientClosed;
 | 
			
		||||
 | 
			
		||||
        // Fired when a script is created
 | 
			
		||||
        // The indication that a new script exists in this region.
 | 
			
		||||
        public delegate void NewScript(UUID clientID, SceneObjectPart part, UUID itemID);
 | 
			
		||||
        public event NewScript OnNewScript;
 | 
			
		||||
        public virtual void TriggerNewScript(UUID clientID, SceneObjectPart part, UUID itemID)
 | 
			
		||||
        {
 | 
			
		||||
            NewScript handlerNewScript = OnNewScript;
 | 
			
		||||
            if (handlerNewScript != null)
 | 
			
		||||
            {
 | 
			
		||||
                foreach (NewScript d in handlerNewScript.GetInvocationList())
 | 
			
		||||
                {
 | 
			
		||||
                    try
 | 
			
		||||
                    {
 | 
			
		||||
                        d(clientID, part, itemID);
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (Exception e)
 | 
			
		||||
                    {
 | 
			
		||||
                        m_log.ErrorFormat(
 | 
			
		||||
                            "[EVENT MANAGER]: Delegate for TriggerNewScript failed - continuing.  {0} {1}",
 | 
			
		||||
                            e.Message, e.StackTrace);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //TriggerUpdateScript: triggered after Scene receives client's upload of updated script and stores it as asset
 | 
			
		||||
        // An indication that the script has changed.
 | 
			
		||||
        public delegate void UpdateScript(UUID clientID, UUID itemId, UUID primId, bool isScriptRunning, UUID newAssetID);
 | 
			
		||||
        public event UpdateScript OnUpdateScript;
 | 
			
		||||
        public virtual void TriggerUpdateScript(UUID clientId, UUID itemId, UUID primId, bool isScriptRunning, UUID newAssetID)
 | 
			
		||||
        {
 | 
			
		||||
            UpdateScript handlerUpdateScript = OnUpdateScript;
 | 
			
		||||
            if (handlerUpdateScript != null)
 | 
			
		||||
            {
 | 
			
		||||
                foreach (UpdateScript d in handlerUpdateScript.GetInvocationList())
 | 
			
		||||
                {
 | 
			
		||||
                    try
 | 
			
		||||
                    {
 | 
			
		||||
                        d(clientId, itemId, primId, isScriptRunning, newAssetID);
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (Exception e)
 | 
			
		||||
                    {
 | 
			
		||||
                        m_log.ErrorFormat(
 | 
			
		||||
                            "[EVENT MANAGER]: Delegate for TriggerUpdateScript failed - continuing.  {0} {1}",
 | 
			
		||||
                            e.Message, e.StackTrace);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// This is fired when a scene object property that a script might be interested in (such as color, scale or
 | 
			
		||||
        /// inventory) changes.  Only enough information is sent for the LSL changed event
 | 
			
		||||
        /// (see http://lslwiki.net/lslwiki/wakka.php?wakka=changed)
 | 
			
		||||
        /// ScriptChangedEvent is fired when a scene object property that a script might be interested 
 | 
			
		||||
        /// in (such as color, scale or inventory) changes.  Only enough information sent is for the LSL changed event.
 | 
			
		||||
        /// This is not an indication that the script has changed (see OnUpdateScript for that). 
 | 
			
		||||
        /// This event is sent to a script to tell it that some property changed on 
 | 
			
		||||
        /// the object the script is in. See http://lslwiki.net/lslwiki/wakka.php?wakka=changed .
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public event ScriptChangedEvent OnScriptChangedEvent;
 | 
			
		||||
        public delegate void ScriptChangedEvent(uint localID, uint change);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -283,6 +283,10 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            {
 | 
			
		||||
                remoteClient.SendAgentAlertMessage("Script saved", false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Tell anyone managing scripts that a script has been reloaded/changed
 | 
			
		||||
            EventManager.TriggerUpdateScript(remoteClient.AgentId, itemId, primId, isScriptRunning, item.AssetID);
 | 
			
		||||
 | 
			
		||||
            part.ParentGroup.ResumeScripts();
 | 
			
		||||
            return errors;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1624,9 +1628,13 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                    // have state in inventory
 | 
			
		||||
                    part.Inventory.CreateScriptInstance(copyID, 0, false, DefaultScriptEngine, 0);
 | 
			
		||||
 | 
			
		||||
                    // tell anyone watching that there is a new script in town
 | 
			
		||||
                    EventManager.TriggerNewScript(agentID, part, copyID);
 | 
			
		||||
 | 
			
		||||
                    //                        m_log.InfoFormat("[PRIMINVENTORY]: " +
 | 
			
		||||
                    //                                         "Rezzed script {0} into prim local ID {1} for user {2}",
 | 
			
		||||
                    //                                         item.inventoryName, localID, remoteClient.Name);
 | 
			
		||||
 | 
			
		||||
                    part.ParentGroup.ResumeScripts();
 | 
			
		||||
 | 
			
		||||
                    return part;
 | 
			
		||||
| 
						 | 
				
			
			@ -1707,6 +1715,10 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
 | 
			
		||||
            part.Inventory.AddInventoryItem(taskItem, false);
 | 
			
		||||
            part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0);
 | 
			
		||||
 | 
			
		||||
            // tell anyone managing scripts that a new script exists
 | 
			
		||||
            EventManager.TriggerNewScript(agentID, part, taskItem.ItemID);
 | 
			
		||||
 | 
			
		||||
            part.ParentGroup.ResumeScripts();
 | 
			
		||||
 | 
			
		||||
            return part;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue