Aurora.ScriptEngine.AuroraDotNetEngine.APIs.LSL_Api.SetPrimitiveShapeParams C# (CSharp) Метод

SetPrimitiveShapeParams() защищенный Метод

protected SetPrimitiveShapeParams ( ISceneChildEntity part, int holeshape, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 cut, float hollow, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 twist, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 holesize, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 topshear, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 profilecut, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 taper_a, float revolutions, float radiusoffset, float skew, byte fudge ) : void
part ISceneChildEntity
holeshape int
cut Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3
hollow float
twist Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3
holesize Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3
topshear Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3
profilecut Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3
taper_a Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3
revolutions float
radiusoffset float
skew float
fudge byte
Результат void
        protected void SetPrimitiveShapeParams(ISceneChildEntity part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector holesize, LSL_Vector topshear, LSL_Vector profilecut, LSL_Vector taper_a, float revolutions, float radiusoffset, float skew, byte fudge)
        {
            ObjectShapePacket.ObjectDataBlock shapeBlock = SetPrimitiveBlockShapeParams(part, 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;
            }
            float tempFloat = (float)(100.0d * (2.0d - holesize.x));
            shapeBlock.PathScaleX = (byte)tempFloat;
            tempFloat = (float)(100.0d * (2.0d - holesize.y));
            shapeBlock.PathScaleY = (byte)tempFloat;
            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;
            }
            tempFloat = (float)(100.0d * topshear.x);
            shapeBlock.PathShearX = (byte)tempFloat;
            tempFloat = (float)(100.0d * topshear.y);
            shapeBlock.PathShearY = (byte)tempFloat;
            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 - profilecut.x < 0.05f)
            {
                profilecut.x = profilecut.y - 0.05f;
                if (profilecut.x < 0.0f)
                {
                    profilecut.x = 0.0f;
                    profilecut.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;
            }
            tempFloat = (float)(100.0d * taper_a.x);
            shapeBlock.PathTaperX = (sbyte)tempFloat;
            tempFloat = (float)(100.0d * taper_a.y);
            shapeBlock.PathTaperY = (sbyte)tempFloat;
            if (revolutions < 1f)
            {
                revolutions = 1f;
            }
            if (revolutions > 4f)
            {
                revolutions = 4f;
            }
            tempFloat = 66.66667f * (revolutions - 1.0f);
            shapeBlock.PathRevolutions = (byte)tempFloat;
            // 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;
            }
            tempFloat = 100.0f * radiusoffset;
            shapeBlock.PathRadiusOffset = (sbyte)tempFloat;
            if (skew < -0.95f)
            {
                skew = -0.95f;
            }
            if (skew > 0.95f)
            {
                skew = 0.95f;
            }
            tempFloat = 100.0f * skew;
            shapeBlock.PathSkew = (sbyte)tempFloat;

            part.Shape.SculptEntry = false;
            part.UpdateShape(shapeBlock);
        }

Same methods

LSL_Api::SetPrimitiveShapeParams ( ISceneChildEntity part, int holeshape, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 cut, float hollow, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 twist, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 taper_b, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 topshear, byte fudge ) : void
LSL_Api::SetPrimitiveShapeParams ( ISceneChildEntity part, int holeshape, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 cut, float hollow, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 twist, Aurora.ScriptEngine.AuroraDotNetEngine.LSL_Types.Vector3 dimple, byte fudge ) : void
LSL_Api::SetPrimitiveShapeParams ( ISceneChildEntity part, string map, int type ) : void
LSL_Api