* Adds IObject.Shape to MRM
* Implements Sculpty modification support to MRM * Example: IObject.Shape.SculptMap = new UUID("0000-0000-0000....");0.6.5-rc1
parent
c41d2a1e3d
commit
b2a7c1468e
|
@ -157,7 +157,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||||
|
|
||||||
bool IsFlexible { get; set; }
|
bool IsFlexible { get; set; }
|
||||||
|
|
||||||
PrimType PrimShape { get; set; }
|
IObjectShape Shape { get; }
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// PrimHole
|
// PrimHole
|
||||||
// Repeats, Offsets, Cut/Dimple/ProfileCut
|
// Repeats, Offsets, Cut/Dimple/ProfileCut
|
||||||
|
@ -191,19 +192,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||||
Flesh
|
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
|
public enum TextureMapping
|
||||||
{
|
{
|
||||||
Default,
|
Default,
|
||||||
|
|
|
@ -1,31 +1,4 @@
|
||||||
/*
|
using System;
|
||||||
* 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
|
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||||
{
|
{
|
||||||
|
@ -50,21 +23,30 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||||
/// Fire this scheduler only when the region has
|
/// Fire this scheduler only when the region has
|
||||||
/// a user in it.
|
/// a user in it.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
bool WhenRegionOccupied { get; set; }
|
bool IfOccupied { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fire this only when simulator performance
|
||||||
|
/// is reasonable. (eg sysload <= 1.0)
|
||||||
|
/// </summary>
|
||||||
|
bool IfHealthy { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fire this event only when the region is visible
|
/// Fire this event only when the region is visible
|
||||||
/// to a child agent, or there is a full agent
|
/// to a child agent, or there is a full agent
|
||||||
/// in this region.
|
/// in this region.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
bool WhenRegionVisible { get; set; }
|
bool IfVisible { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Determines whether this runs in the master scheduler thread, or a new thread
|
/// 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
|
/// 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
|
/// code does not execute perfectly on time, however will result in better
|
||||||
/// processor cost to running your code.
|
/// region performance.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Default: true
|
||||||
|
/// </remarks>
|
||||||
bool Schedule { get; set; }
|
bool Schedule { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
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; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,14 +28,17 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
|
using OpenMetaverse.Packets;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Object;
|
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Object;
|
||||||
using OpenSim.Region.Physics.Manager;
|
using OpenSim.Region.Physics.Manager;
|
||||||
|
using PrimType=OpenSim.Region.OptionalModules.Scripting.Minimodule.Object.PrimType;
|
||||||
|
using SculptType=OpenSim.Region.OptionalModules.Scripting.Minimodule.Object.SculptType;
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||||
{
|
{
|
||||||
class SOPObject : MarshalByRefObject, IObject, IObjectPhysics
|
class SOPObject : MarshalByRefObject, IObject, IObjectPhysics, IObjectShape
|
||||||
{
|
{
|
||||||
private readonly Scene m_rootScene;
|
private readonly Scene m_rootScene;
|
||||||
private readonly uint m_localID;
|
private readonly uint m_localID;
|
||||||
|
@ -282,12 +285,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||||
set { throw new System.NotImplementedException(); }
|
set { throw new System.NotImplementedException(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public PrimType PrimShape
|
|
||||||
{
|
|
||||||
get { return (PrimType) getScriptPrimType(GetSOP().Shape); }
|
|
||||||
set { throw new System.NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public PhysicsMaterial PhysicsMaterial
|
public PhysicsMaterial PhysicsMaterial
|
||||||
{
|
{
|
||||||
get { throw new System.NotImplementedException(); }
|
get { throw new System.NotImplementedException(); }
|
||||||
|
@ -299,6 +296,11 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||||
get { return this; }
|
get { return this; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IObjectShape Shape
|
||||||
|
{
|
||||||
|
get { return this; }
|
||||||
|
}
|
||||||
|
|
||||||
#region Public Functions
|
#region Public Functions
|
||||||
|
|
||||||
public void Say(string msg)
|
public void Say(string msg)
|
||||||
|
@ -568,6 +570,73 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||||
GetSOP().PhysActor.SetMomentum(new PhysicsVector(momentum.X, momentum.Y, momentum.Z));
|
GetSOP().PhysActor.SetMomentum(new PhysicsVector(momentum.X, momentum.Y, momentum.Z));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Implementation of IObjectShape
|
||||||
|
|
||||||
|
private UUID m_sculptMap = UUID.Zero;
|
||||||
|
|
||||||
|
public UUID SculptMap
|
||||||
|
{
|
||||||
|
get { return m_sculptMap; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
m_sculptMap = value;
|
||||||
|
SetPrimitiveSculpted(SculptMap, (byte) SculptType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private SculptType m_sculptType = Object.SculptType.Default;
|
||||||
|
|
||||||
|
public SculptType SculptType
|
||||||
|
{
|
||||||
|
get { return m_sculptType; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
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.SetSculptData((byte)type, sculptId);
|
||||||
|
part.Shape.SculptEntry = true;
|
||||||
|
part.UpdateShape(shapeBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue