Mantis#1649. Thank you kindly, Matth for a patch that:
This patch adds the ability to set the prim type using llSetPrimitiveParams(). Seems to work ok, but there are a staggering number of cases to test, so I have not yet tested them all.0.6.0-stable
parent
bc20c88a0a
commit
35ec3b7a3f
|
@ -34,6 +34,7 @@ using System.Threading;
|
|||
using Nini.Config;
|
||||
using Axiom.Math;
|
||||
using libsecondlife;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Communications.Cache;
|
||||
using OpenSim.Region.Environment;
|
||||
|
@ -4778,6 +4779,316 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
m_host.AddScriptLPS(1);
|
||||
return Util.Md5Hash(src + ":" + nonce.ToString());
|
||||
}
|
||||
|
||||
private ObjectShapePacket.ObjectDataBlock SetPrimitiveShapeParams(int holeshape, LSL_Types.Vector3 cut, float hollow, LSL_Types.Vector3 twist)
|
||||
{
|
||||
ObjectShapePacket.ObjectDataBlock shapeBlock = new ObjectShapePacket.ObjectDataBlock();
|
||||
|
||||
if (holeshape != (int)BuiltIn_Commands_BaseClass.PRIM_HOLE_DEFAULT &&
|
||||
holeshape != (int)BuiltIn_Commands_BaseClass.PRIM_HOLE_CIRCLE &&
|
||||
holeshape != (int)BuiltIn_Commands_BaseClass.PRIM_HOLE_SQUARE &&
|
||||
holeshape != (int)BuiltIn_Commands_BaseClass.PRIM_HOLE_TRIANGLE)
|
||||
{
|
||||
holeshape = (int)BuiltIn_Commands_BaseClass.PRIM_HOLE_DEFAULT;
|
||||
}
|
||||
shapeBlock.ProfileCurve = (byte)holeshape;
|
||||
if (cut.x < 0f)
|
||||
{
|
||||
cut.x = 0f;
|
||||
}
|
||||
if (cut.x > 1f)
|
||||
{
|
||||
cut.x = 1f;
|
||||
}
|
||||
if (cut.y < 0f)
|
||||
{
|
||||
cut.y = 0f;
|
||||
}
|
||||
if (cut.y > 1f)
|
||||
{
|
||||
cut.y = 1f;
|
||||
}
|
||||
if (cut.y - cut.x < 0.05f)
|
||||
{
|
||||
cut.x = cut.y - 0.05f;
|
||||
}
|
||||
shapeBlock.ProfileBegin = (ushort)(50000 * cut.x);
|
||||
shapeBlock.ProfileEnd = (ushort)(50000 * (1 - cut.y));
|
||||
if (hollow < 0f)
|
||||
{
|
||||
hollow = 0f;
|
||||
}
|
||||
if (hollow > 0.95)
|
||||
{
|
||||
hollow = 0.95f;
|
||||
}
|
||||
shapeBlock.ProfileHollow = (ushort)(50000 * hollow);
|
||||
if (twist.x < -0.5f)
|
||||
{
|
||||
twist.x = -0.5f;
|
||||
}
|
||||
if (twist.x > 0.5f)
|
||||
{
|
||||
twist.x = 0.5f;
|
||||
}
|
||||
if (twist.y < -0.5f)
|
||||
{
|
||||
twist.y = -0.5f;
|
||||
}
|
||||
if (twist.y > 0.5f)
|
||||
{
|
||||
twist.y = 0.5f;
|
||||
}
|
||||
shapeBlock.PathTwistBegin = (sbyte)(200 * twist.x);
|
||||
shapeBlock.PathTwist = (sbyte)(200 * twist.y);
|
||||
|
||||
shapeBlock.ObjectLocalID = m_host.LocalId;
|
||||
|
||||
// retain pathcurve
|
||||
shapeBlock.PathCurve = m_host.Shape.PathCurve;
|
||||
|
||||
return shapeBlock;
|
||||
}
|
||||
|
||||
private void SetPrimitiveShapeParams(int holeshape, LSL_Types.Vector3 cut, float hollow, LSL_Types.Vector3 twist, LSL_Types.Vector3 taper_b, LSL_Types.Vector3 topshear, byte fudge)
|
||||
{
|
||||
ObjectShapePacket.ObjectDataBlock shapeBlock;
|
||||
|
||||
shapeBlock = SetPrimitiveShapeParams(holeshape, cut, hollow, twist);
|
||||
|
||||
shapeBlock.ProfileCurve += fudge;
|
||||
|
||||
if (taper_b.x < 0f)
|
||||
{
|
||||
taper_b.x = 0f;
|
||||
}
|
||||
if (taper_b.x > 2f)
|
||||
{
|
||||
taper_b.x = 2f;
|
||||
}
|
||||
if (taper_b.y < 0f)
|
||||
{
|
||||
taper_b.y = 0f;
|
||||
}
|
||||
if (taper_b.y > 2f)
|
||||
{
|
||||
taper_b.y = 2f;
|
||||
}
|
||||
shapeBlock.PathScaleX = (byte)(100 * taper_b.x);
|
||||
shapeBlock.PathScaleY = (byte)(100 * taper_b.y);
|
||||
if (topshear.x < -0.5f)
|
||||
{
|
||||
topshear.x = -0.5f;
|
||||
}
|
||||
if (topshear.x > 0.5f)
|
||||
{
|
||||
topshear.x = 0.5f;
|
||||
}
|
||||
if (topshear.y < -0.5f)
|
||||
{
|
||||
topshear.y = -0.5f;
|
||||
}
|
||||
if (topshear.y > 0.5f)
|
||||
{
|
||||
topshear.y = 0.5f;
|
||||
}
|
||||
shapeBlock.PathShearX = (byte)(100 * topshear.x);
|
||||
shapeBlock.PathShearY = (byte)(100 * topshear.y);
|
||||
|
||||
m_host.UpdateShape(shapeBlock);
|
||||
}
|
||||
|
||||
private void SetPrimitiveShapeParams(int holeshape, LSL_Types.Vector3 cut, float hollow, LSL_Types.Vector3 twist, LSL_Types.Vector3 dimple, byte fudge)
|
||||
{
|
||||
ObjectShapePacket.ObjectDataBlock shapeBlock;
|
||||
|
||||
shapeBlock = SetPrimitiveShapeParams(holeshape, cut, hollow, twist);
|
||||
|
||||
// profile/path swapped for a sphere
|
||||
shapeBlock.PathBegin = shapeBlock.ProfileBegin;
|
||||
shapeBlock.PathEnd = shapeBlock.ProfileEnd;
|
||||
|
||||
shapeBlock.ProfileCurve += fudge;
|
||||
|
||||
shapeBlock.PathScaleX = 100;
|
||||
shapeBlock.PathScaleY = 100;
|
||||
|
||||
if (dimple.x < 0f)
|
||||
{
|
||||
dimple.x = 0f;
|
||||
}
|
||||
if (dimple.x > 1f)
|
||||
{
|
||||
dimple.x = 1f;
|
||||
}
|
||||
if (dimple.y < 0f)
|
||||
{
|
||||
dimple.y = 0f;
|
||||
}
|
||||
if (dimple.y > 1f)
|
||||
{
|
||||
dimple.y = 1f;
|
||||
}
|
||||
if (dimple.y - cut.x < 0.05f)
|
||||
{
|
||||
dimple.x = cut.y - 0.05f;
|
||||
}
|
||||
shapeBlock.ProfileBegin = (ushort)(50000 * dimple.x);
|
||||
shapeBlock.ProfileEnd = (ushort)(50000 * (1 - dimple.y));
|
||||
|
||||
m_host.UpdateShape(shapeBlock);
|
||||
}
|
||||
|
||||
private void SetPrimitiveShapeParams(int holeshape, LSL_Types.Vector3 cut, float hollow, LSL_Types.Vector3 twist, LSL_Types.Vector3 holesize, LSL_Types.Vector3 topshear, LSL_Types.Vector3 profilecut, LSL_Types.Vector3 taper_a, float revolutions, float radiusoffset, float skew, byte fudge)
|
||||
{
|
||||
ObjectShapePacket.ObjectDataBlock shapeBlock;
|
||||
|
||||
shapeBlock = SetPrimitiveShapeParams(holeshape, cut, hollow, twist);
|
||||
|
||||
shapeBlock.ProfileCurve += fudge;
|
||||
|
||||
// profile/path swapped for a torrus, tube, ring
|
||||
shapeBlock.PathBegin = shapeBlock.ProfileBegin;
|
||||
shapeBlock.PathEnd = shapeBlock.ProfileEnd;
|
||||
|
||||
if (holesize.x < 0.05f)
|
||||
{
|
||||
holesize.x = 0.05f;
|
||||
}
|
||||
if (holesize.x > 1f)
|
||||
{
|
||||
holesize.x = 1f;
|
||||
}
|
||||
if (holesize.y < 0.05f)
|
||||
{
|
||||
holesize.y = 0.05f;
|
||||
}
|
||||
if (holesize.y > 0.5f)
|
||||
{
|
||||
holesize.y = 0.5f;
|
||||
}
|
||||
shapeBlock.PathScaleX = (byte)(100 * (2 - holesize.x));
|
||||
shapeBlock.PathScaleY = (byte)(100 * (2 - holesize.y));
|
||||
if (topshear.x < -0.5f)
|
||||
{
|
||||
topshear.x = -0.5f;
|
||||
}
|
||||
if (topshear.x > 0.5f)
|
||||
{
|
||||
topshear.x = 0.5f;
|
||||
}
|
||||
if (topshear.y < -0.5f)
|
||||
{
|
||||
topshear.y = -0.5f;
|
||||
}
|
||||
if (topshear.y > 0.5f)
|
||||
{
|
||||
topshear.y = 0.5f;
|
||||
}
|
||||
shapeBlock.PathShearX = (byte)(100 * topshear.x);
|
||||
shapeBlock.PathShearY = (byte)(100 * topshear.y);
|
||||
if (profilecut.x < 0f)
|
||||
{
|
||||
profilecut.x = 0f;
|
||||
}
|
||||
if (profilecut.x > 1f)
|
||||
{
|
||||
profilecut.x = 1f;
|
||||
}
|
||||
if (profilecut.y < 0f)
|
||||
{
|
||||
profilecut.y = 0f;
|
||||
}
|
||||
if (profilecut.y > 1f)
|
||||
{
|
||||
profilecut.y = 1f;
|
||||
}
|
||||
if (profilecut.y - cut.x < 0.05f)
|
||||
{
|
||||
profilecut.x = cut.y - 0.05f;
|
||||
}
|
||||
shapeBlock.ProfileBegin = (ushort)(50000 * profilecut.x);
|
||||
shapeBlock.ProfileEnd = (ushort)(50000 * (1 - profilecut.y));
|
||||
if (taper_a.x < -1f)
|
||||
{
|
||||
taper_a.x = -1f;
|
||||
}
|
||||
if (taper_a.x > 1f)
|
||||
{
|
||||
taper_a.x = 1f;
|
||||
}
|
||||
if (taper_a.y < -1f)
|
||||
{
|
||||
taper_a.y = -1f;
|
||||
}
|
||||
if (taper_a.y > 1f)
|
||||
{
|
||||
taper_a.y = 1f;
|
||||
}
|
||||
shapeBlock.PathTaperX = (sbyte)(100 * taper_a.x);
|
||||
shapeBlock.PathTaperY = (sbyte)(100 * taper_a.y);
|
||||
if (revolutions < 1f)
|
||||
{
|
||||
revolutions = 1f;
|
||||
}
|
||||
if (revolutions > 4f)
|
||||
{
|
||||
revolutions = 4f;
|
||||
}
|
||||
shapeBlock.PathRevolutions = (byte)(100 * revolutions);
|
||||
// limits on radiusoffset depend on revolutions and hole size (how?) seems like the maximum range is 0 to 1
|
||||
if (radiusoffset < 0f)
|
||||
{
|
||||
radiusoffset = 0f;
|
||||
}
|
||||
if (radiusoffset > 1f)
|
||||
{
|
||||
radiusoffset = 1f;
|
||||
}
|
||||
shapeBlock.PathRadiusOffset = (sbyte)(100 * radiusoffset);
|
||||
if (skew < -0.95f)
|
||||
{
|
||||
skew = -0.95f;
|
||||
}
|
||||
if (skew > 0.95f)
|
||||
{
|
||||
skew = 0.95f;
|
||||
}
|
||||
shapeBlock.PathSkew = (sbyte)(100 * skew);
|
||||
|
||||
m_host.UpdateShape(shapeBlock);
|
||||
}
|
||||
|
||||
private void SetPrimitiveShapeParams(string map, int type)
|
||||
{
|
||||
ObjectShapePacket.ObjectDataBlock shapeBlock = new ObjectShapePacket.ObjectDataBlock();
|
||||
LLUUID sculptId;
|
||||
|
||||
if (!LLUUID.TryParse(map, out sculptId))
|
||||
{
|
||||
llSay(0, "Could not parse key " + map);
|
||||
return;
|
||||
}
|
||||
|
||||
shapeBlock.ObjectLocalID = m_host.LocalId;
|
||||
shapeBlock.PathScaleX = 100;
|
||||
shapeBlock.PathScaleY = 150;
|
||||
|
||||
if (type != (int)BuiltIn_Commands_BaseClass.PRIM_SCULPT_TYPE_CYLINDER &&
|
||||
type != (int)BuiltIn_Commands_BaseClass.PRIM_SCULPT_TYPE_PLANE &&
|
||||
type != (int)BuiltIn_Commands_BaseClass.PRIM_SCULPT_TYPE_SPHERE &&
|
||||
type != (int)BuiltIn_Commands_BaseClass.PRIM_SCULPT_TYPE_TORUS)
|
||||
{
|
||||
// default
|
||||
type = (int)BuiltIn_Commands_BaseClass.PRIM_SCULPT_TYPE_SPHERE;
|
||||
}
|
||||
|
||||
// retain pathcurve
|
||||
shapeBlock.PathCurve = m_host.Shape.PathCurve;
|
||||
|
||||
m_host.Shape.SetSculptData((byte)type, sculptId);
|
||||
m_host.UpdateShape(shapeBlock);
|
||||
}
|
||||
|
||||
public void llSetPrimitiveParams(LSL_Types.list rules)
|
||||
{
|
||||
|
@ -4822,7 +5133,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
|
||||
switch (code)
|
||||
{
|
||||
case 6: // PRIM_POSITION
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_POSITION:
|
||||
if (remain < 1)
|
||||
return;
|
||||
|
||||
|
@ -4830,7 +5141,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
SetPos(part, v);
|
||||
|
||||
break;
|
||||
case 7: // PRIM_SIZE
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_SIZE:
|
||||
if (remain < 1)
|
||||
return;
|
||||
|
||||
|
@ -4838,7 +5149,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
SetScale(part, v);
|
||||
|
||||
break;
|
||||
case 8: // PRIM_ROTATION
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_ROTATION:
|
||||
if (remain < 1)
|
||||
return;
|
||||
|
||||
|
@ -4846,8 +5157,153 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
SetRot(part, q);
|
||||
|
||||
break;
|
||||
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TYPE:
|
||||
if (remain < 3)
|
||||
return;
|
||||
|
||||
code = Convert.ToInt32(rules.Data[idx++]);
|
||||
|
||||
remain = rules.Length - idx;
|
||||
float hollow;
|
||||
LSL_Types.Vector3 twist;
|
||||
LSL_Types.Vector3 taper_b;
|
||||
LSL_Types.Vector3 topshear;
|
||||
float revolutions;
|
||||
float radiusoffset;
|
||||
float skew;
|
||||
LSL_Types.Vector3 holesize;
|
||||
LSL_Types.Vector3 profilecut;
|
||||
|
||||
switch(code)
|
||||
{
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TYPE_BOX:
|
||||
if (remain < 6)
|
||||
return;
|
||||
|
||||
case 17: // PRIM_TEXTURE
|
||||
face = Convert.ToInt32(rules.Data[idx++]); // holeshape
|
||||
v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // cut
|
||||
hollow = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
twist = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
m_host.Shape.PathCurve = (byte) Extrusion.Straight;
|
||||
SetPrimitiveShapeParams(face, v, hollow, twist, taper_b, topshear, 1);;
|
||||
break;
|
||||
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TYPE_CYLINDER:
|
||||
if (remain < 6)
|
||||
return;
|
||||
|
||||
face = Convert.ToInt32(rules.Data[idx++]); // holeshape
|
||||
v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // cut
|
||||
hollow = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
twist = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
m_host.Shape.ProfileShape = ProfileShape.Circle;
|
||||
m_host.Shape.PathCurve = (byte) Extrusion.Straight;
|
||||
SetPrimitiveShapeParams(face, v, hollow, twist, taper_b, topshear, 0);
|
||||
break;
|
||||
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TYPE_PRISM:
|
||||
if (remain < 6)
|
||||
return;
|
||||
|
||||
face = Convert.ToInt32(rules.Data[idx++]); // holeshape
|
||||
v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); //cut
|
||||
hollow = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
twist = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
m_host.Shape.PathCurve = (byte) Extrusion.Straight;
|
||||
SetPrimitiveShapeParams(face, v, hollow, twist, taper_b, topshear, 3);
|
||||
break;
|
||||
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TYPE_SPHERE:
|
||||
if (remain < 5)
|
||||
return;
|
||||
|
||||
face = Convert.ToInt32(rules.Data[idx++]); // holeshape
|
||||
v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // cut
|
||||
hollow = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
twist = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // dimple
|
||||
m_host.Shape.PathCurve = (byte) Extrusion.Curve1;
|
||||
SetPrimitiveShapeParams(face, v, hollow, twist, taper_b, 5);
|
||||
break;
|
||||
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TYPE_TORUS:
|
||||
if (remain < 11)
|
||||
return;
|
||||
|
||||
face = Convert.ToInt32(rules.Data[idx++]); // holeshape
|
||||
v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); //cut
|
||||
hollow = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
twist = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
holesize = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
profilecut = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // taper_a
|
||||
revolutions = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
radiusoffset = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
skew = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
m_host.Shape.PathCurve = (byte) Extrusion.Curve1;
|
||||
SetPrimitiveShapeParams(face, v, hollow, twist, holesize, topshear, profilecut, taper_b, revolutions, radiusoffset, skew, 0);
|
||||
break;
|
||||
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TYPE_TUBE:
|
||||
if (remain < 11)
|
||||
return;
|
||||
|
||||
face = Convert.ToInt32(rules.Data[idx++]); // holeshape
|
||||
v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); //cut
|
||||
hollow = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
twist = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
holesize = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
profilecut = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // taper_a
|
||||
revolutions = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
radiusoffset = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
skew = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
m_host.Shape.PathCurve = (byte) Extrusion.Curve1;
|
||||
SetPrimitiveShapeParams(face, v, hollow, twist, holesize, topshear, profilecut, taper_b, revolutions, radiusoffset, skew, 1);
|
||||
break;
|
||||
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TYPE_RING:
|
||||
if (remain < 11)
|
||||
return;
|
||||
|
||||
face = Convert.ToInt32(rules.Data[idx++]); // holeshape
|
||||
v = new LSL_Types.Vector3(rules.Data[idx++].ToString()); //cut
|
||||
hollow = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
twist = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
holesize = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
topshear = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
profilecut = new LSL_Types.Vector3(rules.Data[idx++].ToString());
|
||||
taper_b = new LSL_Types.Vector3(rules.Data[idx++].ToString()); // taper_a
|
||||
revolutions = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
radiusoffset = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
skew = (float)Convert.ToDouble(rules.Data[idx++]);
|
||||
m_host.Shape.PathCurve = (byte) Extrusion.Curve1;
|
||||
SetPrimitiveShapeParams(face, v, hollow, twist, holesize, topshear, profilecut, taper_b, revolutions, radiusoffset, skew, 3);
|
||||
break;
|
||||
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TYPE_SCULPT:
|
||||
if (remain < 2)
|
||||
return;
|
||||
|
||||
string map = rules.Data[idx++].ToString();
|
||||
face = Convert.ToInt32(rules.Data[idx++]); // type
|
||||
m_host.Shape.PathCurve = (byte) Extrusion.Curve1;
|
||||
SetPrimitiveShapeParams(map, face);
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_TEXTURE:
|
||||
if (remain < 5)
|
||||
return;
|
||||
|
||||
|
@ -4864,7 +5320,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
|
||||
break;
|
||||
|
||||
case 18: // PRIM_COLOR
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_COLOR:
|
||||
if (remain < 3)
|
||||
return;
|
||||
|
||||
|
@ -4876,7 +5332,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
SetAlpha(part, alpha, face);
|
||||
|
||||
break;
|
||||
case 21: // PRIM_FLEXI
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_FLEXIBLE:
|
||||
if (remain < 7)
|
||||
return;
|
||||
|
||||
|
@ -4891,7 +5347,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
SetFlexi(part, (flexi == 1), softness, gravity, friction, wind, tension, force);
|
||||
|
||||
break;
|
||||
case 23: // PRIM_POINT_LIGHT
|
||||
case (int)BuiltIn_Commands_BaseClass.PRIM_POINT_LIGHT:
|
||||
if (remain < 5)
|
||||
return;
|
||||
int light = Convert.ToInt32(rules.Data[idx++]);
|
||||
|
|
Loading…
Reference in New Issue