From b8619386eb31a2bf3f460e464d0237f6bee5f56f Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sat, 11 Apr 2009 10:21:04 +0000 Subject: * Minor MRM Cleanup * Interfaces now live in Interfaces subdirectory. * Namespace does not yet reflect this change. * Final namespace for MRMs will probably sit somewhere around OpenSim.Extend.MRM[?] --- .../Scripting/Minimodule/Interfaces/IAvatar.cs | 39 ++++ .../Scripting/Minimodule/Interfaces/IEntity.cs | 14 ++ .../Scripting/Minimodule/Interfaces/IGraphics.cs | 12 ++ .../Scripting/Minimodule/Interfaces/IHeightmap.cs | 69 +++++++ .../Scripting/Minimodule/Interfaces/IHost.cs | 41 ++++ .../Scripting/Minimodule/Interfaces/IObject.cs | 223 +++++++++++++++++++++ .../Minimodule/Interfaces/IObjectAccessor.cs | 39 ++++ .../Scripting/Minimodule/Interfaces/IParcel.cs | 42 ++++ .../Minimodule/Interfaces/IPersistence.cs | 56 ++++++ .../Scripting/Minimodule/Interfaces/IScheduler.cs | 43 ++++ .../Minimodule/Interfaces/ISocialEntity.cs | 41 ++++ .../Scripting/Minimodule/Interfaces/IWorld.cs | 57 ++++++ 12 files changed, 676 insertions(+) create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IEntity.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IGraphics.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHeightmap.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHost.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObjectAccessor.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IParcel.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IPersistence.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IScheduler.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/ISocialEntity.cs create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs (limited to 'OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces') diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs new file mode 100644 index 0000000..92ef490 --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs @@ -0,0 +1,39 @@ +/* + * 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 + { + + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IEntity.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IEntity.cs new file mode 100644 index 0000000..94c53e3 --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IEntity.cs @@ -0,0 +1,14 @@ +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; } + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IGraphics.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IGraphics.cs new file mode 100644 index 0000000..f4bc12e --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IGraphics.cs @@ -0,0 +1,12 @@ +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); + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHeightmap.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHeightmap.cs new file mode 100644 index 0000000..eea1baf --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHeightmap.cs @@ -0,0 +1,69 @@ +/* + * 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 + { + /// + /// Returns [or sets] the heightmap value at specified coordinates. + /// + /// X Coordinate + /// Y Coordinate + /// A value in meters representing height. Can be negative. Value correlates with Z parameter in world coordinates + /// + /// double heightVal = World.Heightmap[128,128]; + /// World.Heightmap[128,128] *= 5.0; + /// World.Heightmap[128,128] = 25; + /// + double this[int x, int y] + { + get; + set; + } + + /// + /// The maximum length of the region (Y axis), exclusive. (eg Height = 256, max Y = 255). Minimum is always 0 inclusive. + /// + /// + /// Host.Console.Info("The terrain length of this region is " + World.Heightmap.Length); + /// + int Length { get; } + + /// + /// The maximum width of the region (X axis), exclusive. (eg Width = 256, max X = 255). Minimum is always 0 inclusive. + /// + /// + /// Host.Console.Info("The terrain width of this region is " + World.Heightmap.Width); + /// + int Width { get; } + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHost.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHost.cs new file mode 100644 index 0000000..8980b8f --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHost.cs @@ -0,0 +1,41 @@ +/* + * 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; + +namespace OpenSim.Region.OptionalModules.Scripting.Minimodule +{ + public interface IHost + { + IObject Object { get; } + ILog Console { get; } + IGraphics Graphics { get; } + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs new file mode 100644 index 0000000..e17b716 --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs @@ -0,0 +1,223 @@ +/* + * 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 +{ + 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 + + /// + /// 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. + /// + /// + /// 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"); + /// } + /// + /// + /// 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. + /// + bool Exists { get; } + + /// + /// The local region-unique ID for this object. + /// + uint LocalID { get; } + + /// + /// The description assigned to this object. + /// + String Description { get; set; } + + /// + /// Returns the root object of a linkset. If this object is the root, it will return itself. + /// + IObject Root { get; } + + /// + /// Returns a collection of objects which are linked to the current object. Does not include the root object. + /// + IObject[] Children { get; } + + /// + /// 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. + /// + IObjectMaterial[] Materials { get; } + + /// + /// The bounding box of the object. Primitive and Mesh objects alike are scaled to fit within these bounds. + /// + Vector3 Scale { get; set; } + + /// + /// The rotation of the object relative to the Scene + /// + Quaternion WorldRotation { get; set; } + + /// + /// The rotation of the object relative to a parent object + /// If root, works the same as WorldRotation + /// + Quaternion OffsetRotation { get; set; } + + /// + /// The position of the object relative to a parent object + /// If root, works the same as WorldPosition + /// + Vector3 OffsetPosition { get; set; } + + Vector3 SitTarget { get; set; } + String SitTargetText { get; set; } + + String TouchText { get; set; } + + /// + /// Text to be associated with this object, in the + /// Second Life(r) viewer, this is shown above the + /// object. + /// + 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; } + + PrimType PrimShape { get; set; } + // 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; } + + + /// + /// Causes the object to speak to its surroundings, + /// equivilent to LSL/OSSL llSay + /// + /// The message to send to the user + void Say(string msg); + + } + + public enum PhysicsMaterial + { + Default, + Glass, + Metal, + Plastic, + Wood, + Rubber, + Stone, + Flesh + } + + public enum PrimType + { + NotPrimitive = 255, + Box = 0, + Cylinder = 1, + Prism = 2, + Sphere = 3, + Torus = 4, + Tube = 5, + Ring = 6, + Sculpt = 7 + } + + 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) [DEPRECIATE IN FAVOUR OF UUID?] + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObjectAccessor.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObjectAccessor.cs new file mode 100644 index 0000000..cd27a6a --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObjectAccessor.cs @@ -0,0 +1,39 @@ +/* + * 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 this[int index] { get; } + IObject this[uint index] { get; } + IObject this[UUID index] { get; } + } +} \ No newline at end of file diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IParcel.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IParcel.cs new file mode 100644 index 0000000..3b229a7 --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IParcel.cs @@ -0,0 +1,42 @@ +/* + * 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; } + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IPersistence.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IPersistence.cs new file mode 100644 index 0000000..bde51fe --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IPersistence.cs @@ -0,0 +1,56 @@ +/* + * 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(Guid storageID); + T Get(); + + /// + /// 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. + /// + /// + /// + void Put(Guid storageID, T data); + + /// + /// Stores 'data' into the persistence system + /// using the default ID for this script. + /// + /// + void Put(T data); + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IScheduler.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IScheduler.cs new file mode 100644 index 0000000..cf45de7 --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IScheduler.cs @@ -0,0 +1,43 @@ +using System; + +namespace OpenSim.Region.OptionalModules.Scripting.Minimodule +{ + interface IScheduler + { + /// + /// Schedule an event callback to occur + /// when 'time' is elapsed. + /// + /// The period to wait before executing + void RunIn(TimeSpan time); + + /// + /// Schedule an event callback to fire + /// every "time". Equivilent to a repeating + /// timer. + /// + /// The period to wait between executions + void RunAndRepeat(TimeSpan time); + + /// + /// Fire this scheduler only when the region has + /// a user in it. + /// + bool WhenRegionOccupied { get; set; } + + /// + /// Fire this event only when the region is visible + /// to a child agent, or there is a full agent + /// in this region. + /// + bool WhenRegionVisible { get; set; } + + /// + /// 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 a lower + /// processor cost to running your code. + /// + bool Schedule { get; set; } + } +} diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/ISocialEntity.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/ISocialEntity.cs new file mode 100644 index 0000000..cbac123 --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/ISocialEntity.cs @@ -0,0 +1,41 @@ +/* + * 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; } + } +} \ No newline at end of file diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs new file mode 100644 index 0000000..9196acd --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs @@ -0,0 +1,57 @@ +/* + * 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 +{ + 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 delegate void OnChatDelegate(IWorld sender, ChatEventArgs e); + + public interface IWorld + { + IObjectAccessor Objects { get; } + IAvatar[] Avatars { get; } + IParcel[] Parcels { get; } + IHeightmap Terrain { get; } + + event OnChatDelegate OnChat; + event OnNewUserDelegate OnNewUser; + } +} -- cgit v1.1