Files
opensim/OpenSim/Region/Examples/SimpleModule/RegionModule.cs
lbsa71 8b6d29ff2e * 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.
2008-03-13 19:55:18 +00:00

115 lines
3.4 KiB
C#

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
}
}