Finished removing the old scripting code, Scene.Scripting.cs and OpenSim.Framework.Interfaces.Scripting.

Sugilite
MW 2007-06-28 14:10:05 +00:00
parent 3456d951d8
commit 561db23e5f
13 changed files with 43 additions and 251 deletions

View File

@ -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();
}
}

View File

@ -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>

View File

@ -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" />

View File

@ -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>

View File

@ -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" />

View File

@ -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
}
}

View File

@ -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;

View File

@ -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
{ {

View File

@ -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
{ {

View File

@ -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
{ {

View File

@ -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!");
}
} }
} }

View File

@ -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

View File

@ -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
{ {