Difference between revisions of "LlGetEnergy"
Jump to navigation
Jump to search
m |
|||
Line 8: | Line 8: | ||
|caveats | |caveats | ||
|constants | |constants | ||
|examples | |examples=<lsl> | ||
// This script tests the energy use of most of the physics functions | |||
// 18 March 2008 by Karzita Zabaleta | |||
vector homePos; | |||
integer timerCount = 0; | |||
integer testCount = 0; | |||
// 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() | |||
{ | |||
llSetStatus(STATUS_PHYSICS, FALSE); | |||
llSleep(0.2); | |||
moveTo(llGetPos(),homePos); | |||
llSetTimerEvent(0); | |||
llSetRot(ZERO_ROTATION); | |||
} | |||
default | |||
{ | |||
state_entry() { | |||
homePos = llGetPos(); | |||
llOwnerSay("Mass is "+(string)llGetMass()); | |||
} | |||
on_rez(integer _n) { | |||
llResetScript(); | |||
} | |||
touch_start(integer n) { | |||
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"); | |||
llApplyImpulse( impulse, TRUE ); | |||
} else if (testCount == 1) { | |||
llOwnerSay("ApplyRotImpulse"); | |||
llApplyRotationalImpulse( impulse, TRUE); | |||
} else if (testCount == 2) { | |||
llOwnerSay("PushObject"); | |||
llPushObject(llGetKey(), impulse, ZERO_VECTOR, TRUE); | |||
} else if (testCount == 3) { | |||
llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | |||
llOwnerSay("Force"); | |||
llSetForce( impulse, TRUE ); | |||
} else if (testCount == 4) { | |||
llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | |||
llOwnerSay("Torque"); | |||
llSetTorque( impulse, TRUE ); | |||
} else if (testCount == 5) { | |||
llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | |||
llOwnerSay("Force and Torque"); | |||
llSetForceAndTorque( impulse, impulse, TRUE ); | |||
} else if (testCount == 6) { | |||
llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); | |||
llOwnerSay("MoveToTarget"); | |||
llMoveToTarget( impulse, 0.4 ); | |||
} else if (testCount == 7) { | |||
llStopMoveToTarget ( ); | |||
llOwnerSay("RotLookAt"); | |||
llRotLookAt( llEuler2Rot(impulse*DEG_TO_RAD), 0.4, 0.4 ); | |||
} else if (testCount == 8) { | |||
llStopLookAt ( ); | |||
llOwnerSay("LookAt"); | |||
llLookAt( impulse, 0.4, 0.4 ); | |||
} else if (testCount == 9) { | |||
llStopLookAt ( ); | |||
llOwnerSay("Hover Height"); | |||
llSetHoverHeight( 5.0, TRUE, 0.5); | |||
} else if (testCount == 10) { | |||
llSetHoverHeight( 0, TRUE, 0.5); | |||
llOwnerSay("Ground Repel"); | |||
llGroundRepel( 5, TRUE, 0.5); | |||
} else if (testCount == 11) { | |||
llGroundRepel( 0, TRUE, 0.5); | |||
llOwnerSay("Buoyancy"); | |||
llSetBuoyancy( 0.997 ); | |||
} else { | |||
llSetBuoyancy( 0.0 ); | |||
llOwnerSay("Done"); | |||
testCount=(-1); | |||
} | |||
llOwnerSay((string)timerCount+". energy :"+(string)llGetEnergy()); | |||
timerCount = 0; | |||
testCount++; | |||
} | |||
timer() { | |||
llOwnerSay((string)timerCount+". energy :"+(string)llGetEnergy()); | |||
timerCount++; | |||
if (timerCount>10) { // just in case floating | |||
returnHome(); | |||
} | |||
} | |||
collision(integer n) { | |||
llOwnerSay((string)timerCount+". energy :"+(string)llGetEnergy()); | |||
returnHome(); | |||
} | |||
} | |||
</lsl> | |||
|helpers | |helpers | ||
|also_functions | |also_functions |
Revision as of 11:50, 18 March 2008
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 // 18 March 2008 by Karzita Zabaleta
vector homePos; integer timerCount = 0; integer testCount = 0;
// 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() {
llSetStatus(STATUS_PHYSICS, FALSE); llSleep(0.2); moveTo(llGetPos(),homePos); llSetTimerEvent(0); llSetRot(ZERO_ROTATION);
}
default {
state_entry() { homePos = llGetPos(); llOwnerSay("Mass is "+(string)llGetMass()); } on_rez(integer _n) { llResetScript(); } touch_start(integer n) { 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"); llApplyImpulse( impulse, TRUE ); } else if (testCount == 1) { llOwnerSay("ApplyRotImpulse"); llApplyRotationalImpulse( impulse, TRUE); } else if (testCount == 2) { llOwnerSay("PushObject"); llPushObject(llGetKey(), impulse, ZERO_VECTOR, TRUE); } else if (testCount == 3) { llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); llOwnerSay("Force"); llSetForce( impulse, TRUE ); } else if (testCount == 4) { llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); llOwnerSay("Torque"); llSetTorque( impulse, TRUE ); } else if (testCount == 5) { llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); llOwnerSay("Force and Torque"); llSetForceAndTorque( impulse, impulse, TRUE ); } else if (testCount == 6) { llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); llOwnerSay("MoveToTarget"); llMoveToTarget( impulse, 0.4 ); } else if (testCount == 7) { llStopMoveToTarget ( ); llOwnerSay("RotLookAt"); llRotLookAt( llEuler2Rot(impulse*DEG_TO_RAD), 0.4, 0.4 ); } else if (testCount == 8) { llStopLookAt ( ); llOwnerSay("LookAt"); llLookAt( impulse, 0.4, 0.4 ); } else if (testCount == 9) { llStopLookAt ( ); llOwnerSay("Hover Height"); llSetHoverHeight( 5.0, TRUE, 0.5); } else if (testCount == 10) { llSetHoverHeight( 0, TRUE, 0.5); llOwnerSay("Ground Repel"); llGroundRepel( 5, TRUE, 0.5); } else if (testCount == 11) { llGroundRepel( 0, TRUE, 0.5); llOwnerSay("Buoyancy"); llSetBuoyancy( 0.997 ); } else { llSetBuoyancy( 0.0 ); llOwnerSay("Done"); testCount=(-1); } llOwnerSay((string)timerCount+". energy :"+(string)llGetEnergy()); timerCount = 0; testCount++; } timer() { llOwnerSay((string)timerCount+". energy :"+(string)llGetEnergy()); timerCount++; if (timerCount>10) { // just in case floating returnHome(); } } collision(integer n) { llOwnerSay((string)timerCount+". energy :"+(string)llGetEnergy()); returnHome(); }
}
</lsl>