diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Environment/OpenSim.Region.Environment.csproj | 3 | ||||
-rw-r--r-- | OpenSim/Region/Environment/OpenSim.Region.Environment.dll.build | 1 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.Scripting.cs | 184 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/scripting/Engines/CSharpScriptEngine.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/scripting/Engines/JScriptEngine.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/scripting/Engines/JSharpScriptEngine.cs | 2 | ||||
-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.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/scripting/ScriptManager.cs | 2 |
10 files changed, 43 insertions, 202 deletions
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 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using System.IO; | ||
32 | using System.Reflection; | ||
33 | using OpenSim.Framework; | ||
34 | using OpenSim.Framework.Interfaces; | ||
35 | using OpenSim.Framework.Types; | ||
36 | using libsecondlife; | ||
37 | |||
38 | namespace 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; | |||
44 | using OpenSim.Region.Caches; | 44 | using OpenSim.Region.Caches; |
45 | using OpenSim.Region.Environment; | 45 | using OpenSim.Region.Environment; |
46 | using OpenSim.Framework.Servers; | 46 | using OpenSim.Framework.Servers; |
47 | using OpenSim.Scripting; | 47 | using OpenSim.Region.Enviorment.Scripting; |
48 | using OpenSim.Region.Capabilities; | 48 | using OpenSim.Region.Capabilities; |
49 | using Caps = OpenSim.Region.Capabilities.Caps; | 49 | using 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; | |||
34 | using System.CodeDom.Compiler; | 34 | using System.CodeDom.Compiler; |
35 | using Microsoft.CSharp; | 35 | using Microsoft.CSharp; |
36 | 36 | ||
37 | namespace OpenSim.Scripting | 37 | namespace 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; | |||
34 | using System.CodeDom.Compiler; | 34 | using System.CodeDom.Compiler; |
35 | using Microsoft.JScript; | 35 | using Microsoft.JScript; |
36 | 36 | ||
37 | namespace OpenSim.Scripting | 37 | namespace 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; | |||
34 | using System.CodeDom.Compiler; | 34 | using System.CodeDom.Compiler; |
35 | using Microsoft.VJSharp; | 35 | using Microsoft.VJSharp; |
36 | 36 | ||
37 | namespace OpenSim.Scripting | 37 | namespace 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 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Text; | 30 | using System.Text; |
31 | using OpenSim.Framework.Types; | ||
32 | 31 | ||
33 | using libsecondlife; | 32 | using OpenSim.Framework.Console; |
34 | namespace OpenSim.Framework.Interfaces | 33 | using OpenSim.Framework; |
34 | using OpenSim.Region.Environment; | ||
35 | using OpenSim.Region.Environment.Scenes; | ||
36 | |||
37 | namespace 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; | |||
32 | using OpenSim.Region.Environment.Scenes; | 32 | using OpenSim.Region.Environment.Scenes; |
33 | using OpenSim.Framework.Console; | 33 | using OpenSim.Framework.Console; |
34 | 34 | ||
35 | namespace OpenSim.Scripting | 35 | namespace 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; | |||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Text; | 30 | using System.Text; |
31 | 31 | ||
32 | namespace OpenSim.Scripting | 32 | namespace OpenSim.Region.Enviorment.Scripting |
33 | { | 33 | { |
34 | public class ScriptManager | 34 | public class ScriptManager |
35 | { | 35 | { |