Difference between revisions of "LlGetEnergy"
Jump to navigation
Jump to search
(fix owner text and collision event) |
(Fix final test, collision event and owner text) |
||
Line 10: | Line 10: | ||
|examples=<lsl> | |examples=<lsl> | ||
// This script tests the energy use of most of the physics functions | // This script tests the energy use of most of the physics functions | ||
// | // Last version: 07 October 2009 by Gianni Lupindo | ||
vector homePos; | vector homePos; | ||
integer timerCount = 0; | integer timerCount = 0; | ||
integer testCount = 0; | integer testCount = 0; | ||
string space = " "; | |||
// move more than 10m | // move more than 10m | ||
Line 48: | Line 49: | ||
} | } | ||
touch_start(integer n) { | touch_start(integer n) { | ||
space = " "; | |||
do { | do { | ||
llSleep(0.5); | llSleep(0.5); | ||
Line 57: | Line 59: | ||
vector impulse = <0,0,5>*llGetMass(); | vector impulse = <0,0,5>*llGetMass(); | ||
if (testCount == 0) { | if (testCount == 0) { | ||
llOwnerSay("ApplyImpulse"); | llOwnerSay("ApplyImpulse (test 0)"); | ||
llApplyImpulse( impulse, TRUE ); | llApplyImpulse( impulse, TRUE ); | ||
} else if (testCount == 1) { | } else if (testCount == 1) { | ||
llOwnerSay("ApplyRotImpulse"); | llOwnerSay("ApplyRotImpulse (test 1)"); | ||
llApplyRotationalImpulse( impulse, TRUE); | llApplyRotationalImpulse( impulse, TRUE); | ||
} else if (testCount == 2) { | } else if (testCount == 2) { | ||
llOwnerSay("PushObject"); | llOwnerSay("PushObject (test 2)"); | ||
llPushObject(llGetKey(), impulse, ZERO_VECTOR, TRUE); | llPushObject(llGetKey(), impulse, ZERO_VECTOR, TRUE); | ||
} else if (testCount == 3) { | } else if (testCount == 3) { | ||
llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | ||
llOwnerSay("Force"); | llOwnerSay("Force (test 3)"); | ||
llSetForce( impulse, TRUE ); | llSetForce( impulse, TRUE ); | ||
} else if (testCount == 4) { | } else if (testCount == 4) { | ||
llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | ||
llOwnerSay("Torque"); | llOwnerSay("Torque (test 4)"); | ||
llSetTorque( impulse, TRUE ); | llSetTorque( impulse, TRUE ); | ||
} else if (testCount == 5) { | } else if (testCount == 5) { | ||
llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | ||
llOwnerSay("Force and Torque"); | llOwnerSay("Force and Torque (test 5)"); | ||
llSetForceAndTorque( impulse, impulse, TRUE ); | llSetForceAndTorque( impulse, impulse, TRUE ); | ||
} else if (testCount == 6) { | } else if (testCount == 6) { | ||
llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | ||
llOwnerSay("MoveToTarget"); | llOwnerSay("MoveToTarget (test 6)"); | ||
llMoveToTarget( impulse, 0.4 ); | llMoveToTarget( impulse, 0.4 ); | ||
} else if (testCount == 7) { | } else if (testCount == 7) { | ||
llStopMoveToTarget ( ); | llStopMoveToTarget ( ); | ||
llOwnerSay("RotLookAt"); | llOwnerSay("RotLookAt (test 7)"); | ||
llRotLookAt( llEuler2Rot(impulse*DEG_TO_RAD), 0.4, 0.4 ); | llRotLookAt( llEuler2Rot(impulse*DEG_TO_RAD), 0.4, 0.4 ); | ||
} else if (testCount == 8) { | } else if (testCount == 8) { | ||
llStopLookAt ( ); | llStopLookAt ( ); | ||
llOwnerSay("LookAt"); | llOwnerSay("LookAt (test 8)"); | ||
llLookAt( impulse, 0.4, 0.4 ); | llLookAt( impulse, 0.4, 0.4 ); | ||
} else if (testCount == 9) { | } else if (testCount == 9) { | ||
llStopLookAt ( ); | llStopLookAt ( ); | ||
llOwnerSay("Hover Height"); | llOwnerSay("Hover Height (test 9)"); | ||
llSetHoverHeight( 5.0, TRUE, 0.5); | llSetHoverHeight( 5.0, TRUE, 0.5); | ||
} else if (testCount == 10) { | } else if (testCount == 10) { | ||
llSetHoverHeight( 0, TRUE, 0.5); | llSetHoverHeight( 0, TRUE, 0.5); | ||
llOwnerSay("Ground Repel"); | llOwnerSay("Ground Repel (test 10)"); | ||
llGroundRepel( 5, TRUE, 0.5); | llGroundRepel( 5, TRUE, 0.5); | ||
} else if (testCount == 11) { | } else if (testCount == 11) { | ||
llGroundRepel( 0, TRUE, 0.5); | llGroundRepel( 0, TRUE, 0.5); | ||
llOwnerSay("Buoyancy"); | llOwnerSay("Buoyancy (test 11)"); | ||
llSetBuoyancy( 0.997 ); | llSetBuoyancy( 0.997 ); | ||
} else { | } else { | ||
llSetBuoyancy( 0.0 ); | llSetBuoyancy( 0.0 ); | ||
llOwnerSay("Done"); | llOwnerSay("Done"); | ||
} | } | ||
timerCount = 0; | timerCount = 0; | ||
llOwnerSay((string)timerCount+". Energy: "+(string)llGetEnergy()); | if (testCount != 12) { | ||
llOwnerSay((string)timerCount+". Energy: "+space+(string)llGetEnergy()); | |||
testCount++; | |||
} | |||
else { | |||
testCount = 0; | |||
returnHome(); | |||
} | |||
} | } | ||
timer() { | timer() { | ||
timerCount++; | timerCount++; | ||
llOwnerSay((string)timerCount+". Energy: "+(string)llGetEnergy()); | if (timerCount >= 10) space = ""; | ||
if (timerCount>=10) { | llOwnerSay((string)timerCount+". Energy: "+space+(string)llGetEnergy()); | ||
if (timerCount>=10) { | |||
returnHome(); | returnHome(); | ||
} | } | ||
} | } | ||
collision(integer n) { | collision(integer n) { | ||
llOwnerSay("*. Energy: "+space+(string)llGetEnergy()+" (collision)"); | |||
llOwnerSay( | |||
} | } | ||
} | } |
Revision as of 08:20, 7 October 2009
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: float llGetEnergy( );149 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Returns a float that is how much energy is in the object as a percentage of maximum
Caveats
Examples
<lsl> // This script tests the energy use of most of the physics functions // Last version: 07 October 2009 by Gianni Lupindo
vector homePos; integer timerCount = 0; integer testCount = 0; string space = " ";
// move more than 10m moveTo(vector origin, vector destination) {
float dist = llVecDist(origin, destination); integer passes = llCeil( llLog(dist/10.0) / llLog(2.0) ); integer i; list params = [PRIM_POSITION, destination]; for (i=0; i<passes; i++) { params = (params=[]) + params + params; } // actually move the prim, now llSetPrimitiveParams(params);
}
returnHome() {
llSetTimerEvent(0); llSetStatus(STATUS_PHYSICS, FALSE); llSleep(0.2); moveTo(llGetPos(),homePos); llSetRot(ZERO_ROTATION);
}
default {
state_entry() { homePos = llGetPos(); llOwnerSay("Mass is "+(string)llGetMass()); } on_rez(integer _n) { llResetScript(); } touch_start(integer n) { space = " "; do { llSleep(0.5); } while (llGetEnergy() < 0.998); llSetPos( llGetPos()+<0,0,5>); llSetStatus(STATUS_PHYSICS,TRUE); llSetTimerEvent(1.0); vector impulse = <0,0,5>*llGetMass(); if (testCount == 0) { llOwnerSay("ApplyImpulse (test 0)"); llApplyImpulse( impulse, TRUE ); } else if (testCount == 1) { llOwnerSay("ApplyRotImpulse (test 1)"); llApplyRotationalImpulse( impulse, TRUE); } else if (testCount == 2) { llOwnerSay("PushObject (test 2)"); llPushObject(llGetKey(), impulse, ZERO_VECTOR, TRUE); } else if (testCount == 3) { llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); llOwnerSay("Force (test 3)"); llSetForce( impulse, TRUE ); } else if (testCount == 4) { llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); llOwnerSay("Torque (test 4)"); llSetTorque( impulse, TRUE ); } else if (testCount == 5) { llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); llOwnerSay("Force and Torque (test 5)"); llSetForceAndTorque( impulse, impulse, TRUE ); } else if (testCount == 6) { llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); llOwnerSay("MoveToTarget (test 6)"); llMoveToTarget( impulse, 0.4 ); } else if (testCount == 7) { llStopMoveToTarget ( ); llOwnerSay("RotLookAt (test 7)"); llRotLookAt( llEuler2Rot(impulse*DEG_TO_RAD), 0.4, 0.4 ); } else if (testCount == 8) { llStopLookAt ( ); llOwnerSay("LookAt (test 8)"); llLookAt( impulse, 0.4, 0.4 ); } else if (testCount == 9) { llStopLookAt ( ); llOwnerSay("Hover Height (test 9)"); llSetHoverHeight( 5.0, TRUE, 0.5); } else if (testCount == 10) { llSetHoverHeight( 0, TRUE, 0.5); llOwnerSay("Ground Repel (test 10)"); llGroundRepel( 5, TRUE, 0.5); } else if (testCount == 11) { llGroundRepel( 0, TRUE, 0.5); llOwnerSay("Buoyancy (test 11)"); llSetBuoyancy( 0.997 ); } else { llSetBuoyancy( 0.0 ); llOwnerSay("Done"); } timerCount = 0; if (testCount != 12) { llOwnerSay((string)timerCount+". Energy: "+space+(string)llGetEnergy()); testCount++; } else { testCount = 0; returnHome(); } } timer() { timerCount++; if (timerCount >= 10) space = ""; llOwnerSay((string)timerCount+". Energy: "+space+(string)llGetEnergy()); if (timerCount>=10) { returnHome(); } } collision(integer n) { llOwnerSay("*. Energy: "+space+(string)llGetEnergy()+" (collision)"); }
}
</lsl>