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">
|
||||
<SubType>Code</SubType>
|
||||
</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">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
|
|
|
@ -31,8 +31,6 @@
|
|||
<include name="Interfaces/Config/IGenericConfig.cs" />
|
||||
<include name="Interfaces/Config/IGridConfig.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="Types/AgentCiruitData.cs" />
|
||||
<include name="Types/AgentWearable.cs" />
|
||||
|
|
|
@ -172,9 +172,6 @@
|
|||
<Compile Include="Scenes\Scene.PacketHandlers.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Scenes\Scene.Scripting.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Scenes\SceneBase.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
<include name="Scenes/Primitive.cs" />
|
||||
<include name="Scenes/Scene.cs" />
|
||||
<include name="Scenes/Scene.PacketHandlers.cs" />
|
||||
<include name="Scenes/Scene.Scripting.cs" />
|
||||
<include name="Scenes/SceneBase.cs" />
|
||||
<include name="Scenes/SceneEvents.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.Environment;
|
||||
using OpenSim.Framework.Servers;
|
||||
using OpenSim.Scripting;
|
||||
using OpenSim.Region.Enviorment.Scripting;
|
||||
using OpenSim.Region.Capabilities;
|
||||
using Caps = OpenSim.Region.Capabilities.Caps;
|
||||
|
||||
|
@ -52,7 +52,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
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 Dictionary<libsecondlife.LLUUID, ScenePresence> Avatars;
|
||||
|
|
|
@ -34,7 +34,7 @@ using System.CodeDom;
|
|||
using System.CodeDom.Compiler;
|
||||
using Microsoft.CSharp;
|
||||
|
||||
namespace OpenSim.Scripting
|
||||
namespace OpenSim.Region.Enviorment.Scripting
|
||||
{
|
||||
public class CSharpScriptEngine : IScriptCompiler
|
||||
{
|
||||
|
|
|
@ -34,7 +34,7 @@ using System.CodeDom;
|
|||
using System.CodeDom.Compiler;
|
||||
using Microsoft.JScript;
|
||||
|
||||
namespace OpenSim.Scripting
|
||||
namespace OpenSim.Region.Enviorment.Scripting
|
||||
{
|
||||
public class JScriptEngine : IScriptCompiler
|
||||
{
|
||||
|
|
|
@ -34,7 +34,7 @@ using System.CodeDom;
|
|||
using System.CodeDom.Compiler;
|
||||
using Microsoft.VJSharp;
|
||||
|
||||
namespace OpenSim.Scripting
|
||||
namespace OpenSim.Region.Enviorment.Scripting
|
||||
{
|
||||
public class JSharpScriptEngine : IScriptCompiler
|
||||
{
|
||||
|
|
|
@ -28,15 +28,44 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using OpenSim.Framework.Types;
|
||||
|
||||
using libsecondlife;
|
||||
namespace OpenSim.Framework.Interfaces
|
||||
using OpenSim.Framework.Console;
|
||||
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 SetEntityPosition(uint localID, float x, float y, float z);
|
||||
uint GetRandomAvatarID();
|
||||
void Initialise(ScriptInfo scriptInfo);
|
||||
string getName();
|
||||
}
|
||||
|
||||
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.Framework.Console;
|
||||
|
||||
namespace OpenSim.Scripting
|
||||
namespace OpenSim.Region.Enviorment.Scripting
|
||||
{
|
||||
/// <summary>
|
||||
/// Class which provides access to the world
|
||||
|
|
|
@ -29,7 +29,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenSim.Scripting
|
||||
namespace OpenSim.Region.Enviorment.Scripting
|
||||
{
|
||||
public class ScriptManager
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue