aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs41
-rw-r--r--OpenSim/Framework/General/OpenSim.Framework.csproj6
-rw-r--r--OpenSim/Framework/General/OpenSim.Framework.dll.build2
-rw-r--r--OpenSim/Region/Environment/OpenSim.Region.Environment.csproj3
-rw-r--r--OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build1
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Scripting.cs184
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs4
-rw-r--r--OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/scripting/Script.cs (renamed from OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs)43
-rw-r--r--OpenSim/Region/Environment/Scenes/scripting/ScriptInfo.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs2
13 files changed, 43 insertions, 251 deletions
diff --git a/OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs b/OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs
deleted file mode 100644
index ca50be0..0000000
--- a/OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs
+++ /dev/null
@@ -1,41 +0,0 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Framework.Interfaces
33{
34 public interface IScriptEngine
35 {
36 bool Init(IScriptAPI api);
37 string GetName();
38 void LoadScript(string script, string scriptName, uint entityID);
39 void OnFrame();
40 }
41}
diff --git a/OpenSim/Framework/General/OpenSim.Framework.csproj b/OpenSim/Framework/General/OpenSim.Framework.csproj
index d18e583..48db634 100644
--- a/OpenSim/Framework/General/OpenSim.Framework.csproj
+++ b/OpenSim/Framework/General/OpenSim.Framework.csproj
@@ -148,12 +148,6 @@
148 <Compile Include="Interfaces\Config\IUserConfig.cs"> 148 <Compile Include="Interfaces\Config\IUserConfig.cs">
149 <SubType>Code</SubType> 149 <SubType>Code</SubType>
150 </Compile> 150 </Compile>
151 <Compile Include="Interfaces\Scripting\IScriptAPI.cs">
152 <SubType>Code</SubType>
153 </Compile>
154 <Compile Include="Interfaces\Scripting\IScriptEngine.cs">
155 <SubType>Code</SubType>
156 </Compile>
157 <Compile Include="Properties\AssemblyInfo.cs"> 151 <Compile Include="Properties\AssemblyInfo.cs">
158 <SubType>Code</SubType> 152 <SubType>Code</SubType>
159 </Compile> 153 </Compile>
diff --git a/OpenSim/Framework/General/OpenSim.Framework.dll.build b/OpenSim/Framework/General/OpenSim.Framework.dll.build
index 04e3382..a18838b 100644
--- a/OpenSim/Framework/General/OpenSim.Framework.dll.build
+++ b/OpenSim/Framework/General/OpenSim.Framework.dll.build
@@ -31,8 +31,6 @@
31 <include name="Interfaces/Config/IGenericConfig.cs" /> 31 <include name="Interfaces/Config/IGenericConfig.cs" />
32 <include name="Interfaces/Config/IGridConfig.cs" /> 32 <include name="Interfaces/Config/IGridConfig.cs" />
33 <include name="Interfaces/Config/IUserConfig.cs" /> 33 <include name="Interfaces/Config/IUserConfig.cs" />
34 <include name="Interfaces/Scripting/IScriptAPI.cs" />
35 <include name="Interfaces/Scripting/IScriptEngine.cs" />
36 <include name="Properties/AssemblyInfo.cs" /> 34 <include name="Properties/AssemblyInfo.cs" />
37 <include name="Types/AgentCiruitData.cs" /> 35 <include name="Types/AgentCiruitData.cs" />
38 <include name="Types/AgentWearable.cs" /> 36 <include name="Types/AgentWearable.cs" />
diff --git a/OpenSim/Region/Environment/OpenSim.Region.Environment.csproj b/OpenSim/Region/Environment/OpenSim.Region.Environment.csproj
index efde96c..4069454 100644
--- a/OpenSim/Region/Environment/OpenSim.Region.Environment.csproj
+++ b/OpenSim/Region/Environment/OpenSim.Region.Environment.csproj
@@ -172,9 +172,6 @@
172 <Compile Include="Scenes\Scene.PacketHandlers.cs"> 172 <Compile Include="Scenes\Scene.PacketHandlers.cs">
173 <SubType>Code</SubType> 173 <SubType>Code</SubType>
174 </Compile> 174 </Compile>
175 <Compile Include="Scenes\Scene.Scripting.cs">
176 <SubType>Code</SubType>
177 </Compile>
178 <Compile Include="Scenes\SceneBase.cs"> 175 <Compile Include="Scenes\SceneBase.cs">
179 <SubType>Code</SubType> 176 <SubType>Code</SubType>
180 </Compile> 177 </Compile>
diff --git a/OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build b/OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build
index da73c8c..51924d5 100644
--- a/OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build
+++ b/OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build
@@ -19,7 +19,6 @@
19 <include name="Scenes/Primitive.cs" /> 19 <include name="Scenes/Primitive.cs" />
20 <include name="Scenes/Scene.cs" /> 20 <include name="Scenes/Scene.cs" />
21 <include name="Scenes/Scene.PacketHandlers.cs" /> 21 <include name="Scenes/Scene.PacketHandlers.cs" />
22 <include name="Scenes/Scene.Scripting.cs" />
23 <include name="Scenes/SceneBase.cs" /> 22 <include name="Scenes/SceneBase.cs" />
24 <include name="Scenes/SceneEvents.cs" /> 23 <include name="Scenes/SceneEvents.cs" />
25 <include name="Scenes/SceneObject.cs" /> 24 <include name="Scenes/SceneObject.cs" />
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Scripting.cs b/OpenSim/Region/Environment/Scenes/Scene.Scripting.cs
deleted file mode 100644
index 2249c3d..0000000
--- a/OpenSim/Region/Environment/Scenes/Scene.Scripting.cs
+++ /dev/null
@@ -1,184 +0,0 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.IO;
32using System.Reflection;
33using OpenSim.Framework;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Types;
36using libsecondlife;
37
38namespace OpenSim.Region.Environment.Scenes
39{
40 public partial class Scene
41 {
42 private Dictionary<string, IScriptEngine> scriptEngines = new Dictionary<string, IScriptEngine>();
43
44 /// <summary>
45 ///
46 /// </summary>
47 private void LoadScriptEngines()
48 {
49 this.LoadScriptPlugins();
50 }
51
52 /// <summary>
53 ///
54 /// </summary>
55 public void LoadScriptPlugins()
56 {
57 string path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "ScriptEngines");
58 string[] pluginFiles = Directory.GetFiles(path, "*.dll");
59
60
61 for (int i = 0; i < pluginFiles.Length; i++)
62 {
63 this.AddPlugin(pluginFiles[i]);
64 }
65 }
66
67 /// <summary>
68 ///
69 /// </summary>
70 /// <param name="FileName"></param>
71 private void AddPlugin(string FileName)
72 {
73 Assembly pluginAssembly = Assembly.LoadFrom(FileName);
74
75 foreach (Type pluginType in pluginAssembly.GetTypes())
76 {
77 if (pluginType.IsPublic)
78 {
79 if (!pluginType.IsAbstract)
80 {
81 Type typeInterface = pluginType.GetInterface("IScriptEngine", true);
82
83 if (typeInterface != null)
84 {
85 IScriptEngine plug = (IScriptEngine)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
86 plug.Init(this);
87 this.scriptEngines.Add(plug.GetName(), plug);
88
89 }
90
91 typeInterface = null;
92 }
93 }
94 }
95
96 pluginAssembly = null;
97 }
98
99 /// <summary>
100 ///
101 /// </summary>
102 /// <param name="scriptType"></param>
103 /// <param name="scriptName"></param>
104 /// <param name="script"></param>
105 /// <param name="ent"></param>
106 public void LoadScript(string scriptType, string scriptName, string script, Entity ent)
107 {
108 if(this.scriptEngines.ContainsKey(scriptType))
109 {
110 this.scriptEngines[scriptType].LoadScript(script, scriptName, ent.LocalId);
111 }
112 }
113
114 #region IScriptAPI Methods
115
116 /// <summary>
117 ///
118 /// </summary>
119 /// <param name="localID"></param>
120 /// <returns></returns>
121 public LLVector3 GetEntityPosition(uint localID)
122 {
123 LLVector3 res = new LLVector3();
124 // Console.WriteLine("script- getting entity " + localID + " position");
125 foreach (Entity entity in this.Entities.Values)
126 {
127 if (entity.LocalId == localID)
128 {
129 res.X = entity.Pos.X;
130 res.Y = entity.Pos.Y;
131 res.Z = entity.Pos.Z;
132 }
133 }
134 return res;
135 }
136
137 /// <summary>
138 ///
139 /// </summary>
140 /// <param name="localID"></param>
141 /// <param name="x"></param>
142 /// <param name="y"></param>
143 /// <param name="z"></param>
144 public void SetEntityPosition(uint localID, float x , float y, float z)
145 {
146 foreach (Entity entity in this.Entities.Values)
147 {
148 if (entity.LocalId == localID && entity is Primitive)
149 {
150 LLVector3 pos = entity.Pos;
151 pos.X = x;
152 pos.Y = y;
153 Primitive prim = entity as Primitive;
154 // Of course, we really should have asked the physEngine if this is possible, and if not, returned false.
155 //prim.UpdatePosition(pos);
156 // Console.WriteLine("script- setting entity " + localID + " positon");
157 }
158 }
159
160 }
161
162 /// <summary>
163 ///
164 /// </summary>
165 /// <returns></returns>
166 public uint GetRandomAvatarID()
167 {
168 //Console.WriteLine("script- getting random avatar id");
169 uint res = 0;
170 foreach (Entity entity in this.Entities.Values)
171 {
172 if (entity is ScenePresence)
173 {
174 res = entity.LocalId;
175 }
176 }
177 return res;
178 }
179
180 #endregion
181
182
183 }
184}
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index b345c0c..f1de803 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -44,7 +44,7 @@ using OpenSim.Framework.Communications;
44using OpenSim.Region.Caches; 44using OpenSim.Region.Caches;
45using OpenSim.Region.Environment; 45using OpenSim.Region.Environment;
46using OpenSim.Framework.Servers; 46using OpenSim.Framework.Servers;
47using OpenSim.Scripting; 47using OpenSim.Region.Enviorment.Scripting;
48using OpenSim.Region.Capabilities; 48using OpenSim.Region.Capabilities;
49using Caps = OpenSim.Region.Capabilities.Caps; 49using Caps = OpenSim.Region.Capabilities.Caps;
50 50
@@ -52,7 +52,7 @@ namespace OpenSim.Region.Environment.Scenes
52{ 52{
53 public delegate bool FilterAvatarList(ScenePresence avatar); 53 public delegate bool FilterAvatarList(ScenePresence avatar);
54 54
55 public partial class Scene : SceneBase, ILocalStorageReceiver, IScriptAPI 55 public partial class Scene : SceneBase, ILocalStorageReceiver
56 { 56 {
57 protected System.Timers.Timer m_heartbeatTimer = new System.Timers.Timer(); 57 protected System.Timers.Timer m_heartbeatTimer = new System.Timers.Timer();
58 protected Dictionary<libsecondlife.LLUUID, ScenePresence> Avatars; 58 protected Dictionary<libsecondlife.LLUUID, ScenePresence> Avatars;
diff --git a/OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs b/OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs
index 870303f..a232b65 100644
--- a/OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs
+++ b/OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs
@@ -34,7 +34,7 @@ using System.CodeDom;
34using System.CodeDom.Compiler; 34using System.CodeDom.Compiler;
35using Microsoft.CSharp; 35using Microsoft.CSharp;
36 36
37namespace OpenSim.Scripting 37namespace OpenSim.Region.Enviorment.Scripting
38{ 38{
39 public class CSharpScriptEngine : IScriptCompiler 39 public class CSharpScriptEngine : IScriptCompiler
40 { 40 {
diff --git a/OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs b/OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs
index ffae1d7..2d44223 100644
--- a/OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs
+++ b/OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs
@@ -34,7 +34,7 @@ using System.CodeDom;
34using System.CodeDom.Compiler; 34using System.CodeDom.Compiler;
35using Microsoft.JScript; 35using Microsoft.JScript;
36 36
37namespace OpenSim.Scripting 37namespace OpenSim.Region.Enviorment.Scripting
38{ 38{
39 public class JScriptEngine : IScriptCompiler 39 public class JScriptEngine : IScriptCompiler
40 { 40 {
diff --git a/OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs b/OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs
index b33b55d..51b1512 100644
--- a/OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs
+++ b/OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs
@@ -34,7 +34,7 @@ using System.CodeDom;
34using System.CodeDom.Compiler; 34using System.CodeDom.Compiler;
35using Microsoft.VJSharp; 35using Microsoft.VJSharp;
36 36
37namespace OpenSim.Scripting 37namespace OpenSim.Region.Enviorment.Scripting
38{ 38{
39 public class JSharpScriptEngine : IScriptCompiler 39 public class JSharpScriptEngine : IScriptCompiler
40 { 40 {
diff --git a/OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs b/OpenSim/Region/Environment/Scenes/scripting/Script.cs
index 0c1627b..1e64675 100644
--- a/OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs
+++ b/OpenSim/Region/Environment/Scenes/scripting/Script.cs
@@ -28,15 +28,44 @@
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Text; 30using System.Text;
31using OpenSim.Framework.Types;
32 31
33using libsecondlife; 32using OpenSim.Framework.Console;
34namespace OpenSim.Framework.Interfaces 33using OpenSim.Framework;
34using OpenSim.Region.Environment;
35using OpenSim.Region.Environment.Scenes;
36
37namespace OpenSim.Region.Enviorment.Scripting
35{ 38{
36 public interface IScriptAPI 39 public interface IScript
40 {
41 void Initialise(ScriptInfo scriptInfo);
42 string getName();
43 }
44
45 public class TestScript : IScript
37 { 46 {
38 LLVector3 GetEntityPosition(uint localID); 47 ScriptInfo script;
39 void SetEntityPosition(uint localID, float x, float y, float z); 48
40 uint GetRandomAvatarID(); 49 public string getName()
50 {
51 return "TestScript 0.1";
52 }
53
54 public void Initialise(ScriptInfo scriptInfo)
55 {
56 script = scriptInfo;
57 script.events.OnFrame += new OpenSim.Region.Environment.Scenes.EventManager.OnFrameDelegate(events_OnFrame);
58 script.events.OnNewPresence += new EventManager.OnNewPresenceDelegate(events_OnNewPresence);
59 }
60
61 void events_OnNewPresence(ScenePresence presence)
62 {
63 script.logger.Verbose("Hello " + presence.firstname.ToString() + "!");
64 }
65
66 void events_OnFrame()
67 {
68 //script.logger.Verbose("Hello World!");
69 }
41 } 70 }
42} 71}
diff --git a/OpenSim/Region/Environment/Scenes/scripting/ScriptInfo.cs b/OpenSim/Region/Environment/Scenes/scripting/ScriptInfo.cs
index 57df4c4..522a572 100644
--- a/OpenSim/Region/Environment/Scenes/scripting/ScriptInfo.cs
+++ b/OpenSim/Region/Environment/Scenes/scripting/ScriptInfo.cs
@@ -32,7 +32,7 @@ using System.Text;
32using OpenSim.Region.Environment.Scenes; 32using OpenSim.Region.Environment.Scenes;
33using OpenSim.Framework.Console; 33using OpenSim.Framework.Console;
34 34
35namespace OpenSim.Scripting 35namespace OpenSim.Region.Enviorment.Scripting
36{ 36{
37 /// <summary> 37 /// <summary>
38 /// Class which provides access to the world 38 /// Class which provides access to the world
diff --git a/OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs b/OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs
index 5d1d188..576b7a5 100644
--- a/OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs
+++ b/OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs
@@ -29,7 +29,7 @@ using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Text; 30using System.Text;
31 31
32namespace OpenSim.Scripting 32namespace OpenSim.Region.Enviorment.Scripting
33{ 33{
34 public class ScriptManager 34 public class ScriptManager
35 { 35 {