mirror of
https://github.com/opensim/opensim.git
synced 2026-08-11 03:45:35 +08:00
Change the scirpt engine loading mechanism. Script engines are now
ordinary region modules and are able to coexist in one instance. See http://opensimulator.org/wiki/ScriptEngines for details. There were changes to OpenSim.ini.example, please note DefaultScriptEngine. Also see the User docs and FAQ on the Wiki. Default is DotNetEngine.
This commit is contained in:
@@ -95,7 +95,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
|
||||
public event OnPermissionErrorDelegate OnPermissionError;
|
||||
|
||||
public delegate void NewRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez);
|
||||
public delegate void NewRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine);
|
||||
|
||||
public event NewRezScript OnRezScript;
|
||||
|
||||
@@ -519,12 +519,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
}
|
||||
}
|
||||
|
||||
public void TriggerRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez)
|
||||
public void TriggerRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine)
|
||||
{
|
||||
handlerRezScript = OnRezScript;
|
||||
if (handlerRezScript != null)
|
||||
{
|
||||
handlerRezScript(localID, itemID, script, startParam, postOnRez);
|
||||
handlerRezScript(localID, itemID, script, startParam,
|
||||
postOnRez, engine);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1604,7 +1604,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
copy.UpdateGroupRotation(rot);
|
||||
}
|
||||
|
||||
copy.CreateScriptInstances(0, false);
|
||||
copy.CreateScriptInstances(0, false, "");
|
||||
copy.HasGroupChanged = true;
|
||||
copy.ScheduleGroupForFullUpdate();
|
||||
return copy;
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
{
|
||||
if (group is SceneObjectGroup)
|
||||
{
|
||||
((SceneObjectGroup) group).CreateScriptInstances(0, false);
|
||||
((SceneObjectGroup) group).CreateScriptInstances(0, false, DefaultScriptEngine);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -269,7 +269,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
// Trigger rerunning of script (use TriggerRezScript event, see RezScript)
|
||||
if (isScriptRunning)
|
||||
{
|
||||
part.CreateScriptInstance(item.ItemID, 0, false);
|
||||
// Needs to determine which engine was running it and use that
|
||||
//
|
||||
part.CreateScriptInstance(item.ItemID, 0, false, DefaultScriptEngine);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1289,7 +1291,7 @@ System.Console.WriteLine("Item asset {0}, request asset {1}", prevItem.AssetID.T
|
||||
|
||||
part.ParentGroup.AddInventoryItem(remoteClient, localID, item, copyID);
|
||||
// TODO: set this to "true" when scripts in inventory have persistent state to fire on_rez
|
||||
part.CreateScriptInstance(copyID, 0, false);
|
||||
part.CreateScriptInstance(copyID, 0, false, DefaultScriptEngine);
|
||||
|
||||
// m_log.InfoFormat("[PRIMINVENTORY]: " +
|
||||
// "Rezzed script {0} into prim local ID {1} for user {2}",
|
||||
@@ -1353,7 +1355,7 @@ System.Console.WriteLine("Item asset {0}, request asset {1}", prevItem.AssetID.T
|
||||
part.AddInventoryItem(taskItem);
|
||||
part.GetProperties(remoteClient);
|
||||
|
||||
part.CreateScriptInstance(taskItem, 0, false);
|
||||
part.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1449,7 +1451,7 @@ System.Console.WriteLine("Item asset {0}, request asset {1}", prevItem.AssetID.T
|
||||
|
||||
if (running > 0)
|
||||
{
|
||||
destPart.CreateScriptInstance(destTaskItem, 0, false);
|
||||
destPart.CreateScriptInstance(destTaskItem, 0, false, DefaultScriptEngine);
|
||||
}
|
||||
|
||||
ScenePresence avatar;
|
||||
@@ -2037,7 +2039,7 @@ System.Console.WriteLine("Item asset {0}, request asset {1}", prevItem.AssetID.T
|
||||
}
|
||||
|
||||
// TODO: make this true to fire on_rez when scripts have state while in inventory
|
||||
group.CreateScriptInstances(0, false);
|
||||
group.CreateScriptInstances(0, false, DefaultScriptEngine);
|
||||
|
||||
if (!attachment)
|
||||
rootPart.ScheduleFullUpdate();
|
||||
@@ -2141,7 +2143,7 @@ System.Console.WriteLine("Item asset {0}, request asset {1}", prevItem.AssetID.T
|
||||
group.UpdateGroupRotation(rot);
|
||||
//group.ApplyPhysics(m_physicalPrim);
|
||||
group.Velocity = vel;
|
||||
group.CreateScriptInstances(param, true);
|
||||
group.CreateScriptInstances(param, true, DefaultScriptEngine);
|
||||
rootPart.ScheduleFullUpdate();
|
||||
|
||||
if (!ExternalChecks.ExternalChecksBypassPermissions())
|
||||
|
||||
@@ -166,6 +166,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
|
||||
private bool m_physics_enabled = true;
|
||||
private bool m_scripts_enabled = true;
|
||||
private string m_defaultScriptEngine;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -199,6 +200,11 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
get { return m_timePhase; }
|
||||
}
|
||||
|
||||
public string DefaultScriptEngine
|
||||
{
|
||||
get { return m_defaultScriptEngine; }
|
||||
}
|
||||
|
||||
// Local reference to the objects in the scene (which are held in innerScene)
|
||||
// public Dictionary<UUID, SceneObjectGroup> Objects
|
||||
// {
|
||||
@@ -314,6 +320,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
IConfig startupConfig = m_config.Configs["Startup"];
|
||||
m_maxNonphys = startupConfig.GetFloat("NonPhysicalPrimMax", 65536.0f);
|
||||
m_maxPhys = startupConfig.GetFloat("PhysicalPrimMax", 10.0f);
|
||||
|
||||
m_defaultScriptEngine = startupConfig.GetString("DefaultScriptEngine", "DotNetEngine");
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
@@ -574,7 +582,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
{
|
||||
if (ent is SceneObjectGroup)
|
||||
{
|
||||
((SceneObjectGroup)ent).CreateScriptInstances(0, false);
|
||||
((SceneObjectGroup)ent).CreateScriptInstances(0, false, "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,14 +55,15 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
/// <summary>
|
||||
/// Start the scripts contained in all the prims in this group.
|
||||
/// </summary>
|
||||
public void CreateScriptInstances(int startParam, bool postOnRez)
|
||||
public void CreateScriptInstances(int startParam, bool postOnRez,
|
||||
string engine)
|
||||
{
|
||||
// Don't start scripts if they're turned off in the region!
|
||||
if (!m_scene.RegionInfo.RegionSettings.DisableScripts)
|
||||
{
|
||||
foreach (SceneObjectPart part in m_parts.Values)
|
||||
{
|
||||
part.CreateScriptInstances(startParam, postOnRez);
|
||||
part.CreateScriptInstances(startParam, postOnRez, engine);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
/// <summary>
|
||||
/// Start all the scripts contained in this prim's inventory
|
||||
/// </summary>
|
||||
public void CreateScriptInstances(int startParam, bool postOnRez)
|
||||
public void CreateScriptInstances(int startParam, bool postOnRez, string engine)
|
||||
{
|
||||
lock (m_taskInventory)
|
||||
{
|
||||
@@ -133,7 +133,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
{
|
||||
if ((int)InventoryType.LSL == item.InvType)
|
||||
{
|
||||
CreateScriptInstance(item, startParam, postOnRez);
|
||||
CreateScriptInstance(item, startParam, postOnRez, engine);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -162,7 +162,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns></returns>
|
||||
public void CreateScriptInstance(TaskInventoryItem item, int startParam, bool postOnRez)
|
||||
public void CreateScriptInstance(TaskInventoryItem item, int startParam, bool postOnRez, string engine)
|
||||
{
|
||||
// m_log.InfoFormat(
|
||||
// "[PRIM INVENTORY]: " +
|
||||
@@ -193,7 +193,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
m_taskInventory[item.ItemID].PermsGranter = UUID.Zero;
|
||||
string script = Utils.BytesToString(asset.Data);
|
||||
m_parentGroup.Scene.EventManager.TriggerRezScript(LocalId, item.ItemID, script,
|
||||
startParam, postOnRez);
|
||||
startParam, postOnRez, engine);
|
||||
m_parentGroup.AddActiveScriptCount(1);
|
||||
ScheduleFullUpdate();
|
||||
}
|
||||
@@ -207,13 +207,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
/// <param name="itemId">
|
||||
/// A <see cref="UUID"/>
|
||||
/// </param>
|
||||
public void CreateScriptInstance(UUID itemId, int startParam, bool postOnRez)
|
||||
public void CreateScriptInstance(UUID itemId, int startParam, bool postOnRez, string engine)
|
||||
{
|
||||
lock (m_taskInventory)
|
||||
{
|
||||
if (m_taskInventory.ContainsKey(itemId))
|
||||
{
|
||||
CreateScriptInstance(m_taskInventory[itemId], startParam, postOnRez);
|
||||
CreateScriptInstance(m_taskInventory[itemId], startParam, postOnRez, engine);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user