Update svn properties.

0.6.5-rc1
Jeff Ames 2009-04-01 14:50:18 +00:00
parent a1fe54baa0
commit 99cfcf405b
8 changed files with 615 additions and 615 deletions

View File

@ -1,12 +1,12 @@
<Addin id="WindModule.Default.WindModels" version="1.0"> <Addin id="WindModule.Default.WindModels" version="1.0">
<Runtime> <Runtime>
<Import assembly="OpenSim.Region.CoreModules.dll"/> <Import assembly="OpenSim.Region.CoreModules.dll"/>
</Runtime> </Runtime>
<Dependencies> <Dependencies>
<Addin id="OpenSim" version="0.5" /> <Addin id="OpenSim" version="0.5" />
</Dependencies> </Dependencies>
<Extension path = "/OpenSim/WindModule"> <Extension path = "/OpenSim/WindModule">
<WindModel id="ConfigurableWind" type="OpenSim.Region.CoreModules.World.Wind.Plugins.ConfigurableWind" /> <WindModel id="ConfigurableWind" type="OpenSim.Region.CoreModules.World.Wind.Plugins.ConfigurableWind" />
<WindModel id="SimpleRandomWind" type="OpenSim.Region.CoreModules.World.Wind.Plugins.SimpleRandomWind" /> <WindModel id="SimpleRandomWind" type="OpenSim.Region.CoreModules.World.Wind.Plugins.SimpleRandomWind" />
</Extension> </Extension>
</Addin> </Addin>

View File

@ -1,56 +1,56 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Nini.Config; using Nini.Config;
using OpenSim.Framework; using OpenSim.Framework;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.World.Wind namespace OpenSim.Region.CoreModules.World.Wind
{ {
public interface IWindModelPlugin : IPlugin public interface IWindModelPlugin : IPlugin
{ {
/// <summary> /// <summary>
/// Brief description of this plugin's wind model /// Brief description of this plugin's wind model
/// </summary> /// </summary>
string Description { get; } string Description { get; }
/// <summary> /// <summary>
/// Provides access to the wind configuration, if any. /// Provides access to the wind configuration, if any.
/// </summary> /// </summary>
void WindConfig(Scene scene, IConfig windConfig); void WindConfig(Scene scene, IConfig windConfig);
/// <summary> /// <summary>
/// Update wind. /// Update wind.
/// </summary> /// </summary>
void WindUpdate(uint frame); void WindUpdate(uint frame);
/// <summary> /// <summary>
/// Returns the wind vector at the given local region coordinates. /// Returns the wind vector at the given local region coordinates.
/// </summary> /// </summary>
Vector3 WindSpeed(float x, float y, float z); Vector3 WindSpeed(float x, float y, float z);
/// <summary> /// <summary>
/// Generate a 16 x 16 Vector2 array of wind speeds for LL* based viewers /// Generate a 16 x 16 Vector2 array of wind speeds for LL* based viewers
/// </summary> /// </summary>
/// <returns>Must return a Vector2[256]</returns> /// <returns>Must return a Vector2[256]</returns>
Vector2[] WindLLClientArray(); Vector2[] WindLLClientArray();
/// <summary> /// <summary>
/// Retrieve a list of parameter/description pairs. /// Retrieve a list of parameter/description pairs.
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Dictionary<string, string> WindParams(); Dictionary<string, string> WindParams();
/// <summary> /// <summary>
/// Set the specified parameter /// Set the specified parameter
/// </summary> /// </summary>
void WindParamSet(string param, float value); void WindParamSet(string param, float value);
/// <summary> /// <summary>
/// Get the specified parameter /// Get the specified parameter
/// </summary> /// </summary>
float WindParamGet(string param); float WindParamGet(string param);
} }
} }

View File

@ -1,211 +1,211 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Region.CoreModules.World.Wind; using OpenSim.Region.CoreModules.World.Wind;
namespace OpenSim.Region.CoreModules.World.Wind.Plugins namespace OpenSim.Region.CoreModules.World.Wind.Plugins
{ {
class ConfigurableWind : Mono.Addins.TypeExtensionNode, IWindModelPlugin class ConfigurableWind : Mono.Addins.TypeExtensionNode, IWindModelPlugin
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private Vector2[] m_windSpeeds = new Vector2[16 * 16]; private Vector2[] m_windSpeeds = new Vector2[16 * 16];
private Random m_rndnums = new Random(Environment.TickCount); private Random m_rndnums = new Random(Environment.TickCount);
private float m_avgStrength = 5.0f; // Average magnitude of the wind vector private float m_avgStrength = 5.0f; // Average magnitude of the wind vector
private float m_avgDirection = 0.0f; // Average direction of the wind in degrees private float m_avgDirection = 0.0f; // Average direction of the wind in degrees
private float m_varStrength = 5.0f; // Max Strength Variance private float m_varStrength = 5.0f; // Max Strength Variance
private float m_varDirection = 30.0f;// Max Direction Variance private float m_varDirection = 30.0f;// Max Direction Variance
private float m_rateChange = 1.0f; // private float m_rateChange = 1.0f; //
private Vector2 m_curPredominateWind = new Vector2(); private Vector2 m_curPredominateWind = new Vector2();
#region IPlugin Members #region IPlugin Members
public string Version public string Version
{ {
get { return "1.0.0.0"; } get { return "1.0.0.0"; }
} }
public string Name public string Name
{ {
get { return "ConfigurableWind"; } get { return "ConfigurableWind"; }
} }
public void Initialise() public void Initialise()
{ {
} }
#endregion #endregion
#region IDisposable Members #region IDisposable Members
public void Dispose() public void Dispose()
{ {
m_windSpeeds = null; m_windSpeeds = null;
} }
#endregion #endregion
#region IWindModelPlugin Members #region IWindModelPlugin Members
public void WindConfig(OpenSim.Region.Framework.Scenes.Scene scene, Nini.Config.IConfig windConfig) public void WindConfig(OpenSim.Region.Framework.Scenes.Scene scene, Nini.Config.IConfig windConfig)
{ {
if( windConfig != null ) if( windConfig != null )
{ {
// Uses strength value if avg_strength not specified // Uses strength value if avg_strength not specified
m_avgStrength = windConfig.GetFloat("strength", 5.0F); m_avgStrength = windConfig.GetFloat("strength", 5.0F);
m_avgStrength = windConfig.GetFloat("avg_strength", 5.0F); m_avgStrength = windConfig.GetFloat("avg_strength", 5.0F);
m_avgDirection = windConfig.GetFloat("avg_direction", 0.0F); m_avgDirection = windConfig.GetFloat("avg_direction", 0.0F);
m_varStrength = windConfig.GetFloat("var_strength", 5.0F); m_varStrength = windConfig.GetFloat("var_strength", 5.0F);
m_varDirection = windConfig.GetFloat("var_direction", 30.0F); m_varDirection = windConfig.GetFloat("var_direction", 30.0F);
m_rateChange = windConfig.GetFloat("rate_change", 1.0F); m_rateChange = windConfig.GetFloat("rate_change", 1.0F);
LogSettings(); LogSettings();
} }
} }
public void WindUpdate(uint frame) public void WindUpdate(uint frame)
{ {
double avgAng = m_avgDirection * (Math.PI/180.0f); double avgAng = m_avgDirection * (Math.PI/180.0f);
double varDir = m_varDirection * (Math.PI/180.0f); double varDir = m_varDirection * (Math.PI/180.0f);
// Prevailing wind algorithm // Prevailing wind algorithm
// Inspired by Kanker Greenacre // Inspired by Kanker Greenacre
// TODO: // TODO:
// * This should probably be based on in-world time. // * This should probably be based on in-world time.
// * should probably move all these local variables to class members and constants // * should probably move all these local variables to class members and constants
double time = DateTime.Now.TimeOfDay.Seconds / 86400; double time = DateTime.Now.TimeOfDay.Seconds / 86400;
double theta = time * (2 * Math.PI) * m_rateChange; double theta = time * (2 * Math.PI) * m_rateChange;
double offset = Math.Sin(theta) * Math.Sin(theta*2) * Math.Sin(theta*9) * Math.Cos(theta*4); double offset = Math.Sin(theta) * Math.Sin(theta*2) * Math.Sin(theta*9) * Math.Cos(theta*4);
double windDir = avgAng + (varDir * offset); double windDir = avgAng + (varDir * offset);
offset = Math.Sin(theta) * Math.Sin(theta*4) + (Math.Sin(theta*13) / 3); offset = Math.Sin(theta) * Math.Sin(theta*4) + (Math.Sin(theta*13) / 3);
double windSpeed = m_avgStrength + (m_varStrength * offset); double windSpeed = m_avgStrength + (m_varStrength * offset);
if (windSpeed<0) if (windSpeed<0)
windSpeed=0; windSpeed=0;
m_curPredominateWind.X = (float)Math.Cos(windDir); m_curPredominateWind.X = (float)Math.Cos(windDir);
m_curPredominateWind.Y = (float)Math.Sin(windDir); m_curPredominateWind.Y = (float)Math.Sin(windDir);
m_curPredominateWind.Normalize(); m_curPredominateWind.Normalize();
m_curPredominateWind.X *= (float)windSpeed; m_curPredominateWind.X *= (float)windSpeed;
m_curPredominateWind.Y *= (float)windSpeed; m_curPredominateWind.Y *= (float)windSpeed;
for (int y = 0; y < 16; y++) for (int y = 0; y < 16; y++)
{ {
for (int x = 0; x < 16; x++) for (int x = 0; x < 16; x++)
{ {
m_windSpeeds[y * 16 + x] = m_curPredominateWind; m_windSpeeds[y * 16 + x] = m_curPredominateWind;
} }
} }
} }
public Vector3 WindSpeed(float fX, float fY, float fZ) public Vector3 WindSpeed(float fX, float fY, float fZ)
{ {
return new Vector3(m_curPredominateWind, 0.0f); return new Vector3(m_curPredominateWind, 0.0f);
} }
public Vector2[] WindLLClientArray() public Vector2[] WindLLClientArray()
{ {
return m_windSpeeds; return m_windSpeeds;
} }
public string Description public string Description
{ {
get get
{ {
return "Provides a predominate wind direction that can change within configured variances for direction and speed."; return "Provides a predominate wind direction that can change within configured variances for direction and speed.";
} }
} }
public System.Collections.Generic.Dictionary<string, string> WindParams() public System.Collections.Generic.Dictionary<string, string> WindParams()
{ {
Dictionary<string, string> Params = new Dictionary<string, string>(); Dictionary<string, string> Params = new Dictionary<string, string>();
Params.Add("avgStrength", "average wind strength"); Params.Add("avgStrength", "average wind strength");
Params.Add("avgDirection", "average wind direction in degrees"); Params.Add("avgDirection", "average wind direction in degrees");
Params.Add("varStrength", "allowable variance in wind strength"); Params.Add("varStrength", "allowable variance in wind strength");
Params.Add("varDirection", "allowable variance in wind direction in +/- degrees"); Params.Add("varDirection", "allowable variance in wind direction in +/- degrees");
Params.Add("rateChange", "rate of change"); Params.Add("rateChange", "rate of change");
return Params; return Params;
} }
public void WindParamSet(string param, float value) public void WindParamSet(string param, float value)
{ {
switch (param) switch (param)
{ {
case "avgStrength": case "avgStrength":
m_avgStrength = value; m_avgStrength = value;
break; break;
case "avgDirection": case "avgDirection":
m_avgDirection = value; m_avgDirection = value;
break; break;
case "varStrength": case "varStrength":
m_varStrength = value; m_varStrength = value;
break; break;
case "varDirection": case "varDirection":
m_varDirection = value; m_varDirection = value;
break; break;
case "rateChange": case "rateChange":
m_rateChange = value; m_rateChange = value;
break; break;
} }
} }
public float WindParamGet(string param) public float WindParamGet(string param)
{ {
switch (param) switch (param)
{ {
case "avgStrength": case "avgStrength":
return m_avgStrength; return m_avgStrength;
case "avgDirection": case "avgDirection":
return m_avgDirection; return m_avgDirection;
case "varStrength": case "varStrength":
return m_varStrength; return m_varStrength;
case "varDirection": case "varDirection":
return m_varDirection; return m_varDirection;
case "rateChange": case "rateChange":
return m_rateChange; return m_rateChange;
default: default:
throw new Exception(String.Format("Unknown {0} parameter {1}", this.Name, param)); throw new Exception(String.Format("Unknown {0} parameter {1}", this.Name, param));
} }
} }
#endregion #endregion
private void LogSettings() private void LogSettings()
{ {
m_log.InfoFormat("[ConfigurableWind] Average Strength : {0}", m_avgStrength); m_log.InfoFormat("[ConfigurableWind] Average Strength : {0}", m_avgStrength);
m_log.InfoFormat("[ConfigurableWind] Average Direction : {0}", m_avgDirection); m_log.InfoFormat("[ConfigurableWind] Average Direction : {0}", m_avgDirection);
m_log.InfoFormat("[ConfigurableWind] Varience Strength : {0}", m_varStrength); m_log.InfoFormat("[ConfigurableWind] Varience Strength : {0}", m_varStrength);
m_log.InfoFormat("[ConfigurableWind] Varience Direction : {0}", m_varDirection); m_log.InfoFormat("[ConfigurableWind] Varience Direction : {0}", m_varDirection);
m_log.InfoFormat("[ConfigurableWind] Rate Change : {0}", m_rateChange); m_log.InfoFormat("[ConfigurableWind] Rate Change : {0}", m_rateChange);
} }
#region IWindModelPlugin Members #region IWindModelPlugin Members
#endregion #endregion
} }
} }

View File

@ -1,139 +1,139 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using OpenMetaverse; using OpenMetaverse;
namespace OpenSim.Region.CoreModules.World.Wind.Plugins namespace OpenSim.Region.CoreModules.World.Wind.Plugins
{ {
class SimpleRandomWind : Mono.Addins.TypeExtensionNode, IWindModelPlugin class SimpleRandomWind : Mono.Addins.TypeExtensionNode, IWindModelPlugin
{ {
private Vector2[] m_windSpeeds = new Vector2[16 * 16]; private Vector2[] m_windSpeeds = new Vector2[16 * 16];
private float m_strength = 1.0f; private float m_strength = 1.0f;
private Random m_rndnums = new Random(Environment.TickCount); private Random m_rndnums = new Random(Environment.TickCount);
#region IPlugin Members #region IPlugin Members
public string Version public string Version
{ {
get { return "1.0.0.0"; } get { return "1.0.0.0"; }
} }
public string Name public string Name
{ {
get { return "SimpleRandomWind"; } get { return "SimpleRandomWind"; }
} }
public void Initialise() public void Initialise()
{ {
} }
#endregion #endregion
#region IDisposable Members #region IDisposable Members
public void Dispose() public void Dispose()
{ {
m_windSpeeds = null; m_windSpeeds = null;
} }
#endregion #endregion
#region IWindModelPlugin Members #region IWindModelPlugin Members
public void WindConfig(OpenSim.Region.Framework.Scenes.Scene scene, Nini.Config.IConfig windConfig) public void WindConfig(OpenSim.Region.Framework.Scenes.Scene scene, Nini.Config.IConfig windConfig)
{ {
if( windConfig != null ) if( windConfig != null )
{ {
if( windConfig.Contains("strength") ) if( windConfig.Contains("strength") )
{ {
m_strength = windConfig.GetFloat("strength", 1.0F); m_strength = windConfig.GetFloat("strength", 1.0F);
} }
} }
} }
public void WindUpdate(uint frame) public void WindUpdate(uint frame)
{ {
for (int y = 0; y < 16; y++) for (int y = 0; y < 16; y++)
{ {
for (int x = 0; x < 16; x++) for (int x = 0; x < 16; x++)
{ {
m_windSpeeds[y * 16 + x].X = (float)(m_rndnums.NextDouble() * 2d - 1d); // -1 to 1 m_windSpeeds[y * 16 + x].X = (float)(m_rndnums.NextDouble() * 2d - 1d); // -1 to 1
m_windSpeeds[y * 16 + x].Y = (float)(m_rndnums.NextDouble() * 2d - 1d); // -1 to 1 m_windSpeeds[y * 16 + x].Y = (float)(m_rndnums.NextDouble() * 2d - 1d); // -1 to 1
m_windSpeeds[y * 16 + x].X *= m_strength; m_windSpeeds[y * 16 + x].X *= m_strength;
m_windSpeeds[y * 16 + x].Y *= m_strength; m_windSpeeds[y * 16 + x].Y *= m_strength;
} }
} }
} }
public Vector3 WindSpeed(float fX, float fY, float fZ) public Vector3 WindSpeed(float fX, float fY, float fZ)
{ {
Vector3 windVector = new Vector3(0.0f, 0.0f, 0.0f); Vector3 windVector = new Vector3(0.0f, 0.0f, 0.0f);
int x = (int)fX / 16; int x = (int)fX / 16;
int y = (int)fY / 16; int y = (int)fY / 16;
if (x < 0) x = 0; if (x < 0) x = 0;
if (x > 15) x = 15; if (x > 15) x = 15;
if (y < 0) y = 0; if (y < 0) y = 0;
if (y > 15) y = 15; if (y > 15) y = 15;
if (m_windSpeeds != null) if (m_windSpeeds != null)
{ {
windVector.X = m_windSpeeds[y * 16 + x].X; windVector.X = m_windSpeeds[y * 16 + x].X;
windVector.Y = m_windSpeeds[y * 16 + x].Y; windVector.Y = m_windSpeeds[y * 16 + x].Y;
} }
return windVector; return windVector;
} }
public Vector2[] WindLLClientArray() public Vector2[] WindLLClientArray()
{ {
return m_windSpeeds; return m_windSpeeds;
} }
public string Description public string Description
{ {
get get
{ {
return "Provides a simple wind model that creates random wind of a given strength in 16m x 16m patches."; return "Provides a simple wind model that creates random wind of a given strength in 16m x 16m patches.";
} }
} }
public System.Collections.Generic.Dictionary<string, string> WindParams() public System.Collections.Generic.Dictionary<string, string> WindParams()
{ {
Dictionary<string, string> Params = new Dictionary<string, string>(); Dictionary<string, string> Params = new Dictionary<string, string>();
Params.Add("strength", "wind strength"); Params.Add("strength", "wind strength");
return Params; return Params;
} }
public void WindParamSet(string param, float value) public void WindParamSet(string param, float value)
{ {
switch (param) switch (param)
{ {
case "strength": case "strength":
m_strength = value; m_strength = value;
break; break;
} }
} }
public float WindParamGet(string param) public float WindParamGet(string param)
{ {
switch (param) switch (param)
{ {
case "strength": case "strength":
return m_strength; return m_strength;
default: default:
throw new Exception(String.Format("Unknown {0} parameter {1}", this.Name, param)); throw new Exception(String.Format("Unknown {0} parameter {1}", this.Name, param));
} }
} }
#endregion #endregion
} }
} }

View File

@ -1,12 +1,12 @@
using System.Collections.Generic; using System.Collections.Generic;
using OpenMetaverse; using OpenMetaverse;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
public interface IObjectAccessor : ICollection<IObject> public interface IObjectAccessor : ICollection<IObject>
{ {
IObject this[int index] { get; } IObject this[int index] { get; }
IObject this[uint index] { get; } IObject this[uint index] { get; }
IObject this[UUID index] { get; } IObject this[UUID index] { get; }
} }
} }

View File

@ -1,132 +1,132 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
using IEnumerable=System.Collections.IEnumerable; using IEnumerable=System.Collections.IEnumerable;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
internal class IObjEnum : IEnumerator<IObject> internal class IObjEnum : IEnumerator<IObject>
{ {
private readonly Scene m_scene; private readonly Scene m_scene;
private readonly IEnumerator<EntityBase> m_sogEnum; private readonly IEnumerator<EntityBase> m_sogEnum;
public IObjEnum(Scene scene) public IObjEnum(Scene scene)
{ {
m_scene = scene; m_scene = scene;
m_sogEnum = m_scene.Entities.GetAllByType<SceneObjectGroup>().GetEnumerator(); m_sogEnum = m_scene.Entities.GetAllByType<SceneObjectGroup>().GetEnumerator();
} }
public void Dispose() public void Dispose()
{ {
m_sogEnum.Dispose(); m_sogEnum.Dispose();
} }
public bool MoveNext() public bool MoveNext()
{ {
return m_sogEnum.MoveNext(); return m_sogEnum.MoveNext();
} }
public void Reset() public void Reset()
{ {
m_sogEnum.Reset(); m_sogEnum.Reset();
} }
public IObject Current public IObject Current
{ {
get get
{ {
return new SOPObject(m_scene, m_sogEnum.Current.LocalId); return new SOPObject(m_scene, m_sogEnum.Current.LocalId);
} }
} }
object IEnumerator.Current object IEnumerator.Current
{ {
get { return Current; } get { return Current; }
} }
} }
public class ObjectAccessor : IObjectAccessor public class ObjectAccessor : IObjectAccessor
{ {
private readonly Scene m_scene; private readonly Scene m_scene;
public ObjectAccessor(Scene scene) public ObjectAccessor(Scene scene)
{ {
m_scene = scene; m_scene = scene;
} }
public IObject this[int index] public IObject this[int index]
{ {
get get
{ {
return new SOPObject(m_scene, m_scene.Entities[(uint)index].LocalId); return new SOPObject(m_scene, m_scene.Entities[(uint)index].LocalId);
} }
} }
public IObject this[uint index] public IObject this[uint index]
{ {
get get
{ {
return new SOPObject(m_scene, m_scene.Entities[index].LocalId); return new SOPObject(m_scene, m_scene.Entities[index].LocalId);
} }
} }
public IObject this[UUID index] public IObject this[UUID index]
{ {
get get
{ {
return new SOPObject(m_scene, m_scene.Entities[index].LocalId); return new SOPObject(m_scene, m_scene.Entities[index].LocalId);
} }
} }
public IEnumerator<IObject> GetEnumerator() public IEnumerator<IObject> GetEnumerator()
{ {
return new IObjEnum(m_scene); return new IObjEnum(m_scene);
} }
IEnumerator IEnumerable.GetEnumerator() IEnumerator IEnumerable.GetEnumerator()
{ {
return GetEnumerator(); return GetEnumerator();
} }
public void Add(IObject item) public void Add(IObject item)
{ {
throw new NotSupportedException("Collection is read-only. This is an API TODO FIX, creation of objects is presently impossible."); throw new NotSupportedException("Collection is read-only. This is an API TODO FIX, creation of objects is presently impossible.");
} }
public void Clear() public void Clear()
{ {
throw new NotSupportedException("Collection is read-only. TODO FIX."); throw new NotSupportedException("Collection is read-only. TODO FIX.");
} }
public bool Contains(IObject item) public bool Contains(IObject item)
{ {
return m_scene.Entities.ContainsKey(item.LocalID); return m_scene.Entities.ContainsKey(item.LocalID);
} }
public void CopyTo(IObject[] array, int arrayIndex) public void CopyTo(IObject[] array, int arrayIndex)
{ {
for (int i = arrayIndex; i < Count + arrayIndex; i++) for (int i = arrayIndex; i < Count + arrayIndex; i++)
{ {
array[i] = this[i - arrayIndex]; array[i] = this[i - arrayIndex];
} }
} }
public bool Remove(IObject item) public bool Remove(IObject item)
{ {
throw new NotSupportedException("Collection is read-only. TODO FIX."); throw new NotSupportedException("Collection is read-only. TODO FIX.");
} }
public int Count public int Count
{ {
get { return m_scene.Entities.Count; } get { return m_scene.Entities.Count; }
} }
public bool IsReadOnly public bool IsReadOnly
{ {
get { return true; } get { return true; }
} }
} }
} }

View File

@ -1,37 +1,37 @@
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
class SPAvatar : IAvatar class SPAvatar : IAvatar
{ {
private readonly Scene m_rootScene; private readonly Scene m_rootScene;
private readonly UUID m_ID; private readonly UUID m_ID;
public SPAvatar(Scene scene, UUID ID) public SPAvatar(Scene scene, UUID ID)
{ {
m_rootScene = scene; m_rootScene = scene;
m_ID = ID; m_ID = ID;
} }
private ScenePresence GetSP() private ScenePresence GetSP()
{ {
return m_rootScene.GetScenePresence(m_ID); return m_rootScene.GetScenePresence(m_ID);
} }
public string Name public string Name
{ {
get { return GetSP().Name; } get { return GetSP().Name; }
} }
public UUID GlobalID public UUID GlobalID
{ {
get { return m_ID; } get { return m_ID; }
} }
public Vector3 Position public Vector3 Position
{ {
get { return GetSP().AbsolutePosition; } get { return GetSP().AbsolutePosition; }
} }
} }
} }

View File

@ -1,17 +1,17 @@
using OpenSim.Region.OptionalModules.Scripting.Minimodule; using OpenSim.Region.OptionalModules.Scripting.Minimodule;
namespace OpenSim namespace OpenSim
{ {
class MiniModule : MRMBase class MiniModule : MRMBase
{ {
public override void Start() public override void Start()
{ {
Host.Console.Info("Hello World!"); Host.Console.Info("Hello World!");
} }
public override void Stop() public override void Stop()
{ {
} }
} }
} }