Merge branch 'master' of ssh://diva@opensimulator.org/var/git/opensim

arthursv
Diva Canto 2009-08-15 15:45:25 -07:00
commit 9d4ed3b018
6 changed files with 62 additions and 13 deletions

View File

@ -0,0 +1,7 @@
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{
public interface ISecurityCredential
{
ISocialEntity owner { get; }
}
}

View File

@ -166,8 +166,14 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
public void GetGlobalEnvironment(uint localID, out IWorld world, out IHost host) public void GetGlobalEnvironment(uint localID, out IWorld world, out IHost host)
{ {
world = new World(m_scene); // UUID should be changed to object owner.
host = new Host(new SOPObject(m_scene, localID), m_scene, new ExtensionHandler(m_extensions), m_microthreads); UUID owner = m_scene.RegionInfo.MasterAvatarAssignedUUID;
SEUser securityUser = new SEUser(owner, "Name Unassigned");
SecurityCredential creds = new SecurityCredential(securityUser);
world = new World(m_scene, creds);
host = new Host(new SOPObject(m_scene, localID, creds), m_scene, new ExtensionHandler(m_extensions),
m_microthreads);
} }
public void InitializeMRM(MRMBase mmb, uint localID, UUID itemID) public void InitializeMRM(MRMBase mmb, uint localID, UUID itemID)

View File

@ -40,10 +40,12 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
private readonly Scene m_scene; private readonly Scene m_scene;
private readonly IEnumerator<EntityBase> m_sogEnum; private readonly IEnumerator<EntityBase> m_sogEnum;
private readonly ISecurityCredential m_security;
public IObjEnum(Scene scene) public IObjEnum(Scene scene, ISecurityCredential security)
{ {
m_scene = scene; m_scene = scene;
m_security = security;
m_sogEnum = m_scene.Entities.GetAllByType<SceneObjectGroup>().GetEnumerator(); m_sogEnum = m_scene.Entities.GetAllByType<SceneObjectGroup>().GetEnumerator();
} }
@ -66,7 +68,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
get get
{ {
return new SOPObject(m_scene, m_sogEnum.Current.LocalId); return new SOPObject(m_scene, m_sogEnum.Current.LocalId, m_security);
} }
} }
@ -79,17 +81,19 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
public class ObjectAccessor : System.MarshalByRefObject, IObjectAccessor public class ObjectAccessor : System.MarshalByRefObject, IObjectAccessor
{ {
private readonly Scene m_scene; private readonly Scene m_scene;
private readonly ISecurityCredential m_security;
public ObjectAccessor(Scene scene) public ObjectAccessor(Scene scene, ISecurityCredential security)
{ {
m_scene = scene; m_scene = scene;
m_security = security;
} }
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, m_security);
} }
} }
@ -97,7 +101,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
get get
{ {
return new SOPObject(m_scene, m_scene.Entities[index].LocalId); return new SOPObject(m_scene, m_scene.Entities[index].LocalId, m_security);
} }
} }
@ -105,7 +109,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
get get
{ {
return new SOPObject(m_scene, m_scene.Entities[index].LocalId); return new SOPObject(m_scene, m_scene.Entities[index].LocalId, m_security);
} }
} }
@ -117,20 +121,20 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
public IObject Create(Vector3 position, Quaternion rotation) public IObject Create(Vector3 position, Quaternion rotation)
{ {
SceneObjectGroup sog = m_scene.AddNewPrim(m_scene.RegionInfo.MasterAvatarAssignedUUID, SceneObjectGroup sog = m_scene.AddNewPrim(m_security.owner.GlobalID,
UUID.Zero, UUID.Zero,
position, position,
rotation, rotation,
PrimitiveBaseShape.CreateBox()); PrimitiveBaseShape.CreateBox());
IObject ret = new SOPObject(m_scene, sog.LocalId); IObject ret = new SOPObject(m_scene, sog.LocalId, m_security);
return ret; return ret;
} }
public IEnumerator<IObject> GetEnumerator() public IEnumerator<IObject> GetEnumerator()
{ {
return new IObjEnum(m_scene); return new IObjEnum(m_scene, m_security);
} }
IEnumerator IEnumerable.GetEnumerator() IEnumerator IEnumerable.GetEnumerator()

View File

@ -42,13 +42,22 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
private readonly Scene m_rootScene; private readonly Scene m_rootScene;
private readonly uint m_localID; private readonly uint m_localID;
private readonly ISecurityCredential m_security;
[Obsolete("Replace with 'credential' constructor [security]")]
public SOPObject(Scene rootScene, uint localID) public SOPObject(Scene rootScene, uint localID)
{ {
m_rootScene = rootScene; m_rootScene = rootScene;
m_localID = localID; m_localID = localID;
} }
public SOPObject(Scene rootScene, uint localID, ISecurityCredential credential)
{
m_rootScene = rootScene;
m_localID = localID;
m_security = credential;
}
/// <summary> /// <summary>
/// This needs to run very, very quickly. /// This needs to run very, very quickly.
/// It is utilized in nearly every property and method. /// It is utilized in nearly every property and method.

View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{
class SecurityCredential : ISecurityCredential
{
private readonly ISocialEntity m_owner;
public SecurityCredential(ISocialEntity m_owner)
{
this.m_owner = m_owner;
}
public ISocialEntity owner
{
get { return m_owner; }
}
}
}

View File

@ -37,15 +37,17 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
public class World : System.MarshalByRefObject, IWorld, IWorldAudio public class World : System.MarshalByRefObject, IWorld, IWorldAudio
{ {
private readonly Scene m_internalScene; private readonly Scene m_internalScene;
private readonly ISecurityCredential m_security;
private readonly Heightmap m_heights; private readonly Heightmap m_heights;
private readonly ObjectAccessor m_objs; private readonly ObjectAccessor m_objs;
public World(Scene internalScene) public World(Scene internalScene, ISecurityCredential securityCredential)
{ {
m_security = securityCredential;
m_internalScene = internalScene; m_internalScene = internalScene;
m_heights = new Heightmap(m_internalScene); m_heights = new Heightmap(m_internalScene);
m_objs = new ObjectAccessor(m_internalScene); m_objs = new ObjectAccessor(m_internalScene, securityCredential);
} }
#region Events #region Events