Changed so that a bin\ScriptEngines\ directory will be searched for scripting Engines.

Added the work in progress JVM scripting engine.
This commit is contained in:
MW
2007-04-11 09:45:48 +00:00
parent 435d61661b
commit ffd7a6b8c2
57 changed files with 3720 additions and 1857 deletions

View File

@@ -199,6 +199,9 @@
<Compile Include="world\WorldPacketHandlers.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="world\WorldScripting.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="world\scripting\IScript.cs">
<SubType>Code</SubType>
</Compile>

View File

@@ -1,82 +1,83 @@
<?xml version="1.0" ?>
<project name="OpenSim.RegionServer" default="build">
<target name="build">
<echo message="Build Directory is ${project::get-base-directory()}/${build.dir}" />
<mkdir dir="${project::get-base-directory()}/${build.dir}" />
<copy todir="${project::get-base-directory()}/${build.dir}">
<fileset basedir="${project::get-base-directory()}">
</fileset>
</copy>
<csc target="library" debug="${build.debug}" unsafe="False" define="TRACE" output="${project::get-base-directory()}/${build.dir}/${project::get-name()}.dll">
<resources prefix="OpenSim.RegionServer" dynamicprefix="true" >
</resources>
<sources failonempty="true">
<include name="AgentAssetUpload.cs" />
<include name="ConsoleCmds.cs" />
<include name="Grid.cs" />
<include name="OpenSimMain.cs" />
<include name="OpenSimNetworkHandler.cs" />
<include name="PacketServer.cs" />
<include name="QueItem.cs" />
<include name="RegionInfo.cs" />
<include name="SimClient.cs" />
<include name="SimConsole.cs" />
<include name="VersionInfo.cs" />
<include name="Assets/AssetCache.cs" />
<include name="Assets/InventoryCache.cs" />
<include name="CAPS/AdminWebFront.cs" />
<include name="types/Mesh.cs" />
<include name="types/Triangle.cs" />
<include name="world/Avatar.cs" />
<include name="world/AvatarAnimations.cs" />
<include name="world/AvatarClient.cs" />
<include name="world/AvatarUpdate.cs" />
<include name="world/Entity.cs" />
<include name="world/Primitive.cs" />
<include name="world/Primitive2.cs" />
<include name="world/ScriptEngine.cs" />
<include name="world/SurfacePatch.cs" />
<include name="world/World.cs" />
<include name="world/WorldPacketHandlers.cs" />
<include name="world/scripting/IScript.cs" />
<include name="world/scripting/IScriptContext.cs" />
<include name="world/scripting/IScriptEntity.cs" />
<include name="world/scripting/IScriptHandler.cs" />
<include name="world/scripting/Script.cs" />
<include name="world/scripting/ScriptFactory.cs" />
<include name="world/scripting/Scripts/FollowRandomAvatar.cs" />
</sources>
<references basedir="${project::get-base-directory()}">
<lib>
<include name="${project::get-base-directory()}" />
<include name="${project::get-base-directory()}/${build.dir}" />
</lib>
<include name="System.dll" />
<include name="System.Xml.dll" />
<include name="../bin/libsecondlife.dll" />
<include name="../bin/Axiom.MathLib.dll" />
<include name="../bin/Db4objects.Db4o.dll" />
<include name="../bin/OpenSim.Terrain.BasicTerrain.dll" />
<include name="../bin/OpenSim.Framework.dll" />
<include name="../bin/OpenSim.Framework.Console.dll" />
<include name="../bin/OpenSim.GenericConfig.Xml.dll" />
<include name="../bin/OpenSim.Physics.Manager.dll" />
<include name="../bin/OpenSim.Servers.dll" />
</references>
</csc>
<echo message="Copying from [${project::get-base-directory()}/${build.dir}/] to [${project::get-base-directory()}/../bin/" />
<mkdir dir="${project::get-base-directory()}/../bin/"/>
<copy todir="${project::get-base-directory()}/../bin/">
<fileset basedir="${project::get-base-directory()}/${build.dir}/" >
<include name="*.dll"/>
<include name="*.exe"/>
</fileset>
</copy>
</target>
<target name="clean">
<delete dir="${bin.dir}" failonerror="false" />
<delete dir="${obj.dir}" failonerror="false" />
</target>
<target name="doc" description="Creates documentation.">
</target>
</project>
<?xml version="1.0" ?>
<project name="OpenSim.RegionServer" default="build">
<target name="build">
<echo message="Build Directory is ${project::get-base-directory()}/${build.dir}" />
<mkdir dir="${project::get-base-directory()}/${build.dir}" />
<copy todir="${project::get-base-directory()}/${build.dir}">
<fileset basedir="${project::get-base-directory()}">
</fileset>
</copy>
<csc target="library" debug="${build.debug}" unsafe="False" define="TRACE;DEBUG" output="${project::get-base-directory()}/${build.dir}/${project::get-name()}.dll">
<resources prefix="OpenSim.RegionServer" dynamicprefix="true" >
</resources>
<sources failonempty="true">
<include name="AgentAssetUpload.cs" />
<include name="ConsoleCmds.cs" />
<include name="Grid.cs" />
<include name="OpenSimMain.cs" />
<include name="OpenSimNetworkHandler.cs" />
<include name="PacketServer.cs" />
<include name="QueItem.cs" />
<include name="RegionInfo.cs" />
<include name="SimClient.cs" />
<include name="SimConsole.cs" />
<include name="VersionInfo.cs" />
<include name="Assets/AssetCache.cs" />
<include name="Assets/InventoryCache.cs" />
<include name="CAPS/AdminWebFront.cs" />
<include name="types/Mesh.cs" />
<include name="types/Triangle.cs" />
<include name="world/Avatar.cs" />
<include name="world/AvatarAnimations.cs" />
<include name="world/AvatarClient.cs" />
<include name="world/AvatarUpdate.cs" />
<include name="world/Entity.cs" />
<include name="world/Primitive.cs" />
<include name="world/Primitive2.cs" />
<include name="world/ScriptEngine.cs" />
<include name="world/SurfacePatch.cs" />
<include name="world/World.cs" />
<include name="world/WorldPacketHandlers.cs" />
<include name="world/WorldScripting.cs" />
<include name="world/scripting/IScript.cs" />
<include name="world/scripting/IScriptContext.cs" />
<include name="world/scripting/IScriptEntity.cs" />
<include name="world/scripting/IScriptHandler.cs" />
<include name="world/scripting/Script.cs" />
<include name="world/scripting/ScriptFactory.cs" />
<include name="world/scripting/Scripts/FollowRandomAvatar.cs" />
</sources>
<references basedir="${project::get-base-directory()}">
<lib>
<include name="${project::get-base-directory()}" />
<include name="${project::get-base-directory()}/${build.dir}" />
</lib>
<include name="System.dll" />
<include name="System.Xml.dll" />
<include name="../bin/libsecondlife.dll" />
<include name="../bin/Axiom.MathLib.dll" />
<include name="../bin/Db4objects.Db4o.dll" />
<include name="../bin/OpenSim.Terrain.BasicTerrain.dll" />
<include name="../bin/OpenSim.Framework.dll" />
<include name="../bin/OpenSim.Framework.Console.dll" />
<include name="../bin/OpenSim.GenericConfig.Xml.dll" />
<include name="../bin/OpenSim.Physics.Manager.dll" />
<include name="../bin/OpenSim.Servers.dll" />
</references>
</csc>
<echo message="Copying from [${project::get-base-directory()}/${build.dir}/] to [${project::get-base-directory()}/../bin/" />
<mkdir dir="${project::get-base-directory()}/../bin/"/>
<copy todir="${project::get-base-directory()}/../bin/">
<fileset basedir="${project::get-base-directory()}/${build.dir}/" >
<include name="*.dll"/>
<include name="*.exe"/>
</fileset>
</copy>
</target>
<target name="clean">
<delete dir="${bin.dir}" failonerror="false" />
<delete dir="${obj.dir}" failonerror="false" />
</target>
<target name="doc" description="Creates documentation.">
</target>
</project>

View File

@@ -39,7 +39,7 @@ using System.Collections.Generic;
using libsecondlife;
using libsecondlife.Packets;
using OpenSim.world;
using OpenSim.Terrain;
using OpenSim.Terrain;
using OpenSim.Framework.Interfaces;
using OpenSim.UserServer;
using OpenSim.Assets;

View File

@@ -18,7 +18,7 @@ using OpenSim.Terrain;
namespace OpenSim.world
{
public partial class World : ILocalStorageReceiver
public partial class World : ILocalStorageReceiver, IScriptAPI
{
public object LockPhysicsEngine = new object();
public Dictionary<libsecondlife.LLUUID, Entity> Entities;
@@ -66,6 +66,7 @@ namespace OpenSim.world
// Scripts = new ScriptEngine(this);
Avatar.LoadAnims();
this.SetDefaultScripts();
this.LoadScriptEngines();
}
public void AddScript(Entity entity, Script script)
@@ -86,8 +87,28 @@ namespace OpenSim.world
//Console.WriteLine("searching for script to add: " + substring);
ScriptFactory scriptFactory;
if (this.m_scripts.TryGetValue(substring, out scriptFactory))
Console.WriteLine("script string is " + substring);
if(substring.StartsWith("<ScriptEngine:"))
{
string substring1 = "";
string script = "";
Console.WriteLine("searching for script engine");
substring1 = substring.Remove(0, 14);
int dev = substring1.IndexOf(',');
string sEngine = substring1.Substring(0, dev);
substring1 = substring1.Remove(0, dev+1);
int end = substring1.IndexOf('>');
string sName = substring1.Substring(0, end);
Console.WriteLine(" script info : " + sEngine + " , " + sName);
int startscript = substring.IndexOf('>');
script = substring.Remove(0, startscript + 1);
Console.WriteLine("script data is " + script);
if (this.scriptEngines.ContainsKey(sEngine))
{
this.scriptEngines[sEngine].LoadScript(script, sName, entity.localid);
}
}
else if (this.m_scripts.TryGetValue(substring, out scriptFactory))
{
//Console.WriteLine("added script");
this.AddScript(entity, scriptFactory());
@@ -149,7 +170,10 @@ namespace OpenSim.world
{
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
@@ -255,7 +279,9 @@ namespace OpenSim.world
float[] map = this.localStorage.LoadWorld();
if (map == null)
{
Console.WriteLine("creating new terrain");
this.Terrain.hills();
//this.localStorage.SaveMap(this.Terrain.map);
}
else