From e1f68145be8b0cfc48c7fe6920ae8db1bfa049f5 Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Sat, 7 Mar 2009 02:00:18 +0000 Subject: Update svn properties. --- .../Scripting/Minimodule/SOPObject.cs | 634 ++++++++++----------- 1 file changed, 317 insertions(+), 317 deletions(-) (limited to 'OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs') diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs index d939e85..e154b79 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs @@ -1,317 +1,317 @@ -using System.Collections.Generic; -using OpenMetaverse; -using OpenSim.Framework; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.OptionalModules.Scripting.Minimodule -{ - class SOPObject : IObject - { - private readonly Scene m_rootScene; - private readonly uint m_localID; - - public SOPObject(Scene rootScene, uint localID) - { - m_rootScene = rootScene; - m_localID = localID; - } - - /// - /// This needs to run very, very quickly. - /// It is utilized in nearly every property and method. - /// - /// - private SceneObjectPart GetSOP() - { - if (m_rootScene.Entities.ContainsKey(m_localID)) - return ((SceneObjectGroup) m_rootScene.Entities[m_localID]).RootPart; - - return null; - } - - public bool Exists - { - get { return GetSOP() != null; } - } - - public uint LocalID - { - get { return m_localID; } - } - - public UUID GlobalID - { - get { return GetSOP().UUID; } - } - - public IObject[] Children - { - get - { - SceneObjectPart my = GetSOP(); - int total = my.ParentGroup.Children.Count; - - IObject[] rets = new IObject[total]; - - int i = 0; - foreach (KeyValuePair pair in my.ParentGroup.Children) - { - rets[i++] = new SOPObject(m_rootScene, pair.Value.LocalId); - } - - return rets; - } - } - - public IObject Root - { - get { return new SOPObject(m_rootScene, GetSOP().ParentGroup.RootPart.LocalId); } - } - - public IObjectFace[] Faces - { - get - { - SceneObjectPart sop = GetSOP(); - IObjectFace[] rets = new IObjectFace[getNumberOfSides(sop)]; - - for (int i = 0; i < rets.Length;i++ ) - { - //rets[i] = new ObjectFace - } - - return rets; - } - } - - public Vector3 Scale - { - get { return GetSOP().Scale; } - set { GetSOP().Scale = value; } - } - - public Quaternion Rotation - { - get { throw new System.NotImplementedException(); } - set { throw new System.NotImplementedException(); } - } - - public Vector3 SitTarget - { - get { throw new System.NotImplementedException(); } - set { throw new System.NotImplementedException(); } - } - - public string SitTargetText - { - get { throw new System.NotImplementedException(); } - set { throw new System.NotImplementedException(); } - } - - public string TouchText - { - get { throw new System.NotImplementedException(); } - set { throw new System.NotImplementedException(); } - } - - public string Text - { - get { throw new System.NotImplementedException(); } - set { throw new System.NotImplementedException(); } - } - - public bool IsPhysical - { - get { throw new System.NotImplementedException(); } - set { throw new System.NotImplementedException(); } - } - - public bool IsPhantom - { - get { throw new System.NotImplementedException(); } - set { throw new System.NotImplementedException(); } - } - - 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 PrimType PrimShape - { - get { return (PrimType) getScriptPrimType(GetSOP().Shape); } - set { throw new System.NotImplementedException(); } - } - - public Material Material - { - get { throw new System.NotImplementedException(); } - set { throw new System.NotImplementedException(); } - } - - - #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 - - } -} +using System.Collections.Generic; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.OptionalModules.Scripting.Minimodule +{ + class SOPObject : IObject + { + private readonly Scene m_rootScene; + private readonly uint m_localID; + + public SOPObject(Scene rootScene, uint localID) + { + m_rootScene = rootScene; + m_localID = localID; + } + + /// + /// This needs to run very, very quickly. + /// It is utilized in nearly every property and method. + /// + /// + private SceneObjectPart GetSOP() + { + if (m_rootScene.Entities.ContainsKey(m_localID)) + return ((SceneObjectGroup) m_rootScene.Entities[m_localID]).RootPart; + + return null; + } + + public bool Exists + { + get { return GetSOP() != null; } + } + + public uint LocalID + { + get { return m_localID; } + } + + public UUID GlobalID + { + get { return GetSOP().UUID; } + } + + public IObject[] Children + { + get + { + SceneObjectPart my = GetSOP(); + int total = my.ParentGroup.Children.Count; + + IObject[] rets = new IObject[total]; + + int i = 0; + foreach (KeyValuePair pair in my.ParentGroup.Children) + { + rets[i++] = new SOPObject(m_rootScene, pair.Value.LocalId); + } + + return rets; + } + } + + public IObject Root + { + get { return new SOPObject(m_rootScene, GetSOP().ParentGroup.RootPart.LocalId); } + } + + public IObjectFace[] Faces + { + get + { + SceneObjectPart sop = GetSOP(); + IObjectFace[] rets = new IObjectFace[getNumberOfSides(sop)]; + + for (int i = 0; i < rets.Length;i++ ) + { + //rets[i] = new ObjectFace + } + + return rets; + } + } + + public Vector3 Scale + { + get { return GetSOP().Scale; } + set { GetSOP().Scale = value; } + } + + public Quaternion Rotation + { + get { throw new System.NotImplementedException(); } + set { throw new System.NotImplementedException(); } + } + + public Vector3 SitTarget + { + get { throw new System.NotImplementedException(); } + set { throw new System.NotImplementedException(); } + } + + public string SitTargetText + { + get { throw new System.NotImplementedException(); } + set { throw new System.NotImplementedException(); } + } + + public string TouchText + { + get { throw new System.NotImplementedException(); } + set { throw new System.NotImplementedException(); } + } + + public string Text + { + get { throw new System.NotImplementedException(); } + set { throw new System.NotImplementedException(); } + } + + public bool IsPhysical + { + get { throw new System.NotImplementedException(); } + set { throw new System.NotImplementedException(); } + } + + public bool IsPhantom + { + get { throw new System.NotImplementedException(); } + set { throw new System.NotImplementedException(); } + } + + 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 PrimType PrimShape + { + get { return (PrimType) getScriptPrimType(GetSOP().Shape); } + set { throw new System.NotImplementedException(); } + } + + public Material Material + { + get { throw new System.NotImplementedException(); } + set { throw new System.NotImplementedException(); } + } + + + #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 + + } +} -- cgit v1.1