Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- twist(integer center, float sign)
- {
- rotation rot;
- vector pos;
- vector offset;
- llSetLinkPrimitiveParamsFast(axisfinder, [PRIM_POS_LOCAL, ZERO_VECTOR, PRIM_ROT_LOCAL, ZERO_ROTATION]);
- rotation axis = (rotation)llList2String(axes, center);
- llSetLinkPrimitiveParamsFast(axisfinder, [PRIM_ROT_LOCAL, axis]);
- params = llGetLinkPrimitiveParams(axisfinder, [PRIM_POS_LOCAL, PRIM_ROT_LOCAL]);
- vector axispos = (vector)llList2String(params, 0);
- rotation axisrot = (rotation)llList2String(params, 1);
- axispos.z = 0.761;
- axispos *= axisrot;
- llSetLinkPrimitiveParamsFast(axisfinder, [PRIM_POS_LOCAL, axispos]);
- params = llGetLinkPrimitiveParams(axisfinder, [PRIM_POS_LOCAL, PRIM_ROT_LOCAL]);
- axispos = (vector)llList2String(params, 0);
- axisrot = (rotation)llList2String(params, 1);
- integer centerlink = llList2Integer(centerlinks, center);
- params = llGetLinkPrimitiveParams(centerlink, [PRIM_POS_LOCAL, PRIM_ROT_LOCAL]);
- vector centerpos = (vector)llList2String(params, 0);
- rotation centerrot = (rotation)llList2String(params, 1);
- rotation arc = llEuler2Rot(<0.0, 0.0, sign*72.0>*DEG_TO_RAD);
- rotation twisted = axisrot*arc;
- offset = centerpos - axispos;
- pos = axispos + offset*twisted;
- rot = centerrot*twisted;
- llSetLinkPrimitiveParamsFast(centerlink, [PRIM_POS_LOCAL, pos, PRIM_ROT_LOCAL, rot]);
- integer i;
- for(i = 0; i < 10; i++)
- {
- integer piece = llList2Integer(pieces, i);
- params = llGetLinkPrimitiveParams(piece, [PRIM_POS_LOCAL, PRIM_ROT_LOCAL]);
- offset = (vector)llList2String(params, 0) - axispos;
- rotation piecerot = (rotation)llList2String(params, 1);
- pos = axispos + offset*twisted;
- rot = piecerot*twisted;
- llSetLinkPrimitiveParamsFast(piece, [PRIM_POS_LOCAL, pos, PRIM_ROT_LOCAL, rot]);
- }
- bigstring = "newlink: " + (string)newlink + "\ncenterlink: " + (string)centerlink;
- llSetText(bigstring, <1, 1, 1>, 1.0);
- }
Add Comment
Please, Sign In to add comment