public void StopScript(UUID itemID) { IScriptInstance instance = GetInstance(itemID); if (instance != null) { instance.Stop(0); } }
public void SetScriptState(UUID itemID, bool running) { IScriptInstance instance = GetInstance(itemID); if (instance != null) { if (running) { instance.Start(); } else { instance.Stop(100); } } }
private void HandleStopScript(IScriptInstance instance) { if (instance.Running) { instance.Stop(0); SceneObjectPart sop = m_Scene.GetSceneObjectPart(instance.ObjectID); MainConsole.Instance.OutputFormat( "Stopped {0}.{1}, item UUID {2}, prim UUID {3} @ {4}", instance.PrimName, instance.ScriptName, instance.ItemID, instance.ObjectID, sop.AbsolutePosition); } }
public void OnRemoveScript(uint localID, UUID itemID) { lock (m_Scripts) { // Do we even have it? if (!m_Scripts.ContainsKey(itemID)) { return; } IScriptInstance instance = m_Scripts[itemID]; m_Scripts.Remove(itemID); instance.ClearQueue(); instance.Stop(0); SceneObjectPart part = m_Scene.GetSceneObjectPart(localID); if (part != null) { part.RemoveScriptEvents(itemID); } // bool objectRemoved = false; lock (m_PrimObjects) { // Remove the script from it's prim if (m_PrimObjects.ContainsKey(localID)) { // Remove inventory item record if (m_PrimObjects[localID].Contains(itemID)) { m_PrimObjects[localID].Remove(itemID); } // If there are no more scripts, remove prim if (m_PrimObjects[localID].Count == 0) { m_PrimObjects.Remove(localID); // objectRemoved = true; } } } m_DomainScripts[instance.AppDomain].Remove(instance.ItemID); if (m_DomainScripts[instance.AppDomain].Count == 0) { m_DomainScripts.Remove(instance.AppDomain); UnloadAppDomain(instance.AppDomain); } instance.RemoveState(); instance.DestroyScriptInstance(); instance = null; ObjectRemoved handlerObjectRemoved = OnObjectRemoved; if (handlerObjectRemoved != null) { handlerObjectRemoved(part.UUID); } CleanAssemblies(); } ScriptRemoved handlerScriptRemoved = OnScriptRemoved; if (handlerScriptRemoved != null) { handlerScriptRemoved(itemID); } }