From 8a608aa0eac086cc7fcc4e7b1f0c90ee9edd934f Mon Sep 17 00:00:00 2001 From: Northspring Date: Fri, 20 Jun 2014 01:08:10 +0200 Subject: [PATCH] Movelock improvement - adding friction --- ...BEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt b/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt index 8213f87758..41d56b7a8a 100644 --- a/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt +++ b/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt @@ -68,11 +68,7 @@ llSetTorque(ZERO_VECTOR, 0); flight_hover(FALSE); isFlyingNow = -1; - llStopMoveToTarget(); - if (useMoveLock) - { - movelock_init(); - } + movelock_init(useMoveLock); // Make bridge inconspicuous llSetLinkPrimitiveParamsFast(LINK_THIS, [ PRIM_TEXT, "", ZERO_VECTOR, 0.0, @@ -100,7 +96,7 @@ setTimerEvent2(0); llSetTimerEvent(0); flight_hover(FALSE); - llStopMoveToTarget(); + movelock_init(FALSE); // Set the channel for the AO OC interface aoChannelOC = (integer)("0x" + llGetSubString(owner, 30, -1)); @@ -182,7 +178,7 @@ // Pause movelock for now, if present if (useMoveLock) { - llStopMoveToTarget(); + movelock_init(FALSE); } // Get parameters @@ -246,14 +242,7 @@ else if (cmd == "UseMoveLock") { useMoveLock = llList2Integer(commandList, 1); - if (useMoveLock) - { - movelock_init(); - } - else - { - llStopMoveToTarget(); - } + movelock_init(useMoveLock); llOwnerSay(""); } @@ -366,12 +355,8 @@ // If we are out of time or distance - stop if ((dist < TP_TARGET_DISTANCE) || (llGetUnixTime() - MAX_TIME_TO_TP > startTPTimer) || (mttVector == loc)) { - llStopMoveToTarget(); setTimerEvent2(0); - if (useMoveLock) - { - movelock_init(); - } + movelock_init(useMoveLock); // llStopMoveToTarget() if FALSE, lock on place if TRUE } else { @@ -421,9 +406,20 @@ // Movelock // - movelock_init() + movelock_init(integer lock) { - llMoveToTarget(llGetPos() - <0, 0, 0.1>, 0.05); + if (lock) + { + llMoveToTarget(llGetPos() - <0, 0, 0.1>, 0.05); + llSetVehicleType(VEHICLE_TYPE_SLED); + llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 0.05); + llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 0.05); + } + else + { + llStopMoveToTarget(); + llSetVehicleType(VEHICLE_TYPE_NONE); + } } // @@ -491,13 +487,13 @@ default if (!relockIsUserMoving) { relockIsUserMoving = TRUE; - llStopMoveToTarget(); + movelock_init(FALSE); } } else if (relockIsUserMoving) { relockIsUserMoving = FALSE; - movelock_init(); + movelock_init(TRUE); } }