* SimpleApp is dead, long live OpenSim.Region.Examples.SimpleModule

* This module more or less crashes every region in the instance if you enable it by moving it from local /bin to global /bin
* But hey, it crashes in lots of interesting ways.
0.6.0-stable
lbsa71 2008-03-13 19:55:18 +00:00
parent 12cb0d15f8
commit 8b6d29ff2e
10 changed files with 964 additions and 1157 deletions

View File

@ -1,75 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.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.Collections.Generic;
using libsecondlife;
using OpenSim.Framework;
using OpenSim.Framework.Communications;
using OpenSim.Framework.Communications.Cache;
using OpenSim.Framework.Servers;
using OpenSim.Region.Environment;
using OpenSim.Region.Environment.Scenes;
namespace SimpleApp
{
public class MyWorld : Scene
{
private List<ScenePresence> m_avatars;
public MyWorld(RegionInfo regionInfo, AgentCircuitManager authen, PermissionManager permissionManager,
CommunicationsManager commsMan, SceneCommunicationService sceneGridService,
AssetCache assetCach, StorageManager storeMan, BaseHttpServer httpServer,
ModuleLoader moduleLoader, bool physicalPrim, bool ChildGetTasks)
: base(
regionInfo, authen, permissionManager, commsMan, sceneGridService, assetCach, storeMan, httpServer,
moduleLoader, false, true, false)
{
m_avatars = new List<ScenePresence>();
}
public override void LoadWorldMap()
{
}
public override void AddNewClient(IClientAPI client, bool child)
{
SubscribeToClientEvents(client);
ScenePresence avatar = CreateAndAddScenePresence(client, child);
avatar.AbsolutePosition = new LLVector3(128, 128, 26);
LLVector3 pos = new LLVector3(128, 128, 128);
client.OnCompleteMovementToRegion +=
delegate() { client.SendChatMessage("Welcome to My World.", 1, pos, "System", LLUUID.Zero); };
client.SendRegionHandshake(m_regInfo);
}
}
}

View File

@ -1,221 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.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.IO;
using System.Net;
using libsecondlife;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Framework.Communications.Cache;
using OpenSim.Framework.Console;
using OpenSim.Region.ClientStack;
using OpenSim.Region.Communications.Local;
using OpenSim.Region.Environment;
using OpenSim.Region.Environment.Scenes;
using OpenSim.Region.Physics.Manager;
namespace SimpleApp
{
internal class Program : RegionApplicationBase, conscmd_callback
{
private ModuleLoader m_moduleLoader;
private IConfigSource m_config = null;
private string m_userPlugin = "OpenSim.Framework.Data.SQLite.dll";
private string m_inventoryPlugin = "OpenSim.Framework.Data.SQLite.dll";
protected override ConsoleBase CreateConsole()
{
return new ConsoleBase("SimpleApp", this);
}
protected override void Initialize()
{
m_networkServersInfo = new NetworkServersInfo(1000, 1000);
m_httpServerPort = m_networkServersInfo.HttpListenerPort;
LocalAssetServer assetServer = new LocalAssetServer();
m_assetCache = new AssetCache(assetServer);
}
public void Run()
{
StartConsole();
StartUp();
LocalInventoryService inventoryService = new LocalInventoryService();
inventoryService.AddPlugin(m_inventoryPlugin);
LocalUserServices userService =
new LocalUserServices(m_networkServersInfo, m_networkServersInfo.DefaultHomeLocX,
m_networkServersInfo.DefaultHomeLocY, inventoryService);
userService.AddPlugin(m_userPlugin);
LocalBackEndServices backendService = new LocalBackEndServices();
CommunicationsLocal localComms =
new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, userService, inventoryService,
backendService, backendService, false);
m_commsManager = localComms;
LocalLoginService loginService =
new LocalLoginService(
userService, String.Empty, localComms, m_networkServersInfo, false);
loginService.OnLoginToRegion += backendService.AddNewSession;
m_httpServer.AddXmlRPCHandler("login_to_simulator", loginService.XmlRpcLoginMethod);
m_console.Notice(m_console.LineInfo);
IPEndPoint internalEndPoint =
new IPEndPoint(IPAddress.Parse("127.0.0.1"), (int) m_networkServersInfo.HttpListenerPort);
RegionInfo regionInfo = new RegionInfo(1000, 1000, internalEndPoint, "localhost");
regionInfo.DataStore = "simpleapp_datastore.yap";
UDPServer udpServer;
m_moduleLoader = new ModuleLoader(m_config);
m_moduleLoader.LoadDefaultSharedModules();
Scene scene = SetupScene(regionInfo, out udpServer, false);
m_moduleLoader.InitialiseSharedModules(scene);
scene.SetModuleInterfaces();
scene.StartTimer();
m_sceneManager.Add(scene);
m_moduleLoader.PostInitialise();
m_moduleLoader.ClearCache();
udpServer.ServerListener();
LLVector3 pos = new LLVector3(110, 129, 27);
SceneObjectGroup sceneObject =
new CpuCounterObject(scene, regionInfo.RegionHandle, LLUUID.Zero, scene.PrimIDAllocate(),
pos + new LLVector3(1f, 1f, 1f));
scene.AddEntity(sceneObject);
for (int i = 0; i < 27; i++)
{
LLVector3 posOffset = new LLVector3((i%3)*4, (i%9)/3*4, (i/9)*4);
ComplexObject complexObject =
new ComplexObject(scene, regionInfo.RegionHandle, LLUUID.Zero, scene.PrimIDAllocate(),
pos + posOffset);
scene.AddEntity(complexObject);
}
for (int i = 0; i < 2; i++)
{
MyNpcCharacter m_character = new MyNpcCharacter(scene.EventManager);
scene.AddNewClient(m_character, false);
}
List<ScenePresence> avatars = scene.GetAvatars();
foreach (ScenePresence avatar in avatars)
{
avatar.AbsolutePosition =
new LLVector3((float) Util.RandomClass.Next(100, 200), (float) Util.RandomClass.Next(30, 200), 2);
}
DirectoryInfo dirInfo = new DirectoryInfo(".");
float x = 0;
float z = 0;
foreach (FileInfo fileInfo in dirInfo.GetFiles())
{
LLVector3 filePos = new LLVector3(100 + x, 129, 27 + z);
x = x + 2;
if (x > 50)
{
x = 0;
z = z + 2;
}
FileSystemObject fileObject = new FileSystemObject(scene, fileInfo, filePos);
scene.AddEntity(fileObject);
}
m_console.Notice("Press enter to quit.");
m_console.ReadLine();
}
protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager,
AgentCircuitManager circuitManager)
{
PermissionManager permissionManager = new PermissionManager();
SceneCommunicationService sceneGridService = new SceneCommunicationService(m_commsManager);
return
new MyWorld(regionInfo, circuitManager, permissionManager, m_commsManager, sceneGridService,
m_assetCache, storageManager, m_httpServer,
new ModuleLoader(m_config), true, false);
}
protected override StorageManager CreateStorageManager(string connectionstring)
{
return new StorageManager("OpenSim.DataStore.NullStorage.dll", "simpleapp.yap", false);
}
protected override PhysicsScene GetPhysicsScene()
{
return GetPhysicsScene("basicphysics", "Meshmerizer");
}
#region conscmd_callback Members
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
}
public override void Show(string ShowWhat)
{
base.Show(ShowWhat);
}
#endregion
private static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
Program app = new Program();
app.Run();
}
}
}

View File

@ -1,64 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.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.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly : AssemblyTitle("SimpleApp")]
[assembly : AssemblyDescription("")]
[assembly : AssemblyConfiguration("")]
[assembly : AssemblyCompany("OpenSimulator.org")]
[assembly : AssemblyProduct("SimpleApp")]
[assembly : AssemblyCopyright("Copyright © OpenSimulator Developers 2007-2008")]
[assembly : AssemblyTrademark("")]
[assembly : AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly : ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly : Guid("a5cfa45f-5acf-4b2e-9c50-1dd1fd7608ee")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly : AssemblyVersion("1.0.0.0")]
[assembly : AssemblyFileVersion("1.0.0.0")]

View File

@ -30,23 +30,38 @@ using libsecondlife;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Environment.Scenes;
namespace SimpleApp namespace OpenSim.Region.Examples.SimpleModule
{ {
public class ComplexObject : SceneObjectGroup public class ComplexObject : SceneObjectGroup
{ {
private LLQuaternion m_rotationDirection; private readonly LLQuaternion m_rotationDirection;
protected override bool InSceneBackup
{
get
{
return false;
}
}
private class RotatingWheel : SceneObjectPart private class RotatingWheel : SceneObjectPart
{ {
private LLQuaternion m_rotationDirection; private readonly LLQuaternion m_rotationDirection;
public RotatingWheel()
{
}
public RotatingWheel(ulong regionHandle, SceneObjectGroup parent, LLUUID ownerID, uint localID, public RotatingWheel(ulong regionHandle, SceneObjectGroup parent, LLUUID ownerID, uint localID,
LLVector3 groupPosition, LLVector3 offsetPosition, LLQuaternion rotationDirection) LLVector3 groupPosition, LLVector3 offsetPosition, LLQuaternion rotationDirection)
: base( : base(
regionHandle, parent, ownerID, localID, PrimitiveBaseShape.CreateCylinder(0.5f, 0.2f), groupPosition, offsetPosition regionHandle, parent, ownerID, localID, PrimitiveBaseShape.Default, groupPosition, offsetPosition
) )
{ {
m_rotationDirection = rotationDirection; m_rotationDirection = rotationDirection;
Flags |= LLObject.ObjectFlags.Touch;
} }
public override void UpdateMovement() public override void UpdateMovement()
@ -62,6 +77,10 @@ namespace SimpleApp
base.UpdateMovement(); base.UpdateMovement();
} }
public ComplexObject()
{
}
public ComplexObject(Scene scene, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos) public ComplexObject(Scene scene, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos)
: base(scene, regionHandle, ownerID, localID, pos, PrimitiveBaseShape.Default) : base(scene, regionHandle, ownerID, localID, pos, PrimitiveBaseShape.Default)
@ -89,12 +108,15 @@ namespace SimpleApp
new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(-0.75f, 0, 0), new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(-0.75f, 0, 0),
new LLQuaternion(0, -0.5f, -0.05f))); new LLQuaternion(0, -0.5f, -0.05f)));
RootPart.Flags |= LLObject.ObjectFlags.Touch;
UpdateParentIDs(); UpdateParentIDs();
} }
public override void OnGrabPart(SceneObjectPart part, LLVector3 offsetPos, IClientAPI remoteClient) public override void OnGrabPart(SceneObjectPart part, LLVector3 offsetPos, IClientAPI remoteClient)
{ {
m_parts.Remove(part.UUID); m_parts.Remove(part.UUID);
remoteClient.SendKillObject(m_regionHandle, part.LocalId); remoteClient.SendKillObject(m_regionHandle, part.LocalId);
remoteClient.AddMoney(1); remoteClient.AddMoney(1);
remoteClient.SendChatMessage("Poof!", 1, AbsolutePosition, "Party Party", LLUUID.Zero); remoteClient.SendChatMessage("Poof!", 1, AbsolutePosition, "Party Party", LLUUID.Zero);

View File

@ -32,10 +32,18 @@ using libsecondlife;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Environment.Scenes;
namespace SimpleApp namespace OpenSim.Region.Examples.SimpleModule
{ {
public class CpuCounterObject : SceneObjectGroup public class CpuCounterObject : SceneObjectGroup
{ {
protected override bool InSceneBackup
{
get
{
return false;
}
}
private PerformanceCounter m_counter; private PerformanceCounter m_counter;
public CpuCounterObject(Scene world, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos) public CpuCounterObject(Scene world, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos)
@ -52,7 +60,8 @@ namespace SimpleApp
{ {
float cpu = m_counter.NextValue()/40f; float cpu = m_counter.NextValue()/40f;
LLVector3 size = new LLVector3(cpu, cpu, cpu); LLVector3 size = new LLVector3(cpu, cpu, cpu);
//rootPrimitive.ResizeGoup( size );
RootPart.Resize( size );
base.UpdateMovement(); base.UpdateMovement();
} }

View File

@ -31,22 +31,23 @@ using libsecondlife;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Environment.Scenes;
namespace SimpleApp namespace OpenSim.Region.Examples.SimpleModule
{ {
public class FileSystemObject : SceneObjectGroup public class FileSystemObject : SceneObjectGroup
{ {
public FileSystemObject(Scene world, FileInfo fileInfo, LLVector3 pos) public FileSystemObject(Scene world, FileInfo fileInfo, LLVector3 pos)
: base(world, world.RegionInfo.RegionHandle, LLUUID.Zero, world.NextLocalId, pos, PrimitiveBaseShape.Default) : base(world, world.RegionInfo.RegionHandle, LLUUID.Zero, world.NextLocalId, pos, PrimitiveBaseShape.Default)
{ {
//float size = (float) Math.Pow((double) fileInfo.Length, (double) 1/3)/5;
// rootPrimitive.ResizeGoup(new LLVector3(size, size, size));
Text = fileInfo.Name; Text = fileInfo.Name;
ScheduleGroupForFullUpdate(); ScheduleGroupForFullUpdate();
} }
public override void Update() protected override bool InSceneBackup
{ {
base.Update(); get
{
return false;
}
} }
} }
} }

View File

@ -34,7 +34,7 @@ using libsecondlife.Packets;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Environment.Scenes;
namespace SimpleApp namespace OpenSim.Region.Examples.SimpleModule
{ {
public class MyNpcCharacter : IClientAPI public class MyNpcCharacter : IClientAPI
{ {
@ -350,10 +350,10 @@ namespace SimpleApp
{ {
} }
public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID,
PrimitiveBaseShape primShape, LLVector3 pos, uint flags, PrimitiveBaseShape primShape, LLVector3 pos, uint flags,
LLUUID objectID, LLUUID ownerID, string text, byte[] color, LLUUID objectID, LLUUID ownerID, string text, byte[] color,
uint parentID, uint parentID,
byte[] particleSystem, LLQuaternion rotation, byte clickAction, byte[] textureanimation) byte[] particleSystem, LLQuaternion rotation, byte clickAction, byte[] textureanimation)
{ {
} }
public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID,

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Region.Examples.SimpleModule")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OpenSim.Region.Examples.SimpleModule")]
[assembly: AssemblyCopyright("Copyright © 2008")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("f0caca77-7818-4a43-9200-0a8548009a05")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,114 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using libsecondlife;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Region.Environment.Interfaces;
using OpenSim.Region.Environment.Scenes;
namespace OpenSim.Region.Examples.SimpleModule
{
public class RegionModule : IRegionModule
{
#region IRegionModule Members
private Scene m_scene;
public void Initialise(Scene scene, IConfigSource source)
{
m_scene = scene;
}
public void PostInitialise()
{
RegionInfo regionInfo = m_scene.RegionInfo;
LLVector3 pos = new LLVector3(110, 129, 27);
AddCpuCounter(regionInfo, pos);
AddComplexObjects(regionInfo, pos);
AddAvatars();
AddFileSystemObjects();
}
private void AddFileSystemObjects()
{
DirectoryInfo dirInfo = new DirectoryInfo(".");
float x = 0;
float z = 0;
foreach (FileInfo fileInfo in dirInfo.GetFiles())
{
LLVector3 filePos = new LLVector3(100 + x, 129, 27 + z);
x = x + 2;
if (x > 50)
{
x = 0;
z = z + 2;
}
FileSystemObject fileObject = new FileSystemObject(m_scene, fileInfo, filePos);
m_scene.AddEntity(fileObject);
}
}
private void AddAvatars()
{
for (int i = 0; i < 2; i++)
{
MyNpcCharacter m_character = new MyNpcCharacter(m_scene.EventManager);
m_scene.AddNewClient(m_character, false);
}
List<ScenePresence> avatars = m_scene.GetAvatars();
foreach (ScenePresence avatar in avatars)
{
avatar.AbsolutePosition =
new LLVector3((float)Util.RandomClass.Next(100, 200), (float)Util.RandomClass.Next(30, 200), 2);
}
}
private void AddComplexObjects(RegionInfo regionInfo, LLVector3 pos)
{
int objs = 3;
for (int i = 0; i < (objs*objs*objs); i++)
{
LLVector3 posOffset = new LLVector3((i % objs) * 4, (i % (objs*objs)) / ( objs ) * 4, (i / (objs*objs)) * 4);
ComplexObject complexObject =
new ComplexObject(m_scene, regionInfo.RegionHandle, LLUUID.Zero, m_scene.PrimIDAllocate(),
pos + posOffset);
m_scene.AddEntity(complexObject);
}
}
private void AddCpuCounter(RegionInfo regionInfo, LLVector3 pos)
{
SceneObjectGroup sceneObject =
new CpuCounterObject(m_scene, regionInfo.RegionHandle, LLUUID.Zero, m_scene.PrimIDAllocate(),
pos + new LLVector3(1f, 1f, 1f));
m_scene.AddEntity(sceneObject);
}
public void Close()
{
m_scene = null;
}
public string Name
{
get { return GetType().AssemblyQualifiedName; }
}
public bool IsSharedModule
{
get { return false; }
}
#endregion
}
}

View File

@ -959,41 +959,26 @@
<!-- Scene Server API Example Apps --> <!-- Scene Server API Example Apps -->
<Project name="SimpleApp" path="OpenSim/Region/Examples/SimpleApp" type="Exe"> <Project name="OpenSim.Region.Examples.SimpleModule" path="OpenSim/Region/Examples/SimpleModule" type="Library">
<Configuration name="Debug"> <Configuration name="Debug">
<Options> <Options>
<OutputPath>../../../../bin/</OutputPath> <OutputPath>bin/</OutputPath>
</Options> </Options>
</Configuration> </Configuration>
<Configuration name="Release"> <Configuration name="Release">
<Options> <Options>
<OutputPath>../../../../bin/</OutputPath> <OutputPath>bin/</OutputPath>
</Options> </Options>
</Configuration> </Configuration>
<ReferencePath>../../../../bin/</ReferencePath> <ReferencePath>../../../../bin/</ReferencePath>
<Reference name="libsecondlife.dll"/> <Reference name="libsecondlife.dll"/>
<Reference name="Axiom.MathLib.dll" localCopy="false"/>
<Reference name="System" localCopy="false"/> <Reference name="System" localCopy="false"/>
<Reference name="System.Data"/>
<Reference name="System.Xml"/>
<Reference name="OpenSim.Framework.Console"/>
<Reference name="OpenSim.Framework"/> <Reference name="OpenSim.Framework"/>
<Reference name="OpenSim.Framework.Data"/>
<Reference name="OpenSim.Region.Physics.Manager"/>
<Reference name="XMLRPC.dll"/>
<Reference name="OpenSim.Framework.Servers"/>
<Reference name="OpenSim.Framework.Statistics"/>
<Reference name="OpenSim.Framework.Communications"/>
<Reference name="OpenSim.Region.Communications.Local"/>
<Reference name="OpenSim.Region.ClientStack"/>
<Reference name="OpenSim.Region.Environment"/> <Reference name="OpenSim.Region.Environment"/>
<Reference name="OpenSim.Region.Terrain.BasicTerrain"/>
<Reference name="Nini.dll" /> <Reference name="Nini.dll" />
<Reference name="log4net"/> <Reference name="log4net"/>
<Files> <Files>
<Match pattern="*.cs" recurse="true"/> <Match pattern="*.cs" recurse="true"/>
</Files> </Files>