From 86a429bc44b6fc503b3303a946d088d796d5c530 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 24 Dec 2009 18:18:14 +0100 Subject: Add the LSL List Size property --- OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | 41 ++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/ScriptEngine/Shared') diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index 3f38bb6..faf9c40 100644 --- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs @@ -422,13 +422,52 @@ namespace OpenSim.Region.ScriptEngine.Shared public int Length { - get { + get + { if (m_data == null) m_data=new Object[0]; return m_data.Length; } } + public int Size + { + get + { + if (m_data == null) + m_data=new Object[0]; + + int size = 0; + + foreach (Object o in m_data) + { + if (o is LSL_Types.LSLInteger) + size += 4; + else if (o is LSL_Types.LSLFloat) + size += 8; + else if (o is LSL_Types.LSLString) + size += ((LSL_Types.LSLString)o).m_string.Length; + else if (o is LSL_Types.key) + size += ((LSL_Types.key)o).value.Length; + else if (o is LSL_Types.Vector3) + size += 32; + else if (o is LSL_Types.Quaternion) + size += 64; + else if (o is int) + size += 4; + else if (o is string) + size += ((string)o).Length; + else if (o is float) + size += 8; + else if (o is double) + size += 16; + else + throw new Exception("Unknown type in List.Size: " + o.GetType().ToString()); + } + return size; + } + } + public object[] Data { get { -- cgit v1.1 From 7f699fca9a34cd0f3525534bdbc04c8b8ee975fe Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 24 Dec 2009 18:18:14 +0100 Subject: Add the body to the LSL List Size property --- OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | 38 +++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Shared') diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index 1fc31c5..faf9c40 100644 --- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs @@ -422,7 +422,8 @@ namespace OpenSim.Region.ScriptEngine.Shared public int Length { - get { + get + { if (m_data == null) m_data=new Object[0]; return m_data.Length; @@ -431,7 +432,40 @@ namespace OpenSim.Region.ScriptEngine.Shared public int Size { - get { return 0; } + get + { + if (m_data == null) + m_data=new Object[0]; + + int size = 0; + + foreach (Object o in m_data) + { + if (o is LSL_Types.LSLInteger) + size += 4; + else if (o is LSL_Types.LSLFloat) + size += 8; + else if (o is LSL_Types.LSLString) + size += ((LSL_Types.LSLString)o).m_string.Length; + else if (o is LSL_Types.key) + size += ((LSL_Types.key)o).value.Length; + else if (o is LSL_Types.Vector3) + size += 32; + else if (o is LSL_Types.Quaternion) + size += 64; + else if (o is int) + size += 4; + else if (o is string) + size += ((string)o).Length; + else if (o is float) + size += 8; + else if (o is double) + size += 16; + else + throw new Exception("Unknown type in List.Size: " + o.GetType().ToString()); + } + return size; + } } public object[] Data -- cgit v1.1 From 7a06ab834d6d6404c2bfdbf9c71d5f34bfc0fae2 Mon Sep 17 00:00:00 2001 From: dahlia Date: Thu, 24 Dec 2009 11:00:08 -0800 Subject: Clear Shape.SculptEntry if prim type is not a sculptie in llSetPrimitiveParams() - addresses Mantis #4462 --- OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'OpenSim/Region/ScriptEngine/Shared') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index cf3a1a0..2b6d9bd 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -6502,6 +6502,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // retain pathcurve shapeBlock.PathCurve = part.Shape.PathCurve; + part.Shape.SculptEntry = false; return shapeBlock; } @@ -6550,6 +6551,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api shapeBlock.PathShearX = (byte)(100 * topshear.x); shapeBlock.PathShearY = (byte)(100 * topshear.y); + part.Shape.SculptEntry = false; part.UpdateShape(shapeBlock); } @@ -6591,6 +6593,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api shapeBlock.ProfileBegin = (ushort)(50000 * dimple.x); shapeBlock.ProfileEnd = (ushort)(50000 * (1 - dimple.y)); + part.Shape.SculptEntry = false; part.UpdateShape(shapeBlock); } @@ -6711,6 +6714,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } shapeBlock.PathSkew = (sbyte)(100 * skew); + part.Shape.SculptEntry = false; part.UpdateShape(shapeBlock); } -- cgit v1.1