Finished removing the old scripting code, Scene.Scripting.cs and OpenSim.Framework.Interfaces.Scripting.
parent
3456d951d8
commit
561db23e5f
|
@ -1,41 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* * Neither the name of the OpenSim Project nor the
|
|
||||||
* names of its contributors may be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace OpenSim.Framework.Interfaces
|
|
||||||
{
|
|
||||||
public interface IScriptEngine
|
|
||||||
{
|
|
||||||
bool Init(IScriptAPI api);
|
|
||||||
string GetName();
|
|
||||||
void LoadScript(string script, string scriptName, uint entityID);
|
|
||||||
void OnFrame();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -148,12 +148,6 @@
|
||||||
<Compile Include="Interfaces\Config\IUserConfig.cs">
|
<Compile Include="Interfaces\Config\IUserConfig.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Interfaces\Scripting\IScriptAPI.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Interfaces\Scripting\IScriptEngine.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs">
|
<Compile Include="Properties\AssemblyInfo.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
|
@ -31,8 +31,6 @@
|
||||||
<include name="Interfaces/Config/IGenericConfig.cs" />
|
<include name="Interfaces/Config/IGenericConfig.cs" />
|
||||||
<include name="Interfaces/Config/IGridConfig.cs" />
|
<include name="Interfaces/Config/IGridConfig.cs" />
|
||||||
<include name="Interfaces/Config/IUserConfig.cs" />
|
<include name="Interfaces/Config/IUserConfig.cs" />
|
||||||
<include name="Interfaces/Scripting/IScriptAPI.cs" />
|
|
||||||
<include name="Interfaces/Scripting/IScriptEngine.cs" />
|
|
||||||
<include name="Properties/AssemblyInfo.cs" />
|
<include name="Properties/AssemblyInfo.cs" />
|
||||||
<include name="Types/AgentCiruitData.cs" />
|
<include name="Types/AgentCiruitData.cs" />
|
||||||
<include name="Types/AgentWearable.cs" />
|
<include name="Types/AgentWearable.cs" />
|
||||||
|
|
|
@ -172,9 +172,6 @@
|
||||||
<Compile Include="Scenes\Scene.PacketHandlers.cs">
|
<Compile Include="Scenes\Scene.PacketHandlers.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Scenes\Scene.Scripting.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Scenes\SceneBase.cs">
|
<Compile Include="Scenes\SceneBase.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
<include name="Scenes/Primitive.cs" />
|
<include name="Scenes/Primitive.cs" />
|
||||||
<include name="Scenes/Scene.cs" />
|
<include name="Scenes/Scene.cs" />
|
||||||
<include name="Scenes/Scene.PacketHandlers.cs" />
|
<include name="Scenes/Scene.PacketHandlers.cs" />
|
||||||
<include name="Scenes/Scene.Scripting.cs" />
|
|
||||||
<include name="Scenes/SceneBase.cs" />
|
<include name="Scenes/SceneBase.cs" />
|
||||||
<include name="Scenes/SceneEvents.cs" />
|
<include name="Scenes/SceneEvents.cs" />
|
||||||
<include name="Scenes/SceneObject.cs" />
|
<include name="Scenes/SceneObject.cs" />
|
||||||
|
|
|
@ -1,184 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* * Neither the name of the OpenSim Project nor the
|
|
||||||
* names of its contributors may be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
using System.Reflection;
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Framework.Interfaces;
|
|
||||||
using OpenSim.Framework.Types;
|
|
||||||
using libsecondlife;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.Environment.Scenes
|
|
||||||
{
|
|
||||||
public partial class Scene
|
|
||||||
{
|
|
||||||
private Dictionary<string, IScriptEngine> scriptEngines = new Dictionary<string, IScriptEngine>();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
private void LoadScriptEngines()
|
|
||||||
{
|
|
||||||
this.LoadScriptPlugins();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public void LoadScriptPlugins()
|
|
||||||
{
|
|
||||||
string path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "ScriptEngines");
|
|
||||||
string[] pluginFiles = Directory.GetFiles(path, "*.dll");
|
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < pluginFiles.Length; i++)
|
|
||||||
{
|
|
||||||
this.AddPlugin(pluginFiles[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="FileName"></param>
|
|
||||||
private void AddPlugin(string FileName)
|
|
||||||
{
|
|
||||||
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
|
|
||||||
|
|
||||||
foreach (Type pluginType in pluginAssembly.GetTypes())
|
|
||||||
{
|
|
||||||
if (pluginType.IsPublic)
|
|
||||||
{
|
|
||||||
if (!pluginType.IsAbstract)
|
|
||||||
{
|
|
||||||
Type typeInterface = pluginType.GetInterface("IScriptEngine", true);
|
|
||||||
|
|
||||||
if (typeInterface != null)
|
|
||||||
{
|
|
||||||
IScriptEngine plug = (IScriptEngine)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
|
||||||
plug.Init(this);
|
|
||||||
this.scriptEngines.Add(plug.GetName(), plug);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
typeInterface = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pluginAssembly = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="scriptType"></param>
|
|
||||||
/// <param name="scriptName"></param>
|
|
||||||
/// <param name="script"></param>
|
|
||||||
/// <param name="ent"></param>
|
|
||||||
public void LoadScript(string scriptType, string scriptName, string script, Entity ent)
|
|
||||||
{
|
|
||||||
if(this.scriptEngines.ContainsKey(scriptType))
|
|
||||||
{
|
|
||||||
this.scriptEngines[scriptType].LoadScript(script, scriptName, ent.LocalId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region IScriptAPI Methods
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="localID"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public LLVector3 GetEntityPosition(uint localID)
|
|
||||||
{
|
|
||||||
LLVector3 res = new LLVector3();
|
|
||||||
// Console.WriteLine("script- getting entity " + localID + " position");
|
|
||||||
foreach (Entity entity in this.Entities.Values)
|
|
||||||
{
|
|
||||||
if (entity.LocalId == localID)
|
|
||||||
{
|
|
||||||
res.X = entity.Pos.X;
|
|
||||||
res.Y = entity.Pos.Y;
|
|
||||||
res.Z = entity.Pos.Z;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="localID"></param>
|
|
||||||
/// <param name="x"></param>
|
|
||||||
/// <param name="y"></param>
|
|
||||||
/// <param name="z"></param>
|
|
||||||
public void SetEntityPosition(uint localID, float x , float y, float z)
|
|
||||||
{
|
|
||||||
foreach (Entity entity in this.Entities.Values)
|
|
||||||
{
|
|
||||||
if (entity.LocalId == localID && entity is Primitive)
|
|
||||||
{
|
|
||||||
LLVector3 pos = entity.Pos;
|
|
||||||
pos.X = x;
|
|
||||||
pos.Y = y;
|
|
||||||
Primitive prim = entity as Primitive;
|
|
||||||
// Of course, we really should have asked the physEngine if this is possible, and if not, returned false.
|
|
||||||
//prim.UpdatePosition(pos);
|
|
||||||
// Console.WriteLine("script- setting entity " + localID + " positon");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public uint GetRandomAvatarID()
|
|
||||||
{
|
|
||||||
//Console.WriteLine("script- getting random avatar id");
|
|
||||||
uint res = 0;
|
|
||||||
foreach (Entity entity in this.Entities.Values)
|
|
||||||
{
|
|
||||||
if (entity is ScenePresence)
|
|
||||||
{
|
|
||||||
res = entity.LocalId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -44,7 +44,7 @@ using OpenSim.Framework.Communications;
|
||||||
using OpenSim.Region.Caches;
|
using OpenSim.Region.Caches;
|
||||||
using OpenSim.Region.Environment;
|
using OpenSim.Region.Environment;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
using OpenSim.Scripting;
|
using OpenSim.Region.Enviorment.Scripting;
|
||||||
using OpenSim.Region.Capabilities;
|
using OpenSim.Region.Capabilities;
|
||||||
using Caps = OpenSim.Region.Capabilities.Caps;
|
using Caps = OpenSim.Region.Capabilities.Caps;
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
public delegate bool FilterAvatarList(ScenePresence avatar);
|
public delegate bool FilterAvatarList(ScenePresence avatar);
|
||||||
|
|
||||||
public partial class Scene : SceneBase, ILocalStorageReceiver, IScriptAPI
|
public partial class Scene : SceneBase, ILocalStorageReceiver
|
||||||
{
|
{
|
||||||
protected System.Timers.Timer m_heartbeatTimer = new System.Timers.Timer();
|
protected System.Timers.Timer m_heartbeatTimer = new System.Timers.Timer();
|
||||||
protected Dictionary<libsecondlife.LLUUID, ScenePresence> Avatars;
|
protected Dictionary<libsecondlife.LLUUID, ScenePresence> Avatars;
|
||||||
|
|
|
@ -34,7 +34,7 @@ using System.CodeDom;
|
||||||
using System.CodeDom.Compiler;
|
using System.CodeDom.Compiler;
|
||||||
using Microsoft.CSharp;
|
using Microsoft.CSharp;
|
||||||
|
|
||||||
namespace OpenSim.Scripting
|
namespace OpenSim.Region.Enviorment.Scripting
|
||||||
{
|
{
|
||||||
public class CSharpScriptEngine : IScriptCompiler
|
public class CSharpScriptEngine : IScriptCompiler
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,7 +34,7 @@ using System.CodeDom;
|
||||||
using System.CodeDom.Compiler;
|
using System.CodeDom.Compiler;
|
||||||
using Microsoft.JScript;
|
using Microsoft.JScript;
|
||||||
|
|
||||||
namespace OpenSim.Scripting
|
namespace OpenSim.Region.Enviorment.Scripting
|
||||||
{
|
{
|
||||||
public class JScriptEngine : IScriptCompiler
|
public class JScriptEngine : IScriptCompiler
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,7 +34,7 @@ using System.CodeDom;
|
||||||
using System.CodeDom.Compiler;
|
using System.CodeDom.Compiler;
|
||||||
using Microsoft.VJSharp;
|
using Microsoft.VJSharp;
|
||||||
|
|
||||||
namespace OpenSim.Scripting
|
namespace OpenSim.Region.Enviorment.Scripting
|
||||||
{
|
{
|
||||||
public class JSharpScriptEngine : IScriptCompiler
|
public class JSharpScriptEngine : IScriptCompiler
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,15 +28,44 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using OpenSim.Framework.Types;
|
|
||||||
|
|
||||||
using libsecondlife;
|
using OpenSim.Framework.Console;
|
||||||
namespace OpenSim.Framework.Interfaces
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Region.Environment;
|
||||||
|
using OpenSim.Region.Environment.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.Enviorment.Scripting
|
||||||
{
|
{
|
||||||
public interface IScriptAPI
|
public interface IScript
|
||||||
{
|
{
|
||||||
LLVector3 GetEntityPosition(uint localID);
|
void Initialise(ScriptInfo scriptInfo);
|
||||||
void SetEntityPosition(uint localID, float x, float y, float z);
|
string getName();
|
||||||
uint GetRandomAvatarID();
|
}
|
||||||
|
|
||||||
|
public class TestScript : IScript
|
||||||
|
{
|
||||||
|
ScriptInfo script;
|
||||||
|
|
||||||
|
public string getName()
|
||||||
|
{
|
||||||
|
return "TestScript 0.1";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialise(ScriptInfo scriptInfo)
|
||||||
|
{
|
||||||
|
script = scriptInfo;
|
||||||
|
script.events.OnFrame += new OpenSim.Region.Environment.Scenes.EventManager.OnFrameDelegate(events_OnFrame);
|
||||||
|
script.events.OnNewPresence += new EventManager.OnNewPresenceDelegate(events_OnNewPresence);
|
||||||
|
}
|
||||||
|
|
||||||
|
void events_OnNewPresence(ScenePresence presence)
|
||||||
|
{
|
||||||
|
script.logger.Verbose("Hello " + presence.firstname.ToString() + "!");
|
||||||
|
}
|
||||||
|
|
||||||
|
void events_OnFrame()
|
||||||
|
{
|
||||||
|
//script.logger.Verbose("Hello World!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -32,7 +32,7 @@ using System.Text;
|
||||||
using OpenSim.Region.Environment.Scenes;
|
using OpenSim.Region.Environment.Scenes;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
|
|
||||||
namespace OpenSim.Scripting
|
namespace OpenSim.Region.Enviorment.Scripting
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class which provides access to the world
|
/// Class which provides access to the world
|
||||||
|
|
|
@ -29,7 +29,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace OpenSim.Scripting
|
namespace OpenSim.Region.Enviorment.Scripting
|
||||||
{
|
{
|
||||||
public class ScriptManager
|
public class ScriptManager
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue