remove MRM module (minimodule). Its outdated and we have no maintainers. Thanks to all that worked on it. You should either use scripts or a full region module. Or revert this commit and update its code ;)
parent
44e6f45ed6
commit
76b777b1fb
|
@ -1,66 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
class ExtensionHandler : IExtension
|
|
||||||
{
|
|
||||||
private readonly Dictionary<Type, object> m_instances;
|
|
||||||
|
|
||||||
public ExtensionHandler(Dictionary<Type, object> instances)
|
|
||||||
{
|
|
||||||
m_instances = instances;
|
|
||||||
}
|
|
||||||
|
|
||||||
public T Get<T>()
|
|
||||||
{
|
|
||||||
return (T) m_instances[typeof (T)];
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool TryGet<T>(out T extension)
|
|
||||||
{
|
|
||||||
if (!m_instances.ContainsKey(typeof(T)))
|
|
||||||
{
|
|
||||||
extension = default(T);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
extension = Get<T>();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Has<T>()
|
|
||||||
{
|
|
||||||
return m_instances.ContainsKey(typeof (T));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,72 +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 OpenSimulator 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.Drawing;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenMetaverse.Imaging;
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
class Graphics : System.MarshalByRefObject, IGraphics
|
|
||||||
{
|
|
||||||
private readonly Scene m_scene;
|
|
||||||
|
|
||||||
public Graphics(Scene m_scene)
|
|
||||||
{
|
|
||||||
this.m_scene = m_scene;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID SaveBitmap(Bitmap data)
|
|
||||||
{
|
|
||||||
return SaveBitmap(data, false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID SaveBitmap(Bitmap data, bool lossless, bool temporary)
|
|
||||||
{
|
|
||||||
AssetBase asset = new AssetBase(UUID.Random(), "MRMDynamicImage", (sbyte)AssetType.Texture, m_scene.RegionInfo.RegionID.ToString());
|
|
||||||
asset.Data = OpenJPEG.EncodeFromImage(data, lossless);
|
|
||||||
asset.Description = "MRM Image";
|
|
||||||
asset.Local = false;
|
|
||||||
asset.Temporary = temporary;
|
|
||||||
m_scene.AssetService.Store(asset);
|
|
||||||
|
|
||||||
return asset.FullID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Bitmap LoadBitmap(UUID assetID)
|
|
||||||
{
|
|
||||||
AssetBase bmp = m_scene.AssetService.Get(assetID.ToString());
|
|
||||||
ManagedImage outimg;
|
|
||||||
Image img;
|
|
||||||
OpenJPEG.DecodeToImage(bmp.Data, out outimg, out img);
|
|
||||||
|
|
||||||
return new Bitmap(img);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,67 +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 OpenSimulator 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 OpenSim.Region.Framework.Scenes;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public class Heightmap : System.MarshalByRefObject, IHeightmap
|
|
||||||
{
|
|
||||||
private readonly Scene m_scene;
|
|
||||||
|
|
||||||
public Heightmap(Scene scene)
|
|
||||||
{
|
|
||||||
m_scene = scene;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double this[int x, int y]
|
|
||||||
{
|
|
||||||
get { return Get(x, y); }
|
|
||||||
set { Set(x, y, value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Length
|
|
||||||
{
|
|
||||||
get { return m_scene.Heightmap.Height; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Width
|
|
||||||
{
|
|
||||||
get { return m_scene.Heightmap.Width; }
|
|
||||||
}
|
|
||||||
|
|
||||||
protected double Get(int x, int y)
|
|
||||||
{
|
|
||||||
return m_scene.Heightmap[x, y];
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void Set(int x, int y, double val)
|
|
||||||
{
|
|
||||||
m_scene.Heightmap[x, y] = val;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,79 +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 OpenSimulator 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 log4net;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
class Host : System.MarshalByRefObject, IHost
|
|
||||||
{
|
|
||||||
private readonly IObject m_obj;
|
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
private readonly IGraphics m_graphics;
|
|
||||||
private readonly IExtension m_extend;
|
|
||||||
private readonly IMicrothreader m_threader;
|
|
||||||
//private Scene m_scene;
|
|
||||||
|
|
||||||
public Host(IObject m_obj, Scene m_scene, IExtension m_extend, IMicrothreader m_threader)
|
|
||||||
{
|
|
||||||
this.m_obj = m_obj;
|
|
||||||
this.m_threader = m_threader;
|
|
||||||
this.m_extend = m_extend;
|
|
||||||
//this.m_scene = m_scene;
|
|
||||||
|
|
||||||
m_graphics = new Graphics(m_scene);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObject Object
|
|
||||||
{
|
|
||||||
get { return m_obj; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public ILog Console
|
|
||||||
{
|
|
||||||
get { return m_log; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IGraphics Graphics
|
|
||||||
{
|
|
||||||
get { return m_graphics; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IExtension Extensions
|
|
||||||
{
|
|
||||||
get { return m_extend; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IMicrothreader Microthreads
|
|
||||||
{
|
|
||||||
get { return m_threader; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,38 +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 OpenSimulator 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 OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface IMRMModule
|
|
||||||
{
|
|
||||||
void RegisterExtension<T>(T instance);
|
|
||||||
void InitializeMRM(MRMBase mmb, uint localID, UUID itemID);
|
|
||||||
void GetGlobalEnvironment(uint localID, out IWorld world, out IHost host);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,36 +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 OpenSimulator 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface ISecurityCredential
|
|
||||||
{
|
|
||||||
ISocialEntity owner { get; }
|
|
||||||
bool CanEditObject(IObject target);
|
|
||||||
bool CanEditTerrain(int x, int y);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,51 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface IAvatar : IEntity
|
|
||||||
{
|
|
||||||
|
|
||||||
bool IsChildAgent { get; }
|
|
||||||
|
|
||||||
//// <value>
|
|
||||||
/// Array of worn attachments, empty but not null, if no attachments are worn
|
|
||||||
/// </value>
|
|
||||||
|
|
||||||
IAvatarAttachment[] Attachments { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Request to open an url clientside
|
|
||||||
/// </summary>
|
|
||||||
void LoadUrl(IObject sender, string message, string url);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,42 +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 OpenSimulator 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface IAvatarAttachment
|
|
||||||
{
|
|
||||||
//// <value>
|
|
||||||
/// Describes where on the avatar the attachment is located
|
|
||||||
/// </value>
|
|
||||||
int Location { get ; }
|
|
||||||
|
|
||||||
//// <value>
|
|
||||||
/// Accessor to the rez'ed asset, representing the attachment
|
|
||||||
/// </value>
|
|
||||||
IObject Asset { get; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,41 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface IEntity
|
|
||||||
{
|
|
||||||
string Name { get; set; }
|
|
||||||
UUID GlobalID { get; }
|
|
||||||
Vector3 WorldPosition { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,40 +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 OpenSimulator 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.Text;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces
|
|
||||||
{
|
|
||||||
public interface IExtension
|
|
||||||
{
|
|
||||||
T Get<T>();
|
|
||||||
bool TryGet<T>(out T extension);
|
|
||||||
bool Has<T>();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +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 OpenSimulator 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.Drawing;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface IGraphics
|
|
||||||
{
|
|
||||||
UUID SaveBitmap(Bitmap data);
|
|
||||||
UUID SaveBitmap(Bitmap data, bool lossless, bool temporary);
|
|
||||||
Bitmap LoadBitmap(UUID assetID);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,69 +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 OpenSimulator 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.Text;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface IHeightmap
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Returns [or sets] the heightmap value at specified coordinates.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="x">X Coordinate</param>
|
|
||||||
/// <param name="y">Y Coordinate</param>
|
|
||||||
/// <returns>A value in meters representing height. Can be negative. Value correlates with Z parameter in world coordinates</returns>
|
|
||||||
/// <example>
|
|
||||||
/// double heightVal = World.Heightmap[128,128];
|
|
||||||
/// World.Heightmap[128,128] *= 5.0;
|
|
||||||
/// World.Heightmap[128,128] = 25;
|
|
||||||
/// </example>
|
|
||||||
double this[int x, int y]
|
|
||||||
{
|
|
||||||
get;
|
|
||||||
set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The maximum length of the region (Y axis), exclusive. (eg Height = 256, max Y = 255). Minimum is always 0 inclusive.
|
|
||||||
/// </summary>
|
|
||||||
/// <example>
|
|
||||||
/// Host.Console.Info("The terrain length of this region is " + World.Heightmap.Length);
|
|
||||||
/// </example>
|
|
||||||
int Length { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The maximum width of the region (X axis), exclusive. (eg Width = 256, max X = 255). Minimum is always 0 inclusive.
|
|
||||||
/// </summary>
|
|
||||||
/// <example>
|
|
||||||
/// Host.Console.Info("The terrain width of this region is " + World.Heightmap.Width);
|
|
||||||
/// </example>
|
|
||||||
int Width { get; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,44 +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 OpenSimulator 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.Text;
|
|
||||||
using log4net;
|
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface IHost
|
|
||||||
{
|
|
||||||
IObject Object { get; }
|
|
||||||
ILog Console { get; }
|
|
||||||
IGraphics Graphics { get; }
|
|
||||||
IExtension Extensions { get; }
|
|
||||||
IMicrothreader Microthreads { get; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,43 +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 OpenSimulator 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 OpenMetaverse;
|
|
||||||
using OpenMetaverse.Assets;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// This implements the methods needed to operate on individual inventory items.
|
|
||||||
/// </summary>
|
|
||||||
public interface IInventoryItem
|
|
||||||
{
|
|
||||||
int Type { get; }
|
|
||||||
UUID AssetID { get; }
|
|
||||||
T RetrieveAsset<T>() where T : OpenMetaverse.Assets.Asset, new();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +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 OpenSimulator 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;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces
|
|
||||||
{
|
|
||||||
public interface IMicrothreader
|
|
||||||
{
|
|
||||||
void Run(IEnumerable microthread);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,245 +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 OpenSimulator 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.Drawing;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Object;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
public class TouchEventArgs : EventArgs
|
|
||||||
{
|
|
||||||
public IAvatar Avatar;
|
|
||||||
|
|
||||||
public Vector3 TouchBiNormal;
|
|
||||||
public Vector3 TouchNormal;
|
|
||||||
public Vector3 TouchPosition;
|
|
||||||
|
|
||||||
public Vector2 TouchUV;
|
|
||||||
public Vector2 TouchST;
|
|
||||||
|
|
||||||
public int TouchMaterialIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
public delegate void OnTouchDelegate(IObject sender, TouchEventArgs e);
|
|
||||||
|
|
||||||
public interface IObject : IEntity
|
|
||||||
{
|
|
||||||
#region Events
|
|
||||||
|
|
||||||
event OnTouchDelegate OnTouch;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns whether or not this object is still in the world.
|
|
||||||
/// Eg, if you store an IObject reference, however the object
|
|
||||||
/// is deleted before you use it, it will throw a NullReference
|
|
||||||
/// exception. 'Exists' allows you to check the object is still
|
|
||||||
/// in play before utilizing it.
|
|
||||||
/// </summary>
|
|
||||||
/// <example>
|
|
||||||
/// IObject deleteMe = World.Objects[0];
|
|
||||||
///
|
|
||||||
/// if (deleteMe.Exists) {
|
|
||||||
/// deleteMe.Say("Hello, I still exist!");
|
|
||||||
/// }
|
|
||||||
///
|
|
||||||
/// World.Objects.Remove(deleteMe);
|
|
||||||
///
|
|
||||||
/// if (!deleteMe.Exists) {
|
|
||||||
/// Host.Console.Info("I was deleted");
|
|
||||||
/// }
|
|
||||||
/// </example>
|
|
||||||
/// <remarks>
|
|
||||||
/// Objects should be near-guarunteed to exist for any event which
|
|
||||||
/// passes them as an argument. Storing an object for a longer period
|
|
||||||
/// of time however will limit their reliability.
|
|
||||||
///
|
|
||||||
/// It is a good practice to use Try/Catch blocks handling for
|
|
||||||
/// NullReferenceException, when accessing remote objects.
|
|
||||||
/// </remarks>
|
|
||||||
bool Exists { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The local region-unique ID for this object.
|
|
||||||
/// </summary>
|
|
||||||
uint LocalID { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The description assigned to this object.
|
|
||||||
/// </summary>
|
|
||||||
String Description { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the UUID of the Owner of the Object.
|
|
||||||
/// </summary>
|
|
||||||
UUID OwnerId { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the UUID of the Creator of the Object.
|
|
||||||
/// </summary>
|
|
||||||
UUID CreatorId { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the root object of a linkset. If this object is the root, it will return itself.
|
|
||||||
/// </summary>
|
|
||||||
IObject Root { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns a collection of objects which are linked to the current object. Does not include the root object.
|
|
||||||
/// </summary>
|
|
||||||
IObject[] Children { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns a list of materials attached to this object. Each may contain unique texture
|
|
||||||
/// and other visual information. For primitive based objects, this correlates with
|
|
||||||
/// Object Faces. For mesh based objects, this correlates with Materials.
|
|
||||||
/// </summary>
|
|
||||||
IObjectMaterial[] Materials { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The bounding box of the object. Primitive and Mesh objects alike are scaled to fit within these bounds.
|
|
||||||
/// </summary>
|
|
||||||
Vector3 Scale { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The rotation of the object relative to the Scene
|
|
||||||
/// </summary>
|
|
||||||
Quaternion WorldRotation { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The rotation of the object relative to a parent object
|
|
||||||
/// If root, works the same as WorldRotation
|
|
||||||
/// </summary>
|
|
||||||
Quaternion OffsetRotation { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The position of the object relative to a parent object
|
|
||||||
/// If root, works the same as WorldPosition
|
|
||||||
/// </summary>
|
|
||||||
Vector3 OffsetPosition { get; set; }
|
|
||||||
|
|
||||||
Vector3 SitTarget { get; set; }
|
|
||||||
String SitTargetText { get; set; }
|
|
||||||
|
|
||||||
String TouchText { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Text to be associated with this object, in the
|
|
||||||
/// Second Life(r) viewer, this is shown above the
|
|
||||||
/// object.
|
|
||||||
/// </summary>
|
|
||||||
String Text { get; set; }
|
|
||||||
|
|
||||||
bool IsRotationLockedX { get; set; } // SetStatus(!ROTATE_X)
|
|
||||||
bool IsRotationLockedY { get; set; } // SetStatus(!ROTATE_Y)
|
|
||||||
bool IsRotationLockedZ { get; set; } // SetStatus(!ROTATE_Z)
|
|
||||||
bool IsSandboxed { get; set; } // SetStatus(SANDBOX)
|
|
||||||
bool IsImmotile { get; set; } // SetStatus(BLOCK_GRAB)
|
|
||||||
bool IsAlwaysReturned { get; set; } // SetStatus(!DIE_AT_EDGE)
|
|
||||||
bool IsTemporary { get; set; } // TEMP_ON_REZ
|
|
||||||
|
|
||||||
bool IsFlexible { get; set; }
|
|
||||||
|
|
||||||
IObjectShape Shape { get; }
|
|
||||||
|
|
||||||
// TODO:
|
|
||||||
// PrimHole
|
|
||||||
// Repeats, Offsets, Cut/Dimple/ProfileCut
|
|
||||||
// Hollow, Twist, HoleSize,
|
|
||||||
// Taper[A+B], Shear[A+B], Revolutions,
|
|
||||||
// RadiusOffset, Skew
|
|
||||||
|
|
||||||
PhysicsMaterial PhysicsMaterial { get; set; }
|
|
||||||
|
|
||||||
IObjectPhysics Physics { get; }
|
|
||||||
|
|
||||||
IObjectSound Sound { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Causes the object to speak to its surroundings,
|
|
||||||
/// equivilent to LSL/OSSL llSay
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="msg">The message to send to the user</param>
|
|
||||||
void Say(string msg);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Causes the object to speak to on a specific channel,
|
|
||||||
/// equivilent to LSL/OSSL llSay
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="msg">The message to send to the user</param>
|
|
||||||
/// <param name="channel">The channel on which to send the message</param>
|
|
||||||
void Say(string msg,int channel);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Opens a Dialog Panel in the Users Viewer,
|
|
||||||
/// equivilent to LSL/OSSL llDialog
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="avatar">The UUID of the Avatar to which the Dialog should be send</param>
|
|
||||||
/// <param name="message">The Message to display at the top of the Dialog</param>
|
|
||||||
/// <param name="buttons">The Strings that act as label/value of the Bottons in the Dialog</param>
|
|
||||||
/// <param name="chat_channel">The channel on which to send the response</param>
|
|
||||||
void Dialog(UUID avatar, string message, string[] buttons, int chat_channel);
|
|
||||||
|
|
||||||
//// <value>
|
|
||||||
/// Grants access to the objects inventory
|
|
||||||
/// </value>
|
|
||||||
IObjectInventory Inventory { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum PhysicsMaterial
|
|
||||||
{
|
|
||||||
Default,
|
|
||||||
Glass,
|
|
||||||
Metal,
|
|
||||||
Plastic,
|
|
||||||
Wood,
|
|
||||||
Rubber,
|
|
||||||
Stone,
|
|
||||||
Flesh
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum TextureMapping
|
|
||||||
{
|
|
||||||
Default,
|
|
||||||
Planar
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface IObjectMaterial
|
|
||||||
{
|
|
||||||
Color Color { get; set; }
|
|
||||||
UUID Texture { get; set; }
|
|
||||||
TextureMapping Mapping { get; set; } // SetPrimParms(PRIM_TEXGEN)
|
|
||||||
bool Bright { get; set; } // SetPrimParms(FULLBRIGHT)
|
|
||||||
double Bloom { get; set; } // SetPrimParms(GLOW)
|
|
||||||
bool Shiny { get; set; } // SetPrimParms(SHINY)
|
|
||||||
bool BumpMap { get; set; } // SetPrimParms(BUMPMAP) [DEPRECATE IN FAVOUR OF UUID?]
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,41 +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 OpenSimulator 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 OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface IObjectAccessor : ICollection<IObject>
|
|
||||||
{
|
|
||||||
IObject this[int index] { get; }
|
|
||||||
IObject this[uint index] { get; }
|
|
||||||
IObject this[UUID index] { get; }
|
|
||||||
IObject Create(Vector3 position);
|
|
||||||
IObject Create(Vector3 position, Quaternion rotation);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,42 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface IParcel
|
|
||||||
{
|
|
||||||
string Name { get; set; }
|
|
||||||
string Description { get; set; }
|
|
||||||
ISocialEntity Owner { get; set; }
|
|
||||||
bool[,] Bitmap { get; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,56 +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 OpenSimulator 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.Text;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
interface IPersistence
|
|
||||||
{
|
|
||||||
T Get<T>(Guid storageID);
|
|
||||||
T Get<T>();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Stores 'data' into the persistence system
|
|
||||||
/// associated with this object, however saved
|
|
||||||
/// under the ID 'storageID'. This data may
|
|
||||||
/// be accessed by other scripts however.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="storageID"></param>
|
|
||||||
/// <param name="data"></param>
|
|
||||||
void Put<T>(Guid storageID, T data);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Stores 'data' into the persistence system
|
|
||||||
/// using the default ID for this script.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="data"></param>
|
|
||||||
void Put<T>(T data);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,79 +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 OpenSimulator 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;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
interface IScheduler
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Schedule an event callback to occur
|
|
||||||
/// when 'time' is elapsed.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="time">The period to wait before executing</param>
|
|
||||||
void RunIn(TimeSpan time);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Schedule an event callback to fire
|
|
||||||
/// every "time". Equivilent to a repeating
|
|
||||||
/// timer.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="time">The period to wait between executions</param>
|
|
||||||
void RunAndRepeat(TimeSpan time);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Fire this scheduler only when the region has
|
|
||||||
/// a user in it.
|
|
||||||
/// </summary>
|
|
||||||
bool IfOccupied { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Fire this only when simulator performance
|
|
||||||
/// is reasonable. (eg sysload <= 1.0)
|
|
||||||
/// </summary>
|
|
||||||
bool IfHealthy { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Fire this event only when the region is visible
|
|
||||||
/// to a child agent, or there is a full agent
|
|
||||||
/// in this region.
|
|
||||||
/// </summary>
|
|
||||||
bool IfVisible { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Determines whether this runs in the master scheduler thread, or a new thread
|
|
||||||
/// is spawned to handle your request. Running in scheduler may mean that your
|
|
||||||
/// code does not execute perfectly on time, however will result in better
|
|
||||||
/// region performance.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Default: true
|
|
||||||
/// </remarks>
|
|
||||||
bool Schedule { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,41 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public interface ISocialEntity
|
|
||||||
{
|
|
||||||
UUID GlobalID { get; }
|
|
||||||
string Name { get; }
|
|
||||||
bool IsUser { get; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,61 +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 OpenSimulator 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 OpenSim.Region.OptionalModules.Scripting.Minimodule.WorldX;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public class NewUserEventArgs : EventArgs
|
|
||||||
{
|
|
||||||
public IAvatar Avatar;
|
|
||||||
}
|
|
||||||
|
|
||||||
public delegate void OnNewUserDelegate(IWorld sender, NewUserEventArgs e);
|
|
||||||
|
|
||||||
public class ChatEventArgs : EventArgs
|
|
||||||
{
|
|
||||||
public string Text;
|
|
||||||
public IEntity Sender;
|
|
||||||
public int Channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public delegate void OnChatDelegate(IWorld sender, ChatEventArgs e);
|
|
||||||
|
|
||||||
public interface IWorld
|
|
||||||
{
|
|
||||||
IObjectAccessor Objects { get; }
|
|
||||||
IAvatar[] Avatars { get; }
|
|
||||||
IParcel[] Parcels { get; }
|
|
||||||
IHeightmap Terrain { get; }
|
|
||||||
IWorldAudio Audio { get; }
|
|
||||||
|
|
||||||
|
|
||||||
event OnChatDelegate OnChat;
|
|
||||||
event OnNewUserDelegate OnNewUser;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,98 +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 OpenSimulator 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.Text;
|
|
||||||
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
//using OpenSim.Services.AssetService;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenMetaverse.Assets;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public class InventoryItem : IInventoryItem
|
|
||||||
{
|
|
||||||
TaskInventoryItem m_privateItem;
|
|
||||||
Scene m_rootScene;
|
|
||||||
|
|
||||||
public InventoryItem(Scene rootScene, TaskInventoryItem internalItem)
|
|
||||||
{
|
|
||||||
m_rootScene = rootScene;
|
|
||||||
m_privateItem = internalItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Marked internal, to prevent scripts from accessing the internal type
|
|
||||||
internal TaskInventoryItem ToTaskInventoryItem()
|
|
||||||
{
|
|
||||||
return m_privateItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This will attempt to convert from an IInventoryItem to an InventoryItem object
|
|
||||||
/// </summary>
|
|
||||||
/// <description>
|
|
||||||
/// In order for this to work the object which implements IInventoryItem must inherit from InventoryItem, otherwise
|
|
||||||
/// an exception is thrown.
|
|
||||||
/// </description>
|
|
||||||
/// <param name="i">
|
|
||||||
/// The interface to upcast <see cref="IInventoryItem"/>
|
|
||||||
/// </param>
|
|
||||||
/// <returns>
|
|
||||||
/// The object backing the interface implementation <see cref="InventoryItem"/>
|
|
||||||
/// </returns>
|
|
||||||
internal static InventoryItem FromInterface(IInventoryItem i)
|
|
||||||
{
|
|
||||||
if (typeof(InventoryItem).IsAssignableFrom(i.GetType()))
|
|
||||||
{
|
|
||||||
return (InventoryItem)i;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new ApplicationException("[MRM] There is no legal conversion from IInventoryItem to InventoryItem");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Type { get { return m_privateItem.Type; } }
|
|
||||||
public UUID AssetID { get { return m_privateItem.AssetID; } }
|
|
||||||
|
|
||||||
// This method exposes OpenSim/OpenMetaverse internals and needs to be replaced with a IAsset specific to MRM.
|
|
||||||
public T RetrieveAsset<T>() where T : OpenMetaverse.Assets.Asset, new()
|
|
||||||
{
|
|
||||||
AssetBase a = m_rootScene.AssetService.Get(AssetID.ToString());
|
|
||||||
T result = new T();
|
|
||||||
|
|
||||||
if ((sbyte)result.AssetType != a.Type)
|
|
||||||
throw new ApplicationException("[MRM] The supplied asset class does not match the found asset");
|
|
||||||
|
|
||||||
result.AssetData = a.Data;
|
|
||||||
result.Decode();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,73 +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 OpenSimulator 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 OpenSim.Framework;
|
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
class LOParcel : System.MarshalByRefObject, IParcel
|
|
||||||
{
|
|
||||||
private readonly Scene m_scene;
|
|
||||||
private readonly int m_parcelID;
|
|
||||||
|
|
||||||
public LOParcel(Scene m_scene, int m_parcelID)
|
|
||||||
{
|
|
||||||
this.m_scene = m_scene;
|
|
||||||
this.m_parcelID = m_parcelID;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ILandObject GetLO()
|
|
||||||
{
|
|
||||||
return m_scene.LandChannel.GetLandObject(m_parcelID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get { return GetLO().LandData.Name; }
|
|
||||||
set { GetLO().LandData.Name = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Description
|
|
||||||
{
|
|
||||||
get { return GetLO().LandData.Description; }
|
|
||||||
set { GetLO().LandData.Description = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public ISocialEntity Owner
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool[,] Bitmap
|
|
||||||
{
|
|
||||||
get { return GetLO().LandBitmap; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,63 +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 OpenSimulator 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 OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public abstract class MRMBase : System.MarshalByRefObject
|
|
||||||
{
|
|
||||||
private IWorld m_world;
|
|
||||||
private IHost m_host;
|
|
||||||
private UUID m_id;
|
|
||||||
|
|
||||||
public void InitMiniModule(IWorld world, IHost host, UUID uniqueID)
|
|
||||||
{
|
|
||||||
m_world = world;
|
|
||||||
m_host = host;
|
|
||||||
m_id = uniqueID;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected IWorld World
|
|
||||||
{
|
|
||||||
get { return m_world; }
|
|
||||||
}
|
|
||||||
|
|
||||||
protected IHost Host
|
|
||||||
{
|
|
||||||
get { return m_host; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID ID
|
|
||||||
{
|
|
||||||
get { return m_id; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract void Start();
|
|
||||||
public abstract void Stop();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,521 +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 OpenSimulator 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.CodeDom.Compiler;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Security;
|
|
||||||
using System.Security.Permissions;
|
|
||||||
using System.Security.Policy;
|
|
||||||
using System.Text;
|
|
||||||
using log4net;
|
|
||||||
using Microsoft.CSharp;
|
|
||||||
using Nini.Config;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
using Mono.Addins;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "MRMModule")]
|
|
||||||
public class MRMModule : INonSharedRegionModule, IMRMModule
|
|
||||||
{
|
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
private Scene m_scene;
|
|
||||||
private bool m_Enabled;
|
|
||||||
private bool m_Hidden;
|
|
||||||
|
|
||||||
private readonly Dictionary<UUID,MRMBase> m_scripts = new Dictionary<UUID, MRMBase>();
|
|
||||||
|
|
||||||
private readonly Dictionary<Type,object> m_extensions = new Dictionary<Type, object>();
|
|
||||||
|
|
||||||
private static readonly CSharpCodeProvider CScodeProvider = new CSharpCodeProvider();
|
|
||||||
|
|
||||||
private readonly MicroScheduler m_microthreads = new MicroScheduler();
|
|
||||||
|
|
||||||
|
|
||||||
private IConfig m_config;
|
|
||||||
|
|
||||||
public void RegisterExtension<T>(T instance)
|
|
||||||
{
|
|
||||||
m_extensions[typeof (T)] = instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region INonSharedRegionModule
|
|
||||||
|
|
||||||
public void Initialise(IConfigSource source)
|
|
||||||
{
|
|
||||||
if (source.Configs["MRM"] != null)
|
|
||||||
{
|
|
||||||
m_config = source.Configs["MRM"];
|
|
||||||
|
|
||||||
if (source.Configs["MRM"].GetBoolean("Enabled", false))
|
|
||||||
{
|
|
||||||
m_log.Info("[MRM]: Enabling MRM Module");
|
|
||||||
m_Enabled = true;
|
|
||||||
m_Hidden = source.Configs["MRM"].GetBoolean("Hidden", false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddRegion(Scene scene)
|
|
||||||
{
|
|
||||||
if (!m_Enabled)
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_scene = scene;
|
|
||||||
|
|
||||||
// when hidden, we don't listen for client initiated script events
|
|
||||||
// only making the MRM engine available for region modules
|
|
||||||
if (!m_Hidden)
|
|
||||||
{
|
|
||||||
scene.EventManager.OnRezScript += EventManager_OnRezScript;
|
|
||||||
scene.EventManager.OnStopScript += EventManager_OnStopScript;
|
|
||||||
}
|
|
||||||
|
|
||||||
scene.EventManager.OnFrame += EventManager_OnFrame;
|
|
||||||
|
|
||||||
scene.RegisterModuleInterface<IMRMModule>(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RegionLoaded(Scene scene)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RemoveRegion(Scene scene)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Close()
|
|
||||||
{
|
|
||||||
foreach (KeyValuePair<UUID, MRMBase> pair in m_scripts)
|
|
||||||
{
|
|
||||||
pair.Value.Stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get { return "MiniRegionModule"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public Type ReplaceableInterface
|
|
||||||
{
|
|
||||||
get { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
void EventManager_OnStopScript(uint localID, UUID itemID)
|
|
||||||
{
|
|
||||||
if (m_scripts.ContainsKey(itemID))
|
|
||||||
{
|
|
||||||
m_scripts[itemID].Stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventManager_OnFrame()
|
|
||||||
{
|
|
||||||
m_microthreads.Tick(1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
static string ConvertMRMKeywords(string script)
|
|
||||||
{
|
|
||||||
script = script.Replace("microthreaded void", "IEnumerable");
|
|
||||||
script = script.Replace("relax;", "yield return null;");
|
|
||||||
|
|
||||||
return script;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create an AppDomain that contains policy restricting code to execute
|
|
||||||
/// with only the permissions granted by a named permission set
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="permissionSetName">name of the permission set to restrict to</param>
|
|
||||||
/// <param name="appDomainName">'friendly' name of the appdomain to be created</param>
|
|
||||||
/// <exception cref="ArgumentNullException">
|
|
||||||
/// if <paramref name="permissionSetName"/> is null
|
|
||||||
/// </exception>
|
|
||||||
/// <exception cref="ArgumentOutOfRangeException">
|
|
||||||
/// if <paramref name="permissionSetName"/> is empty
|
|
||||||
/// </exception>
|
|
||||||
/// <returns>AppDomain with a restricted security policy</returns>
|
|
||||||
/// <remarks>Substantial portions of this function from: http://blogs.msdn.com/shawnfa/archive/2004/10/25/247379.aspx
|
|
||||||
/// Valid permissionSetName values are:
|
|
||||||
/// * FullTrust
|
|
||||||
/// * SkipVerification
|
|
||||||
/// * Execution
|
|
||||||
/// * Nothing
|
|
||||||
/// * LocalIntranet
|
|
||||||
/// * Internet
|
|
||||||
/// * Everything
|
|
||||||
/// </remarks>
|
|
||||||
#pragma warning disable 0618
|
|
||||||
public static AppDomain CreateRestrictedDomain(string permissionSetName, string appDomainName)
|
|
||||||
{
|
|
||||||
if (permissionSetName == null)
|
|
||||||
throw new ArgumentNullException("permissionSetName");
|
|
||||||
if (permissionSetName.Length == 0)
|
|
||||||
throw new ArgumentOutOfRangeException("permissionSetName", permissionSetName,
|
|
||||||
"Cannot have an empty permission set name");
|
|
||||||
|
|
||||||
// Default to all code getting nothing
|
|
||||||
PolicyStatement emptyPolicy = new PolicyStatement(new PermissionSet(PermissionState.None));
|
|
||||||
UnionCodeGroup policyRoot = new UnionCodeGroup(new AllMembershipCondition(), emptyPolicy);
|
|
||||||
|
|
||||||
bool foundName = false;
|
|
||||||
PermissionSet setIntersection = new PermissionSet(PermissionState.Unrestricted);
|
|
||||||
|
|
||||||
// iterate over each policy level
|
|
||||||
IEnumerator levelEnumerator = SecurityManager.PolicyHierarchy();
|
|
||||||
while (levelEnumerator.MoveNext())
|
|
||||||
{
|
|
||||||
PolicyLevel level = levelEnumerator.Current as PolicyLevel;
|
|
||||||
|
|
||||||
// if this level has defined a named permission set with the
|
|
||||||
// given name, then intersect it with what we've retrieved
|
|
||||||
// from all the previous levels
|
|
||||||
if (level != null)
|
|
||||||
{
|
|
||||||
PermissionSet levelSet = level.GetNamedPermissionSet(permissionSetName);
|
|
||||||
if (levelSet != null)
|
|
||||||
{
|
|
||||||
foundName = true;
|
|
||||||
if (setIntersection != null)
|
|
||||||
setIntersection = setIntersection.Intersect(levelSet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Intersect() can return null for an empty set, so convert that
|
|
||||||
// to an empty set object. Also return an empty set if we didn't find
|
|
||||||
// the named permission set we were looking for
|
|
||||||
if (setIntersection == null || !foundName)
|
|
||||||
setIntersection = new PermissionSet(PermissionState.None);
|
|
||||||
else
|
|
||||||
setIntersection = new NamedPermissionSet(permissionSetName, setIntersection);
|
|
||||||
|
|
||||||
// if no named permission sets were found, return an empty set,
|
|
||||||
// otherwise return the set that was found
|
|
||||||
PolicyStatement permissions = new PolicyStatement(setIntersection);
|
|
||||||
policyRoot.AddChild(new UnionCodeGroup(new AllMembershipCondition(), permissions));
|
|
||||||
|
|
||||||
// create an AppDomain policy level for the policy tree
|
|
||||||
PolicyLevel appDomainLevel = PolicyLevel.CreateAppDomainLevel();
|
|
||||||
appDomainLevel.RootCodeGroup = policyRoot;
|
|
||||||
|
|
||||||
// create an AppDomain where this policy will be in effect
|
|
||||||
string domainName = appDomainName;
|
|
||||||
AppDomain restrictedDomain = AppDomain.CreateDomain(domainName);
|
|
||||||
restrictedDomain.SetAppDomainPolicy(appDomainLevel);
|
|
||||||
|
|
||||||
return restrictedDomain;
|
|
||||||
}
|
|
||||||
#pragma warning restore 0618
|
|
||||||
|
|
||||||
|
|
||||||
void EventManager_OnRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource)
|
|
||||||
{
|
|
||||||
if (script.StartsWith("//MRM:C#"))
|
|
||||||
{
|
|
||||||
if (m_config.GetBoolean("OwnerOnly", true))
|
|
||||||
if (m_scene.GetSceneObjectPart(localID).OwnerID != m_scene.RegionInfo.EstateSettings.EstateOwner
|
|
||||||
|| m_scene.GetSceneObjectPart(localID).CreatorID != m_scene.RegionInfo.EstateSettings.EstateOwner)
|
|
||||||
return;
|
|
||||||
|
|
||||||
script = ConvertMRMKeywords(script);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
AppDomain target;
|
|
||||||
if (m_config.GetBoolean("Sandboxed", true))
|
|
||||||
{
|
|
||||||
m_log.Info("[MRM] Found C# MRM - Starting in AppDomain with " +
|
|
||||||
m_config.GetString("SandboxLevel", "Internet") + "-level security.");
|
|
||||||
|
|
||||||
string domainName = UUID.Random().ToString();
|
|
||||||
target = CreateRestrictedDomain(m_config.GetString("SandboxLevel", "Internet"),
|
|
||||||
domainName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_log.Info("[MRM] Found C# MRM - Starting in current AppDomain");
|
|
||||||
m_log.Warn(
|
|
||||||
"[MRM] Security Risk: AppDomain is run in current context. Use only in trusted environments.");
|
|
||||||
target = AppDomain.CurrentDomain;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_log.Info("[MRM] Unwrapping into target AppDomain");
|
|
||||||
MRMBase mmb = (MRMBase) target.CreateInstanceFromAndUnwrap(
|
|
||||||
CompileFromDotNetText(script, itemID.ToString()),
|
|
||||||
"OpenSim.MiniModule");
|
|
||||||
|
|
||||||
m_log.Info("[MRM] Initialising MRM Globals");
|
|
||||||
InitializeMRM(mmb, localID, itemID);
|
|
||||||
|
|
||||||
m_scripts[itemID] = mmb;
|
|
||||||
|
|
||||||
m_log.Info("[MRM] Starting MRM");
|
|
||||||
mmb.Start();
|
|
||||||
}
|
|
||||||
catch (UnauthorizedAccessException e)
|
|
||||||
{
|
|
||||||
m_log.Error("[MRM] UAE " + e.Message);
|
|
||||||
m_log.Error("[MRM] " + e.StackTrace);
|
|
||||||
|
|
||||||
if (e.InnerException != null)
|
|
||||||
m_log.Error("[MRM] " + e.InnerException);
|
|
||||||
|
|
||||||
m_scene.ForEachClient(delegate(IClientAPI user)
|
|
||||||
{
|
|
||||||
user.SendAlertMessage(
|
|
||||||
"MRM UnAuthorizedAccess: " + e);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
m_log.Info("[MRM] Error: " + e);
|
|
||||||
m_scene.ForEachClient(delegate(IClientAPI user)
|
|
||||||
{
|
|
||||||
user.SendAlertMessage(
|
|
||||||
"Compile error while building MRM script, check OpenSim console for more information.");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void GetGlobalEnvironment(uint localID, out IWorld world, out IHost host)
|
|
||||||
{
|
|
||||||
// UUID should be changed to object owner.
|
|
||||||
UUID owner = m_scene.RegionInfo.EstateSettings.EstateOwner;
|
|
||||||
SEUser securityUser = new SEUser(owner, "Name Unassigned");
|
|
||||||
SecurityCredential creds = new SecurityCredential(securityUser, m_scene);
|
|
||||||
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
m_log.Info("[MRM] Created MRM Instance");
|
|
||||||
|
|
||||||
IWorld world;
|
|
||||||
IHost host;
|
|
||||||
|
|
||||||
GetGlobalEnvironment(localID, out world, out host);
|
|
||||||
|
|
||||||
mmb.InitMiniModule(world, host, itemID);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Stolen from ScriptEngine Common
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="Script"></param>
|
|
||||||
/// <param name="uuid">Unique ID for this module</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
internal string CompileFromDotNetText(string Script, string uuid)
|
|
||||||
{
|
|
||||||
m_log.Info("MRM 1");
|
|
||||||
const string ext = ".cs";
|
|
||||||
const string FilePrefix = "MiniModule";
|
|
||||||
|
|
||||||
// Output assembly name
|
|
||||||
string OutFile = Path.Combine("MiniModules", Path.Combine(
|
|
||||||
m_scene.RegionInfo.RegionID.ToString(),
|
|
||||||
FilePrefix + "_compiled_" + uuid + "_" +
|
|
||||||
Util.RandomClass.Next(9000) + ".dll"));
|
|
||||||
|
|
||||||
// Create Directories for Assemblies
|
|
||||||
if (!Directory.Exists("MiniModules"))
|
|
||||||
Directory.CreateDirectory("MiniModules");
|
|
||||||
string tmp = Path.Combine("MiniModules", m_scene.RegionInfo.RegionID.ToString());
|
|
||||||
if (!Directory.Exists(tmp))
|
|
||||||
Directory.CreateDirectory(tmp);
|
|
||||||
|
|
||||||
m_log.Info("MRM 2");
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.Delete(OutFile);
|
|
||||||
}
|
|
||||||
catch (UnauthorizedAccessException e)
|
|
||||||
{
|
|
||||||
throw new Exception("Unable to delete old existing " +
|
|
||||||
"script-file before writing new. Compile aborted: " +
|
|
||||||
e);
|
|
||||||
}
|
|
||||||
catch (IOException e)
|
|
||||||
{
|
|
||||||
throw new Exception("Unable to delete old existing " +
|
|
||||||
"script-file before writing new. Compile aborted: " +
|
|
||||||
e);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_log.Info("MRM 3");
|
|
||||||
|
|
||||||
// DEBUG - write source to disk
|
|
||||||
string srcFileName = FilePrefix + "_source_" +
|
|
||||||
Path.GetFileNameWithoutExtension(OutFile) + ext;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.WriteAllText(Path.Combine(Path.Combine(
|
|
||||||
"MiniModules",
|
|
||||||
m_scene.RegionInfo.RegionID.ToString()),
|
|
||||||
srcFileName), Script);
|
|
||||||
}
|
|
||||||
catch (Exception ex) //NOTLEGIT - Should be just FileIOException
|
|
||||||
{
|
|
||||||
m_log.Error("[Compiler]: Exception while " +
|
|
||||||
"trying to write script source to file \"" +
|
|
||||||
srcFileName + "\": " + ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_log.Info("MRM 4");
|
|
||||||
|
|
||||||
// Do actual compile
|
|
||||||
CompilerParameters parameters = new CompilerParameters();
|
|
||||||
|
|
||||||
parameters.IncludeDebugInformation = true;
|
|
||||||
|
|
||||||
string rootPath = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory);
|
|
||||||
|
|
||||||
List<string> libraries = new List<string>();
|
|
||||||
string[] lines = Script.Split(new string[] {"\n"}, StringSplitOptions.RemoveEmptyEntries);
|
|
||||||
foreach (string s in lines)
|
|
||||||
{
|
|
||||||
if (s.StartsWith("//@DEPENDS:"))
|
|
||||||
{
|
|
||||||
libraries.Add(s.Replace("//@DEPENDS:", ""));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
libraries.Add("OpenSim.Region.OptionalModules.dll");
|
|
||||||
libraries.Add("OpenMetaverseTypes.dll");
|
|
||||||
libraries.Add("log4net.dll");
|
|
||||||
|
|
||||||
foreach (string library in libraries)
|
|
||||||
{
|
|
||||||
parameters.ReferencedAssemblies.Add(Path.Combine(rootPath, library));
|
|
||||||
}
|
|
||||||
|
|
||||||
parameters.GenerateExecutable = false;
|
|
||||||
parameters.OutputAssembly = OutFile;
|
|
||||||
parameters.IncludeDebugInformation = true;
|
|
||||||
parameters.TreatWarningsAsErrors = false;
|
|
||||||
|
|
||||||
m_log.Info("MRM 5");
|
|
||||||
|
|
||||||
CompilerResults results = CScodeProvider.CompileAssemblyFromSource(
|
|
||||||
parameters, Script);
|
|
||||||
|
|
||||||
m_log.Info("MRM 6");
|
|
||||||
|
|
||||||
int display = 5;
|
|
||||||
if (results.Errors.Count > 0)
|
|
||||||
{
|
|
||||||
string errtext = String.Empty;
|
|
||||||
foreach (CompilerError CompErr in results.Errors)
|
|
||||||
{
|
|
||||||
// Show 5 errors max
|
|
||||||
//
|
|
||||||
if (display <= 0)
|
|
||||||
break;
|
|
||||||
display--;
|
|
||||||
|
|
||||||
string severity = "Error";
|
|
||||||
if (CompErr.IsWarning)
|
|
||||||
{
|
|
||||||
severity = "Warning";
|
|
||||||
}
|
|
||||||
|
|
||||||
string text = CompErr.ErrorText;
|
|
||||||
|
|
||||||
// The Second Life viewer's script editor begins
|
|
||||||
// countingn lines and columns at 0, so we subtract 1.
|
|
||||||
errtext += String.Format("Line ({0},{1}): {4} {2}: {3}\n",
|
|
||||||
CompErr.Line - 1, CompErr.Column - 1,
|
|
||||||
CompErr.ErrorNumber, text, severity);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!File.Exists(OutFile))
|
|
||||||
{
|
|
||||||
throw new Exception(errtext);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_log.Info("MRM 7");
|
|
||||||
|
|
||||||
if (!File.Exists(OutFile))
|
|
||||||
{
|
|
||||||
string errtext = String.Empty;
|
|
||||||
errtext += "No compile error. But not able to locate compiled file.";
|
|
||||||
throw new Exception(errtext);
|
|
||||||
}
|
|
||||||
|
|
||||||
FileInfo fi = new FileInfo(OutFile);
|
|
||||||
|
|
||||||
Byte[] data = new Byte[fi.Length];
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
FileStream fs = File.Open(OutFile, FileMode.Open, FileAccess.Read);
|
|
||||||
fs.Read(data, 0, data.Length);
|
|
||||||
fs.Close();
|
|
||||||
}
|
|
||||||
catch (IOException)
|
|
||||||
{
|
|
||||||
string errtext = String.Empty;
|
|
||||||
errtext += "No compile error. But not able to open file.";
|
|
||||||
throw new Exception(errtext);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_log.Info("MRM 8");
|
|
||||||
|
|
||||||
// Convert to base64
|
|
||||||
//
|
|
||||||
string filetext = Convert.ToBase64String(data);
|
|
||||||
Byte[] buf = Encoding.ASCII.GetBytes(filetext);
|
|
||||||
|
|
||||||
m_log.Info("MRM 9");
|
|
||||||
|
|
||||||
FileStream sfs = File.Create(OutFile + ".cil.b64");
|
|
||||||
sfs.Write(buf, 0, buf.Length);
|
|
||||||
sfs.Close();
|
|
||||||
|
|
||||||
m_log.Info("MRM 10");
|
|
||||||
|
|
||||||
return OutFile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,69 +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 OpenSimulator 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;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Text;
|
|
||||||
using log4net;
|
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public class MicroScheduler : System.MarshalByRefObject, IMicrothreader
|
|
||||||
{
|
|
||||||
private readonly List<IEnumerator> m_threads = new List<IEnumerator>();
|
|
||||||
|
|
||||||
public void Run(IEnumerable microthread)
|
|
||||||
{
|
|
||||||
lock (m_threads)
|
|
||||||
m_threads.Add(microthread.GetEnumerator());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Tick(int count)
|
|
||||||
{
|
|
||||||
lock (m_threads)
|
|
||||||
{
|
|
||||||
if (m_threads.Count == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
while (m_threads.Count > 0 && i < count)
|
|
||||||
{
|
|
||||||
i++;
|
|
||||||
|
|
||||||
bool running = m_threads[i%m_threads.Count].MoveNext();
|
|
||||||
|
|
||||||
|
|
||||||
if (!running)
|
|
||||||
m_threads.Remove(m_threads[i%m_threads.Count]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,42 +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 OpenSimulator 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 OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// This implements the methods neccesary to operate on the inventory of an object
|
|
||||||
/// </summary>
|
|
||||||
public interface IObjectInventory : IDictionary<UUID, IInventoryItem>
|
|
||||||
{
|
|
||||||
IInventoryItem this[string name] { get; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,66 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// This implements an interface similar to that provided by physics engines to OpenSim internally.
|
|
||||||
/// Eg, PhysicsActor. It is capable of setting and getting properties related to the current
|
|
||||||
/// physics scene representation of this object.
|
|
||||||
/// </summary>
|
|
||||||
public interface IObjectPhysics
|
|
||||||
{
|
|
||||||
bool Enabled { get; set; }
|
|
||||||
|
|
||||||
bool Phantom { get; set; }
|
|
||||||
bool PhantomCollisions { get; set; }
|
|
||||||
|
|
||||||
double Density { get; set; }
|
|
||||||
double Mass { get; set; }
|
|
||||||
double Buoyancy { get; set; }
|
|
||||||
|
|
||||||
Vector3 GeometricCenter { get; }
|
|
||||||
Vector3 CenterOfMass { get; }
|
|
||||||
|
|
||||||
Vector3 RotationalVelocity { get; set; }
|
|
||||||
Vector3 Velocity { get; set; }
|
|
||||||
Vector3 Torque { get; set; }
|
|
||||||
Vector3 Acceleration { get; }
|
|
||||||
Vector3 Force { get; set; }
|
|
||||||
|
|
||||||
bool FloatOnWater { set; }
|
|
||||||
|
|
||||||
void AddForce(Vector3 force, bool pushforce);
|
|
||||||
void AddAngularForce(Vector3 force, bool pushforce);
|
|
||||||
void SetMomentum(Vector3 momentum);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object
|
|
||||||
{
|
|
||||||
public enum SculptType
|
|
||||||
{
|
|
||||||
Default = 1,
|
|
||||||
Sphere = 1,
|
|
||||||
Torus = 2,
|
|
||||||
Plane = 3,
|
|
||||||
Cylinder = 4
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum HoleShape
|
|
||||||
{
|
|
||||||
Default = 0x00,
|
|
||||||
Circle = 0x10,
|
|
||||||
Square = 0x20,
|
|
||||||
Triangle = 0x30
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum PrimType
|
|
||||||
{
|
|
||||||
NotPrimitive = 255,
|
|
||||||
Box = 0,
|
|
||||||
Cylinder = 1,
|
|
||||||
Prism = 2,
|
|
||||||
Sphere = 3,
|
|
||||||
Torus = 4,
|
|
||||||
Tube = 5,
|
|
||||||
Ring = 6,
|
|
||||||
Sculpt = 7
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface IObjectShape
|
|
||||||
{
|
|
||||||
UUID SculptMap { get; set; }
|
|
||||||
SculptType SculptType { get; set; }
|
|
||||||
|
|
||||||
HoleShape HoleType { get; set; }
|
|
||||||
Double HoleSize { get; set; }
|
|
||||||
PrimType PrimType { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object
|
|
||||||
{
|
|
||||||
public interface IObjectSound
|
|
||||||
{
|
|
||||||
void Play(UUID soundAsset, double volume);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,185 +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 OpenSimulator 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;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
using IEnumerable=System.Collections.IEnumerable;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
|
|
||||||
internal class IObjEnum : System.MarshalByRefObject, IEnumerator<IObject>
|
|
||||||
{
|
|
||||||
private readonly Scene m_scene;
|
|
||||||
private readonly IEnumerator<EntityBase> m_sogEnum;
|
|
||||||
private readonly ISecurityCredential m_security;
|
|
||||||
private readonly List<EntityBase> m_entities;
|
|
||||||
|
|
||||||
public IObjEnum(Scene scene, ISecurityCredential security)
|
|
||||||
{
|
|
||||||
m_scene = scene;
|
|
||||||
m_security = security;
|
|
||||||
m_entities = new List<EntityBase>(m_scene.Entities.GetEntities());
|
|
||||||
m_sogEnum = m_entities.GetEnumerator();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
m_sogEnum.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool MoveNext()
|
|
||||||
{
|
|
||||||
return m_sogEnum.MoveNext();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Reset()
|
|
||||||
{
|
|
||||||
m_sogEnum.Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObject Current
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return new SOPObject(m_scene, m_sogEnum.Current.LocalId, m_security);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
object IEnumerator.Current
|
|
||||||
{
|
|
||||||
get { return Current; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ObjectAccessor : System.MarshalByRefObject, IObjectAccessor
|
|
||||||
{
|
|
||||||
private readonly Scene m_scene;
|
|
||||||
private readonly ISecurityCredential m_security;
|
|
||||||
|
|
||||||
public ObjectAccessor(Scene scene, ISecurityCredential security)
|
|
||||||
{
|
|
||||||
m_scene = scene;
|
|
||||||
m_security = security;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObject this[int index]
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return new SOPObject(m_scene, m_scene.Entities[(uint)index].LocalId, m_security);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObject this[uint index]
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return new SOPObject(m_scene, m_scene.Entities[index].LocalId, m_security);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObject this[UUID index]
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return new SOPObject(m_scene, m_scene.Entities[index].LocalId, m_security);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObject Create(Vector3 position)
|
|
||||||
{
|
|
||||||
return Create(position, Quaternion.Identity);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObject Create(Vector3 position, Quaternion rotation)
|
|
||||||
{
|
|
||||||
|
|
||||||
SceneObjectGroup sog = m_scene.AddNewPrim(m_security.owner.GlobalID,
|
|
||||||
UUID.Zero,
|
|
||||||
position,
|
|
||||||
rotation,
|
|
||||||
PrimitiveBaseShape.CreateBox());
|
|
||||||
|
|
||||||
IObject ret = new SOPObject(m_scene, sog.LocalId, m_security);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerator<IObject> GetEnumerator()
|
|
||||||
{
|
|
||||||
return new IObjEnum(m_scene, m_security);
|
|
||||||
}
|
|
||||||
|
|
||||||
IEnumerator IEnumerable.GetEnumerator()
|
|
||||||
{
|
|
||||||
return GetEnumerator();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Add(IObject item)
|
|
||||||
{
|
|
||||||
throw new NotSupportedException("Collection is read-only. This is an API TODO FIX, creation of objects is presently impossible.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Clear()
|
|
||||||
{
|
|
||||||
throw new NotSupportedException("Collection is read-only. TODO FIX.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Contains(IObject item)
|
|
||||||
{
|
|
||||||
return m_scene.Entities.ContainsKey(item.LocalID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CopyTo(IObject[] array, int arrayIndex)
|
|
||||||
{
|
|
||||||
for (int i = arrayIndex; i < Count + arrayIndex; i++)
|
|
||||||
{
|
|
||||||
array[i] = this[i - arrayIndex];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Remove(IObject item)
|
|
||||||
{
|
|
||||||
throw new NotSupportedException("Collection is read-only. TODO FIX.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Count
|
|
||||||
{
|
|
||||||
get { return m_scene.Entities.Count; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsReadOnly
|
|
||||||
{
|
|
||||||
get { return true; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,61 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
class SEUser : System.MarshalByRefObject, ISocialEntity
|
|
||||||
{
|
|
||||||
private readonly UUID m_uuid;
|
|
||||||
private readonly string m_name;
|
|
||||||
|
|
||||||
public SEUser(UUID uuid, string name)
|
|
||||||
{
|
|
||||||
m_uuid = uuid;
|
|
||||||
m_name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID GlobalID
|
|
||||||
{
|
|
||||||
get { return m_uuid; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get { return m_name; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsUser
|
|
||||||
{
|
|
||||||
get { return true; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,833 +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 OpenSimulator 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.Security;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenMetaverse.Packets;
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Object;
|
|
||||||
using OpenSim.Region.PhysicsModules.SharedBase;
|
|
||||||
using PrimType=OpenSim.Region.OptionalModules.Scripting.Minimodule.Object.PrimType;
|
|
||||||
using SculptType=OpenSim.Region.OptionalModules.Scripting.Minimodule.Object.SculptType;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
class SOPObject : MarshalByRefObject, IObject, IObjectPhysics, IObjectShape, IObjectSound
|
|
||||||
{
|
|
||||||
private readonly Scene m_rootScene;
|
|
||||||
private readonly uint m_localID;
|
|
||||||
private readonly ISecurityCredential m_security;
|
|
||||||
|
|
||||||
[Obsolete("Replace with 'credential' constructor [security]")]
|
|
||||||
public SOPObject(Scene rootScene, uint localID)
|
|
||||||
{
|
|
||||||
m_rootScene = rootScene;
|
|
||||||
m_localID = localID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SOPObject(Scene rootScene, uint localID, ISecurityCredential credential)
|
|
||||||
{
|
|
||||||
m_rootScene = rootScene;
|
|
||||||
m_localID = localID;
|
|
||||||
m_security = credential;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This needs to run very, very quickly.
|
|
||||||
/// It is utilized in nearly every property and method.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private SceneObjectPart GetSOP()
|
|
||||||
{
|
|
||||||
return m_rootScene.GetSceneObjectPart(m_localID);
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool CanEdit()
|
|
||||||
{
|
|
||||||
if (!m_security.CanEditObject(this))
|
|
||||||
{
|
|
||||||
throw new SecurityException("Insufficient Permission to edit object with UUID [" + GetSOP().UUID + "]");
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region OnTouch
|
|
||||||
|
|
||||||
private event OnTouchDelegate _OnTouch;
|
|
||||||
private bool _OnTouchActive = false;
|
|
||||||
|
|
||||||
public event OnTouchDelegate OnTouch
|
|
||||||
{
|
|
||||||
add
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
{
|
|
||||||
if (!_OnTouchActive)
|
|
||||||
{
|
|
||||||
GetSOP().Flags |= PrimFlags.Touch;
|
|
||||||
_OnTouchActive = true;
|
|
||||||
m_rootScene.EventManager.OnObjectGrab += EventManager_OnObjectGrab;
|
|
||||||
}
|
|
||||||
|
|
||||||
_OnTouch += value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
remove
|
|
||||||
{
|
|
||||||
_OnTouch -= value;
|
|
||||||
|
|
||||||
if (_OnTouch == null)
|
|
||||||
{
|
|
||||||
GetSOP().Flags &= ~PrimFlags.Touch;
|
|
||||||
_OnTouchActive = false;
|
|
||||||
m_rootScene.EventManager.OnObjectGrab -= EventManager_OnObjectGrab;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventManager_OnObjectGrab(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
|
||||||
{
|
|
||||||
if (_OnTouchActive && m_localID == localID)
|
|
||||||
{
|
|
||||||
TouchEventArgs e = new TouchEventArgs();
|
|
||||||
e.Avatar = new SPAvatar(m_rootScene, remoteClient.AgentId, m_security);
|
|
||||||
e.TouchBiNormal = surfaceArgs.Binormal;
|
|
||||||
e.TouchMaterialIndex = surfaceArgs.FaceIndex;
|
|
||||||
e.TouchNormal = surfaceArgs.Normal;
|
|
||||||
e.TouchPosition = surfaceArgs.Position;
|
|
||||||
e.TouchST = new Vector2(surfaceArgs.STCoord.X, surfaceArgs.STCoord.Y);
|
|
||||||
e.TouchUV = new Vector2(surfaceArgs.UVCoord.X, surfaceArgs.UVCoord.Y);
|
|
||||||
|
|
||||||
IObject sender = this;
|
|
||||||
|
|
||||||
if (_OnTouch != null)
|
|
||||||
_OnTouch(sender, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public bool Exists
|
|
||||||
{
|
|
||||||
get { return GetSOP() != null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint LocalID
|
|
||||||
{
|
|
||||||
get { return m_localID; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID GlobalID
|
|
||||||
{
|
|
||||||
get { return GetSOP().UUID; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get { return GetSOP().Name; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
GetSOP().Name = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Description
|
|
||||||
{
|
|
||||||
get { return GetSOP().Description; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
GetSOP().Description = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID OwnerId
|
|
||||||
{
|
|
||||||
get { return GetSOP().OwnerID;}
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID CreatorId
|
|
||||||
{
|
|
||||||
get { return GetSOP().CreatorID;}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObject[] Children
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
SceneObjectPart my = GetSOP();
|
|
||||||
IObject[] rets = null;
|
|
||||||
|
|
||||||
int total = my.ParentGroup.PrimCount;
|
|
||||||
|
|
||||||
rets = new IObject[total];
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
foreach (SceneObjectPart part in my.ParentGroup.Parts)
|
|
||||||
{
|
|
||||||
rets[i++] = new SOPObject(m_rootScene, part.LocalId, m_security);
|
|
||||||
}
|
|
||||||
|
|
||||||
return rets;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObject Root
|
|
||||||
{
|
|
||||||
get { return new SOPObject(m_rootScene, GetSOP().ParentGroup.RootPart.LocalId, m_security); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObjectMaterial[] Materials
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
SceneObjectPart sop = GetSOP();
|
|
||||||
IObjectMaterial[] rets = new IObjectMaterial[getNumberOfSides(sop)];
|
|
||||||
|
|
||||||
for (int i = 0; i < rets.Length; i++)
|
|
||||||
{
|
|
||||||
rets[i] = new SOPObjectMaterial(i, sop);
|
|
||||||
}
|
|
||||||
|
|
||||||
return rets;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 Scale
|
|
||||||
{
|
|
||||||
get { return GetSOP().Scale; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
GetSOP().Scale = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Quaternion WorldRotation
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public Quaternion OffsetRotation
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 WorldPosition
|
|
||||||
{
|
|
||||||
get { return GetSOP().AbsolutePosition; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
{
|
|
||||||
SceneObjectPart pos = GetSOP();
|
|
||||||
pos.UpdateOffSet(value - pos.AbsolutePosition);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 OffsetPosition
|
|
||||||
{
|
|
||||||
get { return GetSOP().OffsetPosition; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
{
|
|
||||||
GetSOP().OffsetPosition = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 SitTarget
|
|
||||||
{
|
|
||||||
get { return GetSOP().SitTargetPosition; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
{
|
|
||||||
GetSOP().SitTargetPosition = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string SitTargetText
|
|
||||||
{
|
|
||||||
get { return GetSOP().SitName; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
{
|
|
||||||
GetSOP().SitName = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string TouchText
|
|
||||||
{
|
|
||||||
get { return GetSOP().TouchName; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
{
|
|
||||||
GetSOP().TouchName = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Text
|
|
||||||
{
|
|
||||||
get { return GetSOP().Text; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (CanEdit())
|
|
||||||
{
|
|
||||||
GetSOP().SetText(value,new Vector3(1.0f,1.0f,1.0f),1.0f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsRotationLockedX
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsRotationLockedY
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsRotationLockedZ
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsSandboxed
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsImmotile
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsAlwaysReturned
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsTemporary
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsFlexible
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public PhysicsMaterial PhysicsMaterial
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObjectPhysics Physics
|
|
||||||
{
|
|
||||||
get { return this; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObjectShape Shape
|
|
||||||
{
|
|
||||||
get { return this; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObjectInventory Inventory
|
|
||||||
{
|
|
||||||
get { return new SOPObjectInventory(m_rootScene, GetSOP().TaskInventory); }
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Public Functions
|
|
||||||
|
|
||||||
public void Say(string msg)
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
SceneObjectPart sop = GetSOP();
|
|
||||||
m_rootScene.SimChat(msg, ChatTypeEnum.Say, sop.AbsolutePosition, sop.Name, sop.UUID, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Say(string msg,int channel)
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
SceneObjectPart sop = GetSOP();
|
|
||||||
m_rootScene.SimChat(Utils.StringToBytes(msg), ChatTypeEnum.Say,channel, sop.AbsolutePosition, sop.Name, sop.UUID, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dialog(UUID avatar, string message, string[] buttons, int chat_channel)
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
IDialogModule dm = m_rootScene.RequestModuleInterface<IDialogModule>();
|
|
||||||
|
|
||||||
if (dm == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (buttons.Length < 1)
|
|
||||||
{
|
|
||||||
Say("ERROR: No less than 1 button can be shown",2147483647);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (buttons.Length > 12)
|
|
||||||
{
|
|
||||||
Say("ERROR: No more than 12 buttons can be shown",2147483647);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (string button in buttons)
|
|
||||||
{
|
|
||||||
if (button == String.Empty)
|
|
||||||
{
|
|
||||||
Say("ERROR: button label cannot be blank",2147483647);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (button.Length > 24)
|
|
||||||
{
|
|
||||||
Say("ERROR: button label cannot be longer than 24 characters",2147483647);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dm.SendDialogToUser(
|
|
||||||
avatar, GetSOP().Name, GetSOP().UUID, GetSOP().OwnerID,
|
|
||||||
message, new UUID("00000000-0000-2222-3333-100000001000"), chat_channel, buttons);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region Supporting Functions
|
|
||||||
|
|
||||||
// Helper functions to understand if object has cut, hollow, dimple, and other affecting number of faces
|
|
||||||
private static void hasCutHollowDimpleProfileCut(int primType, PrimitiveBaseShape shape, out bool hasCut, out bool hasHollow,
|
|
||||||
out bool hasDimple, out bool hasProfileCut)
|
|
||||||
{
|
|
||||||
if (primType == (int)PrimType.Box
|
|
||||||
||
|
|
||||||
primType == (int)PrimType.Cylinder
|
|
||||||
||
|
|
||||||
primType == (int)PrimType.Prism)
|
|
||||||
|
|
||||||
hasCut = (shape.ProfileBegin > 0) || (shape.ProfileEnd > 0);
|
|
||||||
else
|
|
||||||
hasCut = (shape.PathBegin > 0) || (shape.PathEnd > 0);
|
|
||||||
|
|
||||||
hasHollow = shape.ProfileHollow > 0;
|
|
||||||
hasDimple = (shape.ProfileBegin > 0) || (shape.ProfileEnd > 0); // taken from llSetPrimitiveParms
|
|
||||||
hasProfileCut = hasDimple; // is it the same thing?
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int getScriptPrimType(PrimitiveBaseShape primShape)
|
|
||||||
{
|
|
||||||
if (primShape.SculptEntry)
|
|
||||||
return (int) PrimType.Sculpt;
|
|
||||||
if ((primShape.ProfileCurve & 0x07) == (byte) ProfileShape.Square)
|
|
||||||
{
|
|
||||||
if (primShape.PathCurve == (byte) Extrusion.Straight)
|
|
||||||
return (int) PrimType.Box;
|
|
||||||
if (primShape.PathCurve == (byte) Extrusion.Curve1)
|
|
||||||
return (int) PrimType.Tube;
|
|
||||||
}
|
|
||||||
else if ((primShape.ProfileCurve & 0x07) == (byte) ProfileShape.Circle)
|
|
||||||
{
|
|
||||||
if (primShape.PathCurve == (byte) Extrusion.Straight)
|
|
||||||
return (int) PrimType.Cylinder;
|
|
||||||
if (primShape.PathCurve == (byte) Extrusion.Curve1)
|
|
||||||
return (int) PrimType.Torus;
|
|
||||||
}
|
|
||||||
else if ((primShape.ProfileCurve & 0x07) == (byte) ProfileShape.HalfCircle)
|
|
||||||
{
|
|
||||||
if (primShape.PathCurve == (byte) Extrusion.Curve1 || primShape.PathCurve == (byte) Extrusion.Curve2)
|
|
||||||
return (int) PrimType.Sphere;
|
|
||||||
}
|
|
||||||
else if ((primShape.ProfileCurve & 0x07) == (byte) ProfileShape.EquilateralTriangle)
|
|
||||||
{
|
|
||||||
if (primShape.PathCurve == (byte) Extrusion.Straight)
|
|
||||||
return (int) PrimType.Prism;
|
|
||||||
if (primShape.PathCurve == (byte) Extrusion.Curve1)
|
|
||||||
return (int) PrimType.Ring;
|
|
||||||
}
|
|
||||||
return (int) PrimType.NotPrimitive;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int getNumberOfSides(SceneObjectPart part)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
bool hasCut;
|
|
||||||
bool hasHollow;
|
|
||||||
bool hasDimple;
|
|
||||||
bool hasProfileCut;
|
|
||||||
|
|
||||||
int primType = getScriptPrimType(part.Shape);
|
|
||||||
hasCutHollowDimpleProfileCut(primType, part.Shape, out hasCut, out hasHollow, out hasDimple, out hasProfileCut);
|
|
||||||
|
|
||||||
switch (primType)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case (int) PrimType.Box:
|
|
||||||
ret = 6;
|
|
||||||
if (hasCut) ret += 2;
|
|
||||||
if (hasHollow) ret += 1;
|
|
||||||
break;
|
|
||||||
case (int) PrimType.Cylinder:
|
|
||||||
ret = 3;
|
|
||||||
if (hasCut) ret += 2;
|
|
||||||
if (hasHollow) ret += 1;
|
|
||||||
break;
|
|
||||||
case (int) PrimType.Prism:
|
|
||||||
ret = 5;
|
|
||||||
if (hasCut) ret += 2;
|
|
||||||
if (hasHollow) ret += 1;
|
|
||||||
break;
|
|
||||||
case (int) PrimType.Sphere:
|
|
||||||
ret = 1;
|
|
||||||
if (hasCut) ret += 2;
|
|
||||||
if (hasDimple) ret += 2;
|
|
||||||
if (hasHollow)
|
|
||||||
ret += 1; // GOTCHA: LSL shows 2 additional sides here.
|
|
||||||
// This has been fixed, but may cause porting issues.
|
|
||||||
break;
|
|
||||||
case (int) PrimType.Torus:
|
|
||||||
ret = 1;
|
|
||||||
if (hasCut) ret += 2;
|
|
||||||
if (hasProfileCut) ret += 2;
|
|
||||||
if (hasHollow) ret += 1;
|
|
||||||
break;
|
|
||||||
case (int) PrimType.Tube:
|
|
||||||
ret = 4;
|
|
||||||
if (hasCut) ret += 2;
|
|
||||||
if (hasProfileCut) ret += 2;
|
|
||||||
if (hasHollow) ret += 1;
|
|
||||||
break;
|
|
||||||
case (int) PrimType.Ring:
|
|
||||||
ret = 3;
|
|
||||||
if (hasCut) ret += 2;
|
|
||||||
if (hasProfileCut) ret += 2;
|
|
||||||
if (hasHollow) ret += 1;
|
|
||||||
break;
|
|
||||||
case (int) PrimType.Sculpt:
|
|
||||||
ret = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region IObjectPhysics
|
|
||||||
|
|
||||||
public bool Enabled
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Phantom
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool PhantomCollisions
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public double Density
|
|
||||||
{
|
|
||||||
get { return (GetSOP().PhysActor.Mass/Scale.X*Scale.Y/Scale.Z); }
|
|
||||||
set { throw new NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public double Mass
|
|
||||||
{
|
|
||||||
get { return GetSOP().PhysActor.Mass; }
|
|
||||||
set { throw new NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public double Buoyancy
|
|
||||||
{
|
|
||||||
get { return GetSOP().PhysActor.Buoyancy; }
|
|
||||||
set { GetSOP().PhysActor.Buoyancy = (float)value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 GeometricCenter
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
Vector3 tmp = GetSOP().PhysActor.GeometricCenter;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 CenterOfMass
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
Vector3 tmp = GetSOP().PhysActor.CenterOfMass;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 RotationalVelocity
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
Vector3 tmp = GetSOP().PhysActor.RotationalVelocity;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
GetSOP().PhysActor.RotationalVelocity = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 Velocity
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
Vector3 tmp = GetSOP().PhysActor.Velocity;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
GetSOP().PhysActor.Velocity = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 Torque
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
Vector3 tmp = GetSOP().PhysActor.Torque;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
GetSOP().PhysActor.Torque = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 Acceleration
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
Vector3 tmp = GetSOP().PhysActor.Acceleration;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 Force
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
Vector3 tmp = GetSOP().PhysActor.Force;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
GetSOP().PhysActor.Force = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool FloatOnWater
|
|
||||||
{
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
GetSOP().PhysActor.FloatOnWater = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddForce(Vector3 force, bool pushforce)
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
GetSOP().PhysActor.AddForce(force, pushforce);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddAngularForce(Vector3 force, bool pushforce)
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
GetSOP().PhysActor.AddAngularForce(force, pushforce);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetMomentum(Vector3 momentum)
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
GetSOP().PhysActor.SetMomentum(momentum);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Implementation of IObjectShape
|
|
||||||
|
|
||||||
private UUID m_sculptMap = UUID.Zero;
|
|
||||||
|
|
||||||
public UUID SculptMap
|
|
||||||
{
|
|
||||||
get { return m_sculptMap; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_sculptMap = value;
|
|
||||||
SetPrimitiveSculpted(SculptMap, (byte) SculptType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private SculptType m_sculptType = Object.SculptType.Default;
|
|
||||||
|
|
||||||
public SculptType SculptType
|
|
||||||
{
|
|
||||||
get { return m_sculptType; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_sculptType = value;
|
|
||||||
SetPrimitiveSculpted(SculptMap, (byte) SculptType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public HoleShape HoleType
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public double HoleSize
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public PrimType PrimType
|
|
||||||
{
|
|
||||||
get { return (PrimType)getScriptPrimType(GetSOP().Shape); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetPrimitiveSculpted(UUID map, byte type)
|
|
||||||
{
|
|
||||||
ObjectShapePacket.ObjectDataBlock shapeBlock = new ObjectShapePacket.ObjectDataBlock();
|
|
||||||
|
|
||||||
SceneObjectPart part = GetSOP();
|
|
||||||
|
|
||||||
UUID sculptId = map;
|
|
||||||
|
|
||||||
shapeBlock.ObjectLocalID = part.LocalId;
|
|
||||||
shapeBlock.PathScaleX = 100;
|
|
||||||
shapeBlock.PathScaleY = 150;
|
|
||||||
|
|
||||||
// retain pathcurve
|
|
||||||
shapeBlock.PathCurve = part.Shape.PathCurve;
|
|
||||||
|
|
||||||
part.Shape.SetSculptProperties((byte)type, sculptId);
|
|
||||||
part.Shape.SculptEntry = true;
|
|
||||||
part.UpdateShape(shapeBlock);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region Implementation of IObjectSound
|
|
||||||
|
|
||||||
public IObjectSound Sound
|
|
||||||
{
|
|
||||||
get { return this; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Play(UUID asset, double volume)
|
|
||||||
{
|
|
||||||
if (!CanEdit())
|
|
||||||
return;
|
|
||||||
ISoundModule module = m_rootScene.RequestModuleInterface<ISoundModule>();
|
|
||||||
if (module != null)
|
|
||||||
{
|
|
||||||
module.SendSound(GetSOP().UUID, asset, volume, true, 0, false, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,215 +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 OpenSimulator 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;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object
|
|
||||||
{
|
|
||||||
public class SOPObjectInventory : IObjectInventory
|
|
||||||
{
|
|
||||||
TaskInventoryDictionary m_privateInventory; /// OpenSim's task inventory
|
|
||||||
Dictionary<UUID, IInventoryItem> m_publicInventory; /// MRM's inventory
|
|
||||||
Scene m_rootScene;
|
|
||||||
|
|
||||||
public SOPObjectInventory(Scene rootScene, TaskInventoryDictionary taskInventory)
|
|
||||||
{
|
|
||||||
m_rootScene = rootScene;
|
|
||||||
m_privateInventory = taskInventory;
|
|
||||||
m_publicInventory = new Dictionary<UUID, IInventoryItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Fully populate the public dictionary with the contents of the private dictionary
|
|
||||||
/// </summary>
|
|
||||||
/// <description>
|
|
||||||
/// This will only convert those items which hasn't already been converted. ensuring that
|
|
||||||
/// no items are converted twice, and that any references already in use are maintained.
|
|
||||||
/// </description>
|
|
||||||
private void SynchronizeDictionaries()
|
|
||||||
{
|
|
||||||
foreach (TaskInventoryItem privateItem in m_privateInventory.Values)
|
|
||||||
if (!m_publicInventory.ContainsKey(privateItem.ItemID))
|
|
||||||
m_publicInventory.Add(privateItem.ItemID, new InventoryItem(m_rootScene, privateItem));
|
|
||||||
}
|
|
||||||
|
|
||||||
#region IDictionary<UUID, IInventoryItem> implementation
|
|
||||||
public void Add (UUID key, IInventoryItem value)
|
|
||||||
{
|
|
||||||
m_publicInventory.Add(key, value);
|
|
||||||
m_privateInventory.Add(key, InventoryItem.FromInterface(value).ToTaskInventoryItem());
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ContainsKey (UUID key)
|
|
||||||
{
|
|
||||||
return m_privateInventory.ContainsKey(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Remove (UUID key)
|
|
||||||
{
|
|
||||||
m_publicInventory.Remove(key);
|
|
||||||
return m_privateInventory.Remove(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool TryGetValue (UUID key, out IInventoryItem value)
|
|
||||||
{
|
|
||||||
value = null;
|
|
||||||
|
|
||||||
bool result = false;
|
|
||||||
if (!m_publicInventory.TryGetValue(key, out value))
|
|
||||||
{
|
|
||||||
// wasn't found in the public inventory
|
|
||||||
TaskInventoryItem privateItem;
|
|
||||||
|
|
||||||
result = m_privateInventory.TryGetValue(key, out privateItem);
|
|
||||||
if (result)
|
|
||||||
{
|
|
||||||
value = new InventoryItem(m_rootScene, privateItem);
|
|
||||||
m_publicInventory.Add(key, value); // add item, so we don't convert again
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ICollection<UUID> Keys {
|
|
||||||
get {
|
|
||||||
return m_privateInventory.Keys;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ICollection<IInventoryItem> Values {
|
|
||||||
get {
|
|
||||||
SynchronizeDictionaries();
|
|
||||||
return m_publicInventory.Values;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region IEnumerable<KeyValuePair<UUID, IInventoryItem>> implementation
|
|
||||||
public IEnumerator<KeyValuePair<UUID, IInventoryItem>> GetEnumerator ()
|
|
||||||
{
|
|
||||||
SynchronizeDictionaries();
|
|
||||||
return m_publicInventory.GetEnumerator();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region IEnumerable implementation
|
|
||||||
IEnumerator IEnumerable.GetEnumerator ()
|
|
||||||
{
|
|
||||||
SynchronizeDictionaries();
|
|
||||||
return m_publicInventory.GetEnumerator();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region ICollection<KeyValuePair<UUID, IInventoryItem>> implementation
|
|
||||||
public void Add (KeyValuePair<UUID, IInventoryItem> item)
|
|
||||||
{
|
|
||||||
Add(item.Key, item.Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Clear ()
|
|
||||||
{
|
|
||||||
m_publicInventory.Clear();
|
|
||||||
m_privateInventory.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Contains (KeyValuePair<UUID, IInventoryItem> item)
|
|
||||||
{
|
|
||||||
return m_privateInventory.ContainsKey(item.Key);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CopyTo (KeyValuePair<UUID, IInventoryItem>[] array, int arrayIndex)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Remove (KeyValuePair<UUID, IInventoryItem> item)
|
|
||||||
{
|
|
||||||
return Remove(item.Key);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Count {
|
|
||||||
get {
|
|
||||||
return m_privateInventory.Count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsReadOnly {
|
|
||||||
get {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Explicit implementations
|
|
||||||
IInventoryItem System.Collections.Generic.IDictionary<UUID, IInventoryItem>.this[UUID key]
|
|
||||||
{
|
|
||||||
get {
|
|
||||||
IInventoryItem result;
|
|
||||||
if (TryGetValue(key, out result))
|
|
||||||
return result;
|
|
||||||
else
|
|
||||||
throw new KeyNotFoundException("[MRM] The requrested item ID could not be found");
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
m_publicInventory[key] = value;
|
|
||||||
m_privateInventory[key] = InventoryItem.FromInterface(value).ToTaskInventoryItem();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<UUID, IInventoryItem>>.CopyTo(System.Collections.Generic.KeyValuePair<UUID,IInventoryItem>[] array, int offset)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public IInventoryItem this[string name]
|
|
||||||
{
|
|
||||||
get {
|
|
||||||
foreach (TaskInventoryItem i in m_privateInventory.Values)
|
|
||||||
if (i.Name == name)
|
|
||||||
{
|
|
||||||
if (!m_publicInventory.ContainsKey(i.ItemID))
|
|
||||||
m_publicInventory.Add(i.ItemID, new InventoryItem(m_rootScene, i));
|
|
||||||
|
|
||||||
return m_publicInventory[i.ItemID];
|
|
||||||
}
|
|
||||||
throw new KeyNotFoundException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,136 +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 OpenSimulator 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.Drawing;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
class SOPObjectMaterial : System.MarshalByRefObject, IObjectMaterial
|
|
||||||
{
|
|
||||||
private readonly int m_face;
|
|
||||||
private readonly SceneObjectPart m_parent;
|
|
||||||
|
|
||||||
public SOPObjectMaterial(int m_face, SceneObjectPart m_parent)
|
|
||||||
{
|
|
||||||
this.m_face = m_face;
|
|
||||||
this.m_parent = m_parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Color Color
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
Color4 res = GetTexface().RGBA;
|
|
||||||
return Color.FromArgb((int) (res.A*255), (int) (res.R*255), (int) (res.G*255), (int) (res.B*255));
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
Primitive.TextureEntry tex = m_parent.Shape.Textures;
|
|
||||||
Primitive.TextureEntryFace texface = tex.CreateFace((uint)m_face);
|
|
||||||
texface.RGBA = new Color4(value.R,value.G,value.B,value.A);
|
|
||||||
tex.FaceTextures[m_face] = texface;
|
|
||||||
m_parent.UpdateTextureEntry(tex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID Texture
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
Primitive.TextureEntryFace texface = GetTexface();
|
|
||||||
return texface.TextureID;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
Primitive.TextureEntry tex = m_parent.Shape.Textures;
|
|
||||||
Primitive.TextureEntryFace texface = tex.CreateFace((uint)m_face);
|
|
||||||
texface.TextureID = value;
|
|
||||||
tex.FaceTextures[m_face] = texface;
|
|
||||||
m_parent.UpdateTextureEntry(tex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Primitive.TextureEntryFace GetTexface()
|
|
||||||
{
|
|
||||||
Primitive.TextureEntry tex = m_parent.Shape.Textures;
|
|
||||||
return tex.GetFace((uint)m_face);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TextureMapping Mapping
|
|
||||||
{
|
|
||||||
get { throw new System.NotImplementedException(); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Bright
|
|
||||||
{
|
|
||||||
get { return GetTexface().Fullbright; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
Primitive.TextureEntry tex = m_parent.Shape.Textures;
|
|
||||||
Primitive.TextureEntryFace texface = tex.CreateFace((uint)m_face);
|
|
||||||
texface.Fullbright = value;
|
|
||||||
tex.FaceTextures[m_face] = texface;
|
|
||||||
m_parent.UpdateTextureEntry(tex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public double Bloom
|
|
||||||
{
|
|
||||||
get { return GetTexface().Glow; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
Primitive.TextureEntry tex = m_parent.Shape.Textures;
|
|
||||||
Primitive.TextureEntryFace texface = tex.CreateFace((uint)m_face);
|
|
||||||
texface.Glow = (float) value;
|
|
||||||
tex.FaceTextures[m_face] = texface;
|
|
||||||
m_parent.UpdateTextureEntry(tex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Shiny
|
|
||||||
{
|
|
||||||
get { return GetTexface().Shiny != Shininess.None; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
Primitive.TextureEntry tex = m_parent.Shape.Textures;
|
|
||||||
Primitive.TextureEntryFace texface = tex.CreateFace((uint)m_face);
|
|
||||||
texface.Shiny = value ? Shininess.High : Shininess.None;
|
|
||||||
tex.FaceTextures[m_face] = texface;
|
|
||||||
m_parent.UpdateTextureEntry(tex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool BumpMap
|
|
||||||
{
|
|
||||||
get { return GetTexface().Bump == Bumpiness.None; }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,105 +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 OpenSimulator 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;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Security;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
class SPAvatar : System.MarshalByRefObject, IAvatar
|
|
||||||
{
|
|
||||||
private readonly Scene m_rootScene;
|
|
||||||
private readonly UUID m_ID;
|
|
||||||
private readonly ISecurityCredential m_security;
|
|
||||||
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
|
|
||||||
public SPAvatar(Scene scene, UUID ID, ISecurityCredential security)
|
|
||||||
{
|
|
||||||
m_rootScene = scene;
|
|
||||||
m_security = security;
|
|
||||||
m_ID = ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ScenePresence GetSP()
|
|
||||||
{
|
|
||||||
return m_rootScene.GetScenePresence(m_ID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get { return GetSP().Name; }
|
|
||||||
set { throw new SecurityException("Avatar Names are a read-only property."); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID GlobalID
|
|
||||||
{
|
|
||||||
get { return m_ID; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 WorldPosition
|
|
||||||
{
|
|
||||||
get { return GetSP().AbsolutePosition; }
|
|
||||||
set { GetSP().Teleport(value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsChildAgent
|
|
||||||
{
|
|
||||||
get { return GetSP().IsChildAgent; }
|
|
||||||
}
|
|
||||||
|
|
||||||
#region IAvatar implementation
|
|
||||||
public IAvatarAttachment[] Attachments
|
|
||||||
{
|
|
||||||
get {
|
|
||||||
List<IAvatarAttachment> attachments = new List<IAvatarAttachment>();
|
|
||||||
|
|
||||||
List<AvatarAttachment> internalAttachments = GetSP().Appearance.GetAttachments();
|
|
||||||
foreach (AvatarAttachment attach in internalAttachments)
|
|
||||||
{
|
|
||||||
attachments.Add(new SPAvatarAttachment(m_rootScene, this, attach.AttachPoint,
|
|
||||||
new UUID(attach.ItemID),
|
|
||||||
new UUID(attach.AssetID), m_security));
|
|
||||||
}
|
|
||||||
|
|
||||||
return attachments.ToArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LoadUrl(IObject sender, string message, string url)
|
|
||||||
{
|
|
||||||
IDialogModule dm = m_rootScene.RequestModuleInterface<IDialogModule>();
|
|
||||||
if (dm != null)
|
|
||||||
dm.SendUrlToUser(GetSP().UUID, sender.Name, sender.GlobalID, GetSP().UUID, false, message, url);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,65 +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 OpenSimulator 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 OpenMetaverse;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public class SPAvatarAttachment : IAvatarAttachment
|
|
||||||
{
|
|
||||||
private readonly Scene m_rootScene;
|
|
||||||
//private readonly IAvatar m_parent;
|
|
||||||
private readonly int m_location;
|
|
||||||
//private readonly UUID m_itemId;
|
|
||||||
private readonly UUID m_assetId;
|
|
||||||
|
|
||||||
private readonly ISecurityCredential m_security;
|
|
||||||
|
|
||||||
public SPAvatarAttachment(Scene rootScene, IAvatar self, int location, UUID itemId, UUID assetId, ISecurityCredential security)
|
|
||||||
{
|
|
||||||
m_rootScene = rootScene;
|
|
||||||
m_security = security;
|
|
||||||
//m_parent = self;
|
|
||||||
m_location = location;
|
|
||||||
//m_itemId = itemId;
|
|
||||||
m_assetId = assetId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Location { get { return m_location; } }
|
|
||||||
|
|
||||||
public IObject Asset
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return new SOPObject(m_rootScene, m_rootScene.GetSceneObjectPart(m_assetId).LocalId, m_security);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,62 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
class SecurityCredential : ISecurityCredential
|
|
||||||
{
|
|
||||||
private readonly ISocialEntity m_owner;
|
|
||||||
private readonly Scene m_scene;
|
|
||||||
|
|
||||||
public SecurityCredential(ISocialEntity m_owner, Scene m_scene)
|
|
||||||
{
|
|
||||||
this.m_owner = m_owner;
|
|
||||||
this.m_scene = m_scene;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ISocialEntity owner
|
|
||||||
{
|
|
||||||
get { return m_owner; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool CanEditObject(IObject target)
|
|
||||||
{
|
|
||||||
return m_scene.Permissions.CanEditObject(target.GlobalID, m_owner.GlobalID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool CanEditTerrain(int x, int y)
|
|
||||||
{
|
|
||||||
return m_scene.Permissions.CanTerraformLand(m_owner.GlobalID, new Vector3(x, y, 0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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 OpenSimulator 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 OpenSim.Region.OptionalModules.Scripting.Minimodule;
|
|
||||||
|
|
||||||
namespace OpenSim
|
|
||||||
{
|
|
||||||
class DrunkenTextAppreciationModule : MRMBase
|
|
||||||
{
|
|
||||||
public override void Start()
|
|
||||||
{
|
|
||||||
World.OnChat += World_OnChat;
|
|
||||||
}
|
|
||||||
|
|
||||||
void World_OnChat(IWorld sender, ChatEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Sender is IAvatar)
|
|
||||||
{
|
|
||||||
if (!e.Text.Contains("hic!"))
|
|
||||||
{
|
|
||||||
e.Text = e.Text.Replace("s", "sh");
|
|
||||||
e.Text = e.Text.Replace("S", "Sh");
|
|
||||||
e.Text += " ...hic!";
|
|
||||||
|
|
||||||
Host.Object.Say(e.Text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e.Sender is IObject)
|
|
||||||
{
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Stop()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
//MRM:C#
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule;
|
|
||||||
|
|
||||||
namespace OpenSim
|
|
||||||
{
|
|
||||||
class MiniModule : MRMBase
|
|
||||||
{
|
|
||||||
public microthreaded void MicroThreadFunction(string testparam)
|
|
||||||
{
|
|
||||||
Host.Object.Say("Hello " + testparam);
|
|
||||||
|
|
||||||
relax; // the 'relax' keyword gives up processing time.
|
|
||||||
// and should be inserted before, after or in
|
|
||||||
// any computationally "heavy" zones.
|
|
||||||
|
|
||||||
int c = 500;
|
|
||||||
while(c-- < 0) {
|
|
||||||
Host.Object.Say("C=" + c);
|
|
||||||
relax; // Putting 'relax' in microthreaded loops
|
|
||||||
// is an easy way to lower the CPU tax
|
|
||||||
// on your script.
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Start()
|
|
||||||
{
|
|
||||||
Host.Microthreads.Run(
|
|
||||||
MicroThreadFunction("World!")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Stop()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,98 +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 OpenSimulator 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;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule;
|
|
||||||
|
|
||||||
namespace OpenSim
|
|
||||||
{
|
|
||||||
class MiniModule : MRMBase
|
|
||||||
{
|
|
||||||
// private microthreaded Function(params...)
|
|
||||||
private IEnumerable TestMicrothread(string param)
|
|
||||||
{
|
|
||||||
Host.Console.Info("Microthreaded " + param);
|
|
||||||
// relax;
|
|
||||||
yield return null;
|
|
||||||
Host.Console.Info("Microthreaded 2" + param);
|
|
||||||
yield return null;
|
|
||||||
int c = 100;
|
|
||||||
while (c-- < 0)
|
|
||||||
{
|
|
||||||
Host.Console.Info("Microthreaded Looped " + c + " " + param);
|
|
||||||
yield return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Microthread(IEnumerable thread)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RunMicrothread()
|
|
||||||
{
|
|
||||||
List<IEnumerator> threads = new List<IEnumerator>();
|
|
||||||
threads.Add(TestMicrothread("A").GetEnumerator());
|
|
||||||
threads.Add(TestMicrothread("B").GetEnumerator());
|
|
||||||
threads.Add(TestMicrothread("C").GetEnumerator());
|
|
||||||
|
|
||||||
Microthread(TestMicrothread("Ohai"));
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
while (threads.Count > 0)
|
|
||||||
{
|
|
||||||
i++;
|
|
||||||
bool running = threads[i%threads.Count].MoveNext();
|
|
||||||
|
|
||||||
if (!running)
|
|
||||||
threads.Remove(threads[i%threads.Count]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Start()
|
|
||||||
{
|
|
||||||
// Say Hello
|
|
||||||
Host.Object.Say("Hello, Avatar!");
|
|
||||||
|
|
||||||
// Register ourselves to listen
|
|
||||||
// for touch events.
|
|
||||||
Host.Object.OnTouch += OnTouched;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is our touch event handler
|
|
||||||
void OnTouched(IObject sender, TouchEventArgs e)
|
|
||||||
{
|
|
||||||
Host.Object.Say("Touched.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Stop()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,250 +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 OpenSimulator 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 OpenMetaverse;
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.WorldX;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
|
||||||
{
|
|
||||||
public class World : System.MarshalByRefObject, IWorld, IWorldAudio
|
|
||||||
{
|
|
||||||
private readonly Scene m_internalScene;
|
|
||||||
private readonly ISecurityCredential m_security;
|
|
||||||
private readonly Heightmap m_heights;
|
|
||||||
|
|
||||||
private readonly ObjectAccessor m_objs;
|
|
||||||
|
|
||||||
public World(Scene internalScene, ISecurityCredential securityCredential)
|
|
||||||
{
|
|
||||||
m_security = securityCredential;
|
|
||||||
m_internalScene = internalScene;
|
|
||||||
m_heights = new Heightmap(m_internalScene);
|
|
||||||
m_objs = new ObjectAccessor(m_internalScene, securityCredential);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Events
|
|
||||||
|
|
||||||
#region OnNewUser
|
|
||||||
|
|
||||||
private event OnNewUserDelegate _OnNewUser;
|
|
||||||
private bool _OnNewUserActive;
|
|
||||||
|
|
||||||
public event OnNewUserDelegate OnNewUser
|
|
||||||
{
|
|
||||||
add
|
|
||||||
{
|
|
||||||
if (!_OnNewUserActive)
|
|
||||||
{
|
|
||||||
_OnNewUserActive = true;
|
|
||||||
m_internalScene.EventManager.OnNewPresence += EventManager_OnNewPresence;
|
|
||||||
}
|
|
||||||
|
|
||||||
_OnNewUser += value;
|
|
||||||
}
|
|
||||||
remove
|
|
||||||
{
|
|
||||||
_OnNewUser -= value;
|
|
||||||
|
|
||||||
if (_OnNewUser == null)
|
|
||||||
{
|
|
||||||
_OnNewUserActive = false;
|
|
||||||
m_internalScene.EventManager.OnNewPresence -= EventManager_OnNewPresence;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventManager_OnNewPresence(ScenePresence presence)
|
|
||||||
{
|
|
||||||
if (_OnNewUser != null)
|
|
||||||
{
|
|
||||||
NewUserEventArgs e = new NewUserEventArgs();
|
|
||||||
e.Avatar = new SPAvatar(m_internalScene, presence.UUID, m_security);
|
|
||||||
_OnNewUser(this, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region OnChat
|
|
||||||
private event OnChatDelegate _OnChat;
|
|
||||||
private bool _OnChatActive;
|
|
||||||
|
|
||||||
public IWorldAudio Audio
|
|
||||||
{
|
|
||||||
get { return this; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public event OnChatDelegate OnChat
|
|
||||||
{
|
|
||||||
add
|
|
||||||
{
|
|
||||||
if (!_OnChatActive)
|
|
||||||
{
|
|
||||||
_OnChatActive = true;
|
|
||||||
m_internalScene.EventManager.OnChatFromClient += EventManager_OnChatFromClient;
|
|
||||||
m_internalScene.EventManager.OnChatFromWorld += EventManager_OnChatFromWorld;
|
|
||||||
}
|
|
||||||
|
|
||||||
_OnChat += value;
|
|
||||||
}
|
|
||||||
remove
|
|
||||||
{
|
|
||||||
_OnChat -= value;
|
|
||||||
|
|
||||||
if (_OnChat == null)
|
|
||||||
{
|
|
||||||
_OnChatActive = false;
|
|
||||||
m_internalScene.EventManager.OnChatFromClient -= EventManager_OnChatFromClient;
|
|
||||||
m_internalScene.EventManager.OnChatFromWorld -= EventManager_OnChatFromWorld;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventManager_OnChatFromWorld(object sender, OSChatMessage chat)
|
|
||||||
{
|
|
||||||
if (_OnChat != null)
|
|
||||||
{
|
|
||||||
HandleChatPacket(chat);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleChatPacket(OSChatMessage chat)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(chat.Message))
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Object?
|
|
||||||
if (chat.Sender == null && chat.SenderObject != null)
|
|
||||||
{
|
|
||||||
ChatEventArgs e = new ChatEventArgs();
|
|
||||||
e.Sender = new SOPObject(m_internalScene, ((SceneObjectPart) chat.SenderObject).LocalId, m_security);
|
|
||||||
e.Text = chat.Message;
|
|
||||||
e.Channel = chat.Channel;
|
|
||||||
|
|
||||||
_OnChat(this, e);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Avatar?
|
|
||||||
if (chat.Sender != null && chat.SenderObject == null)
|
|
||||||
{
|
|
||||||
ChatEventArgs e = new ChatEventArgs();
|
|
||||||
e.Sender = new SPAvatar(m_internalScene, chat.SenderUUID, m_security);
|
|
||||||
e.Text = chat.Message;
|
|
||||||
e.Channel = chat.Channel;
|
|
||||||
|
|
||||||
_OnChat(this, e);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Skip if other
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventManager_OnChatFromClient(object sender, OSChatMessage chat)
|
|
||||||
{
|
|
||||||
if (_OnChat != null)
|
|
||||||
{
|
|
||||||
HandleChatPacket(chat);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public IObjectAccessor Objects
|
|
||||||
{
|
|
||||||
get { return m_objs; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IParcel[] Parcels
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
List<ILandObject> m_los = m_internalScene.LandChannel.AllParcels();
|
|
||||||
List<IParcel> m_parcels = new List<IParcel>(m_los.Count);
|
|
||||||
|
|
||||||
foreach (ILandObject landObject in m_los)
|
|
||||||
{
|
|
||||||
m_parcels.Add(new LOParcel(m_internalScene, landObject.LandData.LocalID));
|
|
||||||
}
|
|
||||||
|
|
||||||
return m_parcels.ToArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public IAvatar[] Avatars
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
EntityBase[] ents = m_internalScene.Entities.GetAllByType<ScenePresence>();
|
|
||||||
IAvatar[] rets = new IAvatar[ents.Length];
|
|
||||||
|
|
||||||
for (int i = 0; i < ents.Length; i++)
|
|
||||||
{
|
|
||||||
EntityBase ent = ents[i];
|
|
||||||
rets[i] = new SPAvatar(m_internalScene, ent.UUID, m_security);
|
|
||||||
}
|
|
||||||
|
|
||||||
return rets;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IHeightmap Terrain
|
|
||||||
{
|
|
||||||
get { return m_heights; }
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Implementation of IWorldAudio
|
|
||||||
|
|
||||||
public void PlaySound(UUID audio, Vector3 position, double volume)
|
|
||||||
{
|
|
||||||
ISoundModule soundModule = m_internalScene.RequestModuleInterface<ISoundModule>();
|
|
||||||
if (soundModule != null)
|
|
||||||
{
|
|
||||||
soundModule.TriggerSound(audio, UUID.Zero, UUID.Zero, UUID.Zero, volume, position,
|
|
||||||
m_internalScene.RegionInfo.RegionHandle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PlaySound(UUID audio, Vector3 position)
|
|
||||||
{
|
|
||||||
ISoundModule soundModule = m_internalScene.RequestModuleInterface<ISoundModule>();
|
|
||||||
if (soundModule != null)
|
|
||||||
{
|
|
||||||
soundModule.TriggerSound(audio, UUID.Zero, UUID.Zero, UUID.Zero, 1.0, position,
|
|
||||||
m_internalScene.RegionInfo.RegionHandle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,40 +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 OpenSimulator 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.Text;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.WorldX
|
|
||||||
{
|
|
||||||
public interface IWorldAudio
|
|
||||||
{
|
|
||||||
void PlaySound(UUID audio, Vector3 position, double volume);
|
|
||||||
void PlaySound(UUID audio, Vector3 position);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,42 +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 OpenSimulator 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 OpenSim.Region.Framework.Scenes;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.ObjectModules
|
|
||||||
{
|
|
||||||
interface IObjectModule
|
|
||||||
{
|
|
||||||
void Add(EntityBase entity, Scene scene);
|
|
||||||
void Start();
|
|
||||||
void Stop();
|
|
||||||
void Tick();
|
|
||||||
|
|
||||||
string ClassName { get; }
|
|
||||||
bool IsShared { get; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1054,30 +1054,6 @@
|
||||||
Include-osslEnable = "config-include/osslEnable.ini"
|
Include-osslEnable = "config-include/osslEnable.ini"
|
||||||
|
|
||||||
|
|
||||||
[MRM]
|
|
||||||
;; Enables the Mini Region Modules Script Engine.
|
|
||||||
; Enabled = false
|
|
||||||
|
|
||||||
;; Runs MRM in a Security Sandbox
|
|
||||||
;; WARNING: DISABLING IS A SECURITY RISK.
|
|
||||||
; Sandboxed = true
|
|
||||||
|
|
||||||
;; The level sandbox to use, adjust at your OWN RISK.
|
|
||||||
;; Valid values are:
|
|
||||||
;; * FullTrust
|
|
||||||
;; * SkipVerification
|
|
||||||
;; * Execution
|
|
||||||
;; * Nothing
|
|
||||||
;; * LocalIntranet
|
|
||||||
;; * Internet
|
|
||||||
;; * Everything
|
|
||||||
; SandboxLevel = "Internet"
|
|
||||||
|
|
||||||
;; Only allow Region Owners to run MRMs
|
|
||||||
;; May represent a security risk if you disable this.
|
|
||||||
; OwnerOnly = true
|
|
||||||
|
|
||||||
|
|
||||||
[FreeSwitchVoice]
|
[FreeSwitchVoice]
|
||||||
;; In order for this to work you need a functioning FreeSWITCH PBX set up.
|
;; In order for this to work you need a functioning FreeSWITCH PBX set up.
|
||||||
;; Configuration details at http://opensimulator.org/wiki/Freeswitch_Module
|
;; Configuration details at http://opensimulator.org/wiki/Freeswitch_Module
|
||||||
|
|
|
@ -1952,31 +1952,6 @@
|
||||||
;broker = "http://broker.place.com/{1}"
|
;broker = "http://broker.place.com/{1}"
|
||||||
|
|
||||||
|
|
||||||
[MRM]
|
|
||||||
; Enables the Mini Region Modules Script Engine.
|
|
||||||
; default is false
|
|
||||||
Enabled = false
|
|
||||||
|
|
||||||
; Runs MRM in a Security Sandbox
|
|
||||||
; WARNING: DISABLING IS A SECURITY RISK.
|
|
||||||
Sandboxed = true
|
|
||||||
|
|
||||||
; The level sandbox to use, adjust at your OWN RISK.
|
|
||||||
; Valid values are:
|
|
||||||
; * FullTrust
|
|
||||||
; * SkipVerification
|
|
||||||
; * Execution
|
|
||||||
; * Nothing
|
|
||||||
; * LocalIntranet
|
|
||||||
; * Internet
|
|
||||||
; * Everything
|
|
||||||
SandboxLevel = "Internet"
|
|
||||||
|
|
||||||
; Only allow Region Owners to run MRMs
|
|
||||||
; May represent a security risk if you disable this.
|
|
||||||
OwnerOnly = true
|
|
||||||
|
|
||||||
|
|
||||||
[Hypergrid]
|
[Hypergrid]
|
||||||
; Keep it false for now. Making it true requires the use of a special client in order to access inventory
|
; Keep it false for now. Making it true requires the use of a special client in order to access inventory
|
||||||
safemode = false
|
safemode = false
|
||||||
|
|
Loading…
Reference in New Issue