From 3456d951d89fbc83f742d40ca8ca2a1a79d414eb Mon Sep 17 00:00:00 2001
From: MW
Date: Thu, 28 Jun 2007 13:13:17 +0000
Subject: Imported the scripting changes, so now should be up to date with
sugilite.
---
.../Environment/OpenSim.Region.Environment.csproj | 42 ++++---
.../OpenSim.Region.Environment.dll.build | 75 ++++++++++++
OpenSim/Region/Environment/Scenes/Entity.cs | 3 +-
OpenSim/Region/Environment/Scenes/Scene.cs | 30 ++---
OpenSim/Region/Environment/Scenes/SceneBase.cs | 1 -
.../Scenes/scripting/Engines/CSharpScriptEngine.cs | 104 +++++++++++++++++
.../Scenes/scripting/Engines/JScriptEngine.cs | 104 +++++++++++++++++
.../Scenes/scripting/Engines/JSharpScriptEngine.cs | 104 +++++++++++++++++
.../Environment/Scenes/scripting/IScriptContext.cs | 40 -------
.../Environment/Scenes/scripting/IScriptEntity.cs | 46 --------
.../Environment/Scenes/scripting/IScriptHandler.cs | 126 ---------------------
.../Region/Environment/Scenes/scripting/Script.cs | 53 ---------
.../Environment/Scenes/scripting/ScriptFactory.cs | 35 ------
.../Environment/Scenes/scripting/ScriptInfo.cs | 58 ++++++++++
.../Environment/Scenes/scripting/ScriptManager.cs | 99 ++++++++++++++++
.../Scenes/scripting/Scripts/FollowRandomAvatar.cs | 64 -----------
16 files changed, 579 insertions(+), 405 deletions(-)
create mode 100644 OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build
create mode 100644 OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs
create mode 100644 OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs
create mode 100644 OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs
delete mode 100644 OpenSim/Region/Environment/Scenes/scripting/IScriptContext.cs
delete mode 100644 OpenSim/Region/Environment/Scenes/scripting/IScriptEntity.cs
delete mode 100644 OpenSim/Region/Environment/Scenes/scripting/IScriptHandler.cs
delete mode 100644 OpenSim/Region/Environment/Scenes/scripting/Script.cs
delete mode 100644 OpenSim/Region/Environment/Scenes/scripting/ScriptFactory.cs
create mode 100644 OpenSim/Region/Environment/Scenes/scripting/ScriptInfo.cs
create mode 100644 OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs
delete mode 100644 OpenSim/Region/Environment/Scenes/scripting/Scripts/FollowRandomAvatar.cs
(limited to 'OpenSim/Region/Environment')
diff --git a/OpenSim/Region/Environment/OpenSim.Region.Environment.csproj b/OpenSim/Region/Environment/OpenSim.Region.Environment.csproj
index 6f07969..efde96c 100644
--- a/OpenSim/Region/Environment/OpenSim.Region.Environment.csproj
+++ b/OpenSim/Region/Environment/OpenSim.Region.Environment.csproj
@@ -70,6 +70,10 @@
..\..\..\bin\libsecondlife.dll
False
+
+ Microsoft.JScript.dll
+ False
+
System.dll
False
@@ -78,6 +82,10 @@
System.Xml.dll
False
+
+ VJSharpCodeProvider.dll
+ False
+
..\..\..\bin\XMLRPC.dll
False
@@ -152,55 +160,55 @@
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
-
+
Code
diff --git a/OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build b/OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build
new file mode 100644
index 0000000..da73c8c
--- /dev/null
+++ b/OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenSim/Region/Environment/Scenes/Entity.cs b/OpenSim/Region/Environment/Scenes/Entity.cs
index bbba34d..db5070d 100644
--- a/OpenSim/Region/Environment/Scenes/Entity.cs
+++ b/OpenSim/Region/Environment/Scenes/Entity.cs
@@ -31,11 +31,10 @@ using System.Text;
using Axiom.MathLib;
using OpenSim.Physics.Manager;
using libsecondlife;
-using OpenSim.Region.Environment.Scripting;
namespace OpenSim.Region.Environment.Scenes
{
- public abstract class Entity : IScriptReadonlyEntity
+ public abstract class Entity
{
public libsecondlife.LLUUID uuid;
public Quaternion rotation;
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index ff54efa..b345c0c 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -39,12 +39,14 @@ using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Types;
using OpenSim.Framework.Inventory;
using OpenSim.Framework;
-using OpenSim.Region.Environment.Scripting;
using OpenSim.Region.Terrain;
using OpenSim.Framework.Communications;
using OpenSim.Region.Caches;
using OpenSim.Region.Environment;
using OpenSim.Framework.Servers;
+using OpenSim.Scripting;
+using OpenSim.Region.Capabilities;
+using Caps = OpenSim.Region.Capabilities.Caps;
namespace OpenSim.Region.Environment.Scenes
{
@@ -60,20 +62,19 @@ namespace OpenSim.Region.Environment.Scenes
private Random Rand = new Random();
private uint _primCount = 702000;
private int storageCount;
- private Dictionary m_scriptHandlers;
- private Dictionary m_scripts;
private Mutex updateLock;
protected AuthenticateSessionsBase authenticateHandler;
protected RegionCommsListener regionCommsHost;
protected CommunicationsManager commsManager;
- protected Dictionary capsHandlers = new Dictionary();
+ protected Dictionary capsHandlers = new Dictionary();
protected BaseHttpServer httpListener;
public ParcelManager parcelManager;
public EstateManager estateManager;
public EventManager eventManager;
+ public ScriptManager scriptManager;
#region Properties
///
@@ -117,12 +118,9 @@ namespace OpenSim.Region.Environment.Scenes
parcelManager = new ParcelManager(this, this.m_regInfo);
estateManager = new EstateManager(this, this.m_regInfo);
-
+ scriptManager = new ScriptManager(this);
eventManager = new EventManager();
- m_scriptHandlers = new Dictionary();
- m_scripts = new Dictionary();
-
OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs - creating new entitities instance");
Entities = new Dictionary();
Avatars = new Dictionary();
@@ -195,19 +193,9 @@ namespace OpenSim.Region.Environment.Scenes
Entities[UUID].update();
}
- // New
+ // General purpose event manager
eventManager.TriggerOnFrame();
- // TODO: Obsolete - Phase out
- foreach (ScriptHandler scriptHandler in m_scriptHandlers.Values)
- {
- scriptHandler.OnFrame();
- }
- foreach (IScriptEngine scripteng in this.scriptEngines.Values)
- {
- scripteng.OnFrame();
- }
-
//backup world data
this.storageCount++;
if (storageCount > 1200) //set to how often you want to backup
@@ -256,7 +244,7 @@ namespace OpenSim.Region.Environment.Scenes
//Parcel backup routines
ParcelData[] parcels = new ParcelData[parcelManager.parcelList.Count];
int i = 0;
- foreach (OpenSim.Region.Environment.Parcel parcel in parcelManager.parcelList.Values)
+ foreach (OpenSim.Region.Parcel parcel in parcelManager.parcelList.Values)
{
parcels[i] = parcel.parcelData;
i++;
@@ -672,7 +660,7 @@ namespace OpenSim.Region.Environment.Scenes
if (agent.CapsPath != "")
{
//Console.WriteLine("new user, so creating caps handler for it");
- Capabilities.Caps cap = new Capabilities.Caps(this.assetCache, httpListener, this.m_regInfo.CommsIPListenAddr, 9000, agent.CapsPath, agent.AgentID);
+ Caps cap = new Caps(this.assetCache, httpListener, this.m_regInfo.CommsIPListenAddr, 9000, agent.CapsPath, agent.AgentID);
cap.RegisterHandlers();
this.capsHandlers.Add(agent.AgentID, cap);
}
diff --git a/OpenSim/Region/Environment/Scenes/SceneBase.cs b/OpenSim/Region/Environment/Scenes/SceneBase.cs
index 3d8f522..50d3b82 100644
--- a/OpenSim/Region/Environment/Scenes/SceneBase.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneBase.cs
@@ -37,7 +37,6 @@ using OpenSim.Physics.Manager;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Types;
using OpenSim.Framework.Inventory;
-using OpenSim.Region.Environment.Scripting;
using OpenSim.Region.Terrain;
using OpenSim.Region.Caches;
diff --git a/OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs b/OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs
new file mode 100644
index 0000000..870303f
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs
@@ -0,0 +1,104 @@
+/*
+* 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;
+
+// Compilation stuff
+using System.CodeDom;
+using System.CodeDom.Compiler;
+using Microsoft.CSharp;
+
+namespace OpenSim.Scripting
+{
+ public class CSharpScriptEngine : IScriptCompiler
+ {
+ public string FileExt()
+ {
+ return ".cs";
+ }
+
+ private Dictionary LoadDotNetScript(ICodeCompiler compiler, string filename)
+ {
+ CompilerParameters compilerParams = new CompilerParameters();
+ CompilerResults compilerResults;
+ compilerParams.GenerateExecutable = false;
+ compilerParams.GenerateInMemory = true;
+ compilerParams.IncludeDebugInformation = false;
+ compilerParams.ReferencedAssemblies.Add("OpenSim.Region.dll");
+ compilerParams.ReferencedAssemblies.Add("OpenSim.Framework.dll");
+ compilerParams.ReferencedAssemblies.Add("libsecondlife.dll");
+ compilerParams.ReferencedAssemblies.Add("System.dll");
+
+ compilerResults = compiler.CompileAssemblyFromFile(compilerParams, filename);
+
+ if (compilerResults.Errors.Count > 0)
+ {
+ OpenSim.Framework.Console.MainLog.Instance.Error("Compile errors");
+ foreach (CompilerError error in compilerResults.Errors)
+ {
+ OpenSim.Framework.Console.MainLog.Instance.Error(error.Line.ToString() + ": " + error.ErrorText.ToString());
+ }
+ }
+ else
+ {
+ Dictionary scripts = new Dictionary();
+
+ foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes())
+ {
+ Type testInterface = pluginType.GetInterface("IScript", true);
+
+ if (testInterface != null)
+ {
+ IScript script = (IScript)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString());
+
+ string scriptName = "C#/" + script.getName();
+ Console.WriteLine("Script: " + scriptName + " loaded.");
+
+ if (!scripts.ContainsKey(scriptName))
+ {
+ scripts.Add(scriptName, script);
+ }
+ else
+ {
+ scripts[scriptName] = script;
+ }
+ }
+ }
+ return scripts;
+ }
+ return null;
+ }
+
+ public Dictionary compile(string filename)
+ {
+ CSharpCodeProvider csharpProvider = new CSharpCodeProvider();
+ return LoadDotNetScript(csharpProvider.CreateCompiler(), filename);
+ }
+ }
+}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs b/OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs
new file mode 100644
index 0000000..ffae1d7
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs
@@ -0,0 +1,104 @@
+/*
+* 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;
+
+// Compilation stuff
+using System.CodeDom;
+using System.CodeDom.Compiler;
+using Microsoft.JScript;
+
+namespace OpenSim.Scripting
+{
+ public class JScriptEngine : IScriptCompiler
+ {
+ public string FileExt()
+ {
+ return ".js";
+ }
+
+ private Dictionary LoadDotNetScript(ICodeCompiler compiler, string filename)
+ {
+ CompilerParameters compilerParams = new CompilerParameters();
+ CompilerResults compilerResults;
+ compilerParams.GenerateExecutable = false;
+ compilerParams.GenerateInMemory = true;
+ compilerParams.IncludeDebugInformation = false;
+ compilerParams.ReferencedAssemblies.Add("OpenSim.Region.dll");
+ compilerParams.ReferencedAssemblies.Add("OpenSim.Framework.dll");
+ compilerParams.ReferencedAssemblies.Add("libsecondlife.dll");
+ compilerParams.ReferencedAssemblies.Add("System.dll");
+
+ compilerResults = compiler.CompileAssemblyFromFile(compilerParams, filename);
+
+ if (compilerResults.Errors.Count > 0)
+ {
+ OpenSim.Framework.Console.MainLog.Instance.Error("Compile errors");
+ foreach (CompilerError error in compilerResults.Errors)
+ {
+ OpenSim.Framework.Console.MainLog.Instance.Error(error.Line.ToString() + ": " + error.ErrorText.ToString());
+ }
+ }
+ else
+ {
+ Dictionary scripts = new Dictionary();
+
+ foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes())
+ {
+ Type testInterface = pluginType.GetInterface("IScript", true);
+
+ if (testInterface != null)
+ {
+ IScript script = (IScript)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString());
+
+ string scriptName = "JS.NET/" + script.getName();
+ Console.WriteLine("Script: " + scriptName + " loaded.");
+
+ if (!scripts.ContainsKey(scriptName))
+ {
+ scripts.Add(scriptName, script);
+ }
+ else
+ {
+ scripts[scriptName] = script;
+ }
+ }
+ }
+ return scripts;
+ }
+ return null;
+ }
+
+ public Dictionary compile(string filename)
+ {
+ JScriptCodeProvider jscriptProvider = new JScriptCodeProvider();
+ return LoadDotNetScript(jscriptProvider.CreateCompiler(), filename);
+ }
+ }
+}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs b/OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs
new file mode 100644
index 0000000..b33b55d
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs
@@ -0,0 +1,104 @@
+/*
+* 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;
+
+// Compilation stuff
+using System.CodeDom;
+using System.CodeDom.Compiler;
+using Microsoft.VJSharp;
+
+namespace OpenSim.Scripting
+{
+ public class JSharpScriptEngine : IScriptCompiler
+ {
+ public string FileExt()
+ {
+ return ".jsl";
+ }
+
+ private Dictionary LoadDotNetScript(ICodeCompiler compiler, string filename)
+ {
+ CompilerParameters compilerParams = new CompilerParameters();
+ CompilerResults compilerResults;
+ compilerParams.GenerateExecutable = false;
+ compilerParams.GenerateInMemory = true;
+ compilerParams.IncludeDebugInformation = false;
+ compilerParams.ReferencedAssemblies.Add("OpenSim.Region.dll");
+ compilerParams.ReferencedAssemblies.Add("OpenSim.Framework.dll");
+ compilerParams.ReferencedAssemblies.Add("libsecondlife.dll");
+ compilerParams.ReferencedAssemblies.Add("System.dll");
+
+ compilerResults = compiler.CompileAssemblyFromFile(compilerParams, filename);
+
+ if (compilerResults.Errors.Count > 0)
+ {
+ OpenSim.Framework.Console.MainLog.Instance.Error("Compile errors");
+ foreach (CompilerError error in compilerResults.Errors)
+ {
+ OpenSim.Framework.Console.MainLog.Instance.Error(error.Line.ToString() + ": " + error.ErrorText.ToString());
+ }
+ }
+ else
+ {
+ Dictionary scripts = new Dictionary();
+
+ foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes())
+ {
+ Type testInterface = pluginType.GetInterface("IScript", true);
+
+ if (testInterface != null)
+ {
+ IScript script = (IScript)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString());
+
+ string scriptName = "J#/" + script.getName();
+ Console.WriteLine("Script: " + scriptName + " loaded.");
+
+ if (!scripts.ContainsKey(scriptName))
+ {
+ scripts.Add(scriptName, script);
+ }
+ else
+ {
+ scripts[scriptName] = script;
+ }
+ }
+ }
+ return scripts;
+ }
+ return null;
+ }
+
+ public Dictionary compile(string filename)
+ {
+ VJSharpCodeProvider jsharpProvider = new VJSharpCodeProvider();
+ return LoadDotNetScript(jsharpProvider.CreateCompiler(), filename);
+ }
+ }
+}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/IScriptContext.cs b/OpenSim/Region/Environment/Scenes/scripting/IScriptContext.cs
deleted file mode 100644
index eb8a117..0000000
--- a/OpenSim/Region/Environment/Scenes/scripting/IScriptContext.cs
+++ /dev/null
@@ -1,40 +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 libsecondlife;
-
-namespace OpenSim.Region.Environment.Scripting
-{
- public interface IScriptContext
- {
- IScriptEntity Entity { get; }
- bool TryGetRandomAvatar(out IScriptReadonlyEntity avatar);
- }
-}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/IScriptEntity.cs b/OpenSim/Region/Environment/Scenes/scripting/IScriptEntity.cs
deleted file mode 100644
index e813626..0000000
--- a/OpenSim/Region/Environment/Scenes/scripting/IScriptEntity.cs
+++ /dev/null
@@ -1,46 +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 libsecondlife;
-
-namespace OpenSim.Region.Environment.Scripting
-{
- public interface IScriptReadonlyEntity
- {
- LLVector3 Pos { get; }
- string Name { get; }
- }
-
- public interface IScriptEntity
- {
- LLVector3 Pos { get; set; }
- string Name { get; }
- }
-}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/IScriptHandler.cs b/OpenSim/Region/Environment/Scenes/scripting/IScriptHandler.cs
deleted file mode 100644
index 115b4f4..0000000
--- a/OpenSim/Region/Environment/Scenes/scripting/IScriptHandler.cs
+++ /dev/null
@@ -1,126 +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 libsecondlife;
-using OpenSim.Physics.Manager;
-using OpenSim.Region.Environment;
-using OpenSim.Region.Environment.Scenes;
-using Avatar=OpenSim.Region.Environment.Scenes.ScenePresence;
-using Primitive = OpenSim.Region.Environment.Scenes.Primitive;
-
-namespace OpenSim.Region.Environment.Scripting
-{
- public delegate void ScriptEventHandler(IScriptContext context);
-
- public class ScriptHandler : IScriptContext, IScriptEntity, IScriptReadonlyEntity
- {
- private Scene m_world;
- private Script m_script;
- private Entity m_entity;
-
- public LLUUID ScriptId
- {
- get
- {
- return m_script.ScriptId;
- }
- }
-
- public void OnFrame()
- {
- m_script.OnFrame(this);
- }
-
- public ScriptHandler(Script script, Entity entity, Scene world)
- {
- m_script = script;
- m_entity = entity;
- m_world = world;
- }
-
- #region IScriptContext Members
-
- IScriptEntity IScriptContext.Entity
- {
- get
- {
- return this;
- }
- }
-
- bool IScriptContext.TryGetRandomAvatar(out IScriptReadonlyEntity avatar)
- {
- foreach (Entity entity in m_world.Entities.Values )
- {
- if( entity is Avatar )
- {
- avatar = entity;
- return true;
- }
- }
-
- avatar = null;
- return false;
- }
-
- #endregion
-
- #region IScriptEntity and IScriptReadonlyEntity Members
-
- public string Name
- {
- get
- {
- return m_entity.Name;
- }
- }
-
- public LLVector3 Pos
- {
- get
- {
- return m_entity.Pos;
- }
-
- set
- {
- if (m_entity is Primitive)
- {
- Primitive prim = m_entity as Primitive;
- // Of course, we really should have asked the physEngine if this is possible, and if not, returned false.
- // prim.UpdatePosition( value );
- }
- }
- }
-
- #endregion
- }
-
-}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/Script.cs b/OpenSim/Region/Environment/Scenes/scripting/Script.cs
deleted file mode 100644
index 5d398b0..0000000
--- a/OpenSim/Region/Environment/Scenes/scripting/Script.cs
+++ /dev/null
@@ -1,53 +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 libsecondlife;
-
-namespace OpenSim.Region.Environment.Scripting
-{
- public class Script
- {
- private LLUUID m_scriptId;
- public virtual LLUUID ScriptId
- {
- get
- {
- return m_scriptId;
- }
- }
-
- public Script( LLUUID scriptId )
- {
- m_scriptId = scriptId;
- }
-
- public ScriptEventHandler OnFrame;
- }
-}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/ScriptFactory.cs b/OpenSim/Region/Environment/Scenes/scripting/ScriptFactory.cs
deleted file mode 100644
index 0ce65ea..0000000
--- a/OpenSim/Region/Environment/Scenes/scripting/ScriptFactory.cs
+++ /dev/null
@@ -1,35 +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.Region.Environment.Scripting
-{
- public delegate Script ScriptFactory();
-}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/ScriptInfo.cs b/OpenSim/Region/Environment/Scenes/scripting/ScriptInfo.cs
new file mode 100644
index 0000000..57df4c4
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/scripting/ScriptInfo.cs
@@ -0,0 +1,58 @@
+/*
+* 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 OpenSim.Region.Environment.Scenes;
+using OpenSim.Framework.Console;
+
+namespace OpenSim.Scripting
+{
+ ///
+ /// Class which provides access to the world
+ ///
+ public class ScriptInfo
+ {
+ // Reference to world.eventsManager provided for convenience
+ public EventManager events;
+
+ // The main world
+ public Scene world;
+
+ // The console
+ public LogBase logger;
+
+ public ScriptInfo(Scene scene)
+ {
+ world = scene;
+ events = world.eventManager;
+ logger = OpenSim.Framework.Console.MainLog.Instance;
+ }
+ }
+}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs b/OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs
new file mode 100644
index 0000000..5d1d188
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs
@@ -0,0 +1,99 @@
+/*
+* 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.Scripting
+{
+ public class ScriptManager
+ {
+ List scripts = new List();
+ OpenSim.Region.Environment.Scenes.Scene scene;
+ Dictionary compilers = new Dictionary();
+
+ private void LoadFromCompiler(Dictionary compiledscripts)
+ {
+ foreach (KeyValuePair script in compiledscripts)
+ {
+ ScriptInfo scriptInfo = new ScriptInfo(scene); // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script.
+ OpenSim.Framework.Console.MainLog.Instance.Verbose("Loading " + script.Key);
+ script.Value.Initialise(scriptInfo);
+ scripts.Add(script.Value);
+ }
+ OpenSim.Framework.Console.MainLog.Instance.Verbose("Finished loading " + compiledscripts.Count.ToString() + " script(s)");
+ }
+
+ public ScriptManager(OpenSim.Region.Environment.Scenes.Scene world)
+ {
+ scene = world;
+
+ // Default Engines
+ CSharpScriptEngine csharpCompiler = new CSharpScriptEngine();
+ compilers.Add(csharpCompiler.FileExt(),csharpCompiler);
+
+ JScriptEngine jscriptCompiler = new JScriptEngine();
+ compilers.Add(jscriptCompiler.FileExt(), jscriptCompiler);
+
+ JSharpScriptEngine jsharpCompiler = new JSharpScriptEngine();
+ compilers.Add(jsharpCompiler.FileExt(), jsharpCompiler);
+ }
+
+ public void Compile(string filename)
+ {
+ foreach (KeyValuePair compiler in compilers)
+ {
+ if (filename.EndsWith(compiler.Key))
+ {
+ LoadFromCompiler(compiler.Value.compile(filename));
+ break;
+ }
+ }
+ }
+
+ public void RunScriptCmd(string[] args)
+ {
+ switch (args[0])
+ {
+ case "load":
+ Compile(args[1]);
+ break;
+
+ default:
+ OpenSim.Framework.Console.MainLog.Instance.Error("Unknown script command");
+ break;
+ }
+ }
+ }
+
+ interface IScriptCompiler
+ {
+ Dictionary compile(string filename);
+ string FileExt();
+ }
+}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/Scripts/FollowRandomAvatar.cs b/OpenSim/Region/Environment/Scenes/scripting/Scripts/FollowRandomAvatar.cs
deleted file mode 100644
index 90c79e3..0000000
--- a/OpenSim/Region/Environment/Scenes/scripting/Scripts/FollowRandomAvatar.cs
+++ /dev/null
@@ -1,64 +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 libsecondlife;
-
-namespace OpenSim.Region.Environment.Scripting
-{
- public class FollowRandomAvatar : Script
- {
- public FollowRandomAvatar()
- : base(LLUUID.Random())
- {
- OnFrame += MyOnFrame;
- }
-
- private void MyOnFrame(IScriptContext context)
- {
- LLVector3 pos = context.Entity.Pos;
-
- IScriptReadonlyEntity avatar;
-
- if (context.TryGetRandomAvatar(out avatar))
- {
- LLVector3 avatarPos = avatar.Pos;
-
- float x = pos.X + ((float)avatarPos.X.CompareTo(pos.X)) / 2;
- float y = pos.Y + ((float)avatarPos.Y.CompareTo(pos.Y)) / 2;
-
- LLVector3 newPos = new LLVector3(x, y, pos.Z);
-
- context.Entity.Pos = newPos;
- }
- }
- }
-
-
-}
--
cgit v1.1