From 055b8a2d58a17d5dbc6cdb7f22077e6268578905 Mon Sep 17 00:00:00 2001
From: dahlia
Date: Mon, 14 Jan 2013 22:24:24 -0800
Subject: move resit fix to ScenePresence.cs and allow for requesting sit on
objects other than the object currently sat on
---
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 4 ++++
1 file changed, 4 insertions(+)
(limited to 'OpenSim/Region/Framework/Scenes')
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 0219540..6979c33 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1954,6 +1954,10 @@ namespace OpenSim.Region.Framework.Scenes
{
if (ParentID != 0)
{
+ var targetPart = m_scene.GetSceneObjectPart(targetID);
+ if (targetPart != null && targetPart.LocalId == ParentID)
+ return; // already sitting here, ignore
+
StandUp();
}
--
cgit v1.1
From 1b5c41c14ad11325be249ea1cce3c65d4d6a89be Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 16 Jan 2013 00:12:40 +0000
Subject: Implement co-operative script termination if termination comes during
a script wait event (llSleep(), etc.)
This makes use of EventWaitHandles since various web references indicate that Thread.Interrupt() can also cause runtime instability.
If co-op termination is enabled, then termination sets the wait handle instead of waiting for a timeout before possibly aborting the thread.
This allows the script to cleanly terminate if it's in a llSleep/LL function delay or the next time it enters such a wait without any timeout period.
Co-op termination is not yet testable since checking for termination request within loops that never trigger a wait is not yet implemented.
---
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 26 +++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes')
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 5c8b097..92bf85a 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1738,6 +1738,21 @@ namespace OpenSim.Region.Framework.Scenes
/// The part where the script was rezzed if successful. False otherwise.
public SceneObjectPart RezNewScript(UUID agentID, InventoryItemBase itemBase)
{
+ return RezNewScript(
+ agentID,
+ itemBase,
+ "default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}");
+ }
+
+ ///
+ /// Rez a new script from nothing with given script text.
+ ///
+ ///
+ /// Template item.
+ ///
+ /// The part where the script was rezzed if successful. False otherwise.
+ public SceneObjectPart RezNewScript(UUID agentID, InventoryItemBase itemBase, string scriptText)
+ {
// The part ID is the folder ID!
SceneObjectPart part = GetSceneObjectPart(itemBase.Folder);
if (part == null)
@@ -1757,9 +1772,14 @@ namespace OpenSim.Region.Framework.Scenes
return null;
}
- AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType,
- Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}"),
- agentID);
+ AssetBase asset
+ = CreateAsset(
+ itemBase.Name,
+ itemBase.Description,
+ (sbyte)itemBase.AssetType,
+ Encoding.ASCII.GetBytes(scriptText),
+ agentID);
+
AssetService.Store(asset);
TaskInventoryItem taskItem = new TaskInventoryItem();
--
cgit v1.1
From b8949024bc55c62b9268b35d4f2a568760b9d7d3 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 16 Jan 2013 01:45:09 +0000
Subject: Revert "Implement co-operative script termination if termination
comes during a script wait event (llSleep(), etc.)"
Doing this as a favour to Melanie. This will be back with passing the wait handles directly to the api.
This reverts commit 1b5c41c14ad11325be249ea1cce3c65d4d6a89be.
---
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 26 +++-------------------
1 file changed, 3 insertions(+), 23 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes')
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 92bf85a..5c8b097 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1738,21 +1738,6 @@ namespace OpenSim.Region.Framework.Scenes
/// The part where the script was rezzed if successful. False otherwise.
public SceneObjectPart RezNewScript(UUID agentID, InventoryItemBase itemBase)
{
- return RezNewScript(
- agentID,
- itemBase,
- "default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}");
- }
-
- ///
- /// Rez a new script from nothing with given script text.
- ///
- ///
- /// Template item.
- ///
- /// The part where the script was rezzed if successful. False otherwise.
- public SceneObjectPart RezNewScript(UUID agentID, InventoryItemBase itemBase, string scriptText)
- {
// The part ID is the folder ID!
SceneObjectPart part = GetSceneObjectPart(itemBase.Folder);
if (part == null)
@@ -1772,14 +1757,9 @@ namespace OpenSim.Region.Framework.Scenes
return null;
}
- AssetBase asset
- = CreateAsset(
- itemBase.Name,
- itemBase.Description,
- (sbyte)itemBase.AssetType,
- Encoding.ASCII.GetBytes(scriptText),
- agentID);
-
+ AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType,
+ Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}"),
+ agentID);
AssetService.Store(asset);
TaskInventoryItem taskItem = new TaskInventoryItem();
--
cgit v1.1
From 0963ece25bdef16852f5fd8ae4515a2f05d8b6e4 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 16 Jan 2013 02:07:43 +0000
Subject: Implement co-operative script termination if termination comes during
a script wait event (llSleep(), etc.)
This makes use of EventWaitHandles since various web references indicate that Thread.Interrupt() can also cause runtime instability.
If co-op termination is enabled, then termination sets the wait handle instead of waiting for a timeout before possibly aborting the thread.
This allows the script to cleanly terminate if it's in a llSleep/LL function delay or the next time it enters such a wait without any timeout period.
Co-op termination is not yet testable since checking for termination request within loops that never trigger a wait is not yet implemented.
This commit, unlike 1b5c41c, passes the wait handle as an extra parameter through IScript.Initialize() instead of passing IScriptInstance itself.
---
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 26 +++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes')
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 5c8b097..92bf85a 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1738,6 +1738,21 @@ namespace OpenSim.Region.Framework.Scenes
/// The part where the script was rezzed if successful. False otherwise.
public SceneObjectPart RezNewScript(UUID agentID, InventoryItemBase itemBase)
{
+ return RezNewScript(
+ agentID,
+ itemBase,
+ "default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}");
+ }
+
+ ///
+ /// Rez a new script from nothing with given script text.
+ ///
+ ///
+ /// Template item.
+ ///
+ /// The part where the script was rezzed if successful. False otherwise.
+ public SceneObjectPart RezNewScript(UUID agentID, InventoryItemBase itemBase, string scriptText)
+ {
// The part ID is the folder ID!
SceneObjectPart part = GetSceneObjectPart(itemBase.Folder);
if (part == null)
@@ -1757,9 +1772,14 @@ namespace OpenSim.Region.Framework.Scenes
return null;
}
- AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType,
- Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}"),
- agentID);
+ AssetBase asset
+ = CreateAsset(
+ itemBase.Name,
+ itemBase.Description,
+ (sbyte)itemBase.AssetType,
+ Encoding.ASCII.GetBytes(scriptText),
+ agentID);
+
AssetService.Store(asset);
TaskInventoryItem taskItem = new TaskInventoryItem();
--
cgit v1.1