LlGetEnergy/fr - Second Life Wiki

LlGetEnergy/fr

From Second Life Wiki

Second Life Wiki > LlGetEnergy/fr
Jump to: navigation, search

Contents

Description

Fonction: float llGetEnergy( );

Renvoie un float correspondant à la quantité d'énergie contenue actuellement par l'objet et exprimé en % du maximum.


Exemples

// Ce script teste la consommation d'énergie de la plupart des fonctions physiques
// 18 mars 2008, par Karzita Zabaleta
 
vector posDepart;
integer compteTimer = 0;
integer compteTests = 0; 
 
vaEn(vector origine, vector destination)
{
    float dist = llVecDist(origine, destination);
    integer iterations = llCeil( llLog(dist/10.0) / llLog(2.0) );
    integer i;
    list params = [ PRIM_POSITION, destination ];
 
    for (i = 0; i < iterations; i++)
        params = (params=[]) + params + params;
 
    // Déplace la prim effectivement, à présent
    llSetPrimitiveParams(params);
}
 
reviensDepart()
{
    llSetStatus(STATUS_PHYSICS, FALSE);
    llSleep(0.2);
    vaEn(llGetPos(), posDepart);
    llSetTimerEvent(0);
    llSetRot(ZERO_ROTATION);
}
 
default
{
    state_entry()
    {
        posDepart = llGetPos();
        llOwnerSay("Masse égale à " + (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 impulsion = <0,0,5> * llGetMass();
 
        if (compteTests == 0)
        {
            llOwnerSay("ApplyImpulse");
            llApplyImpulse( impulsion, TRUE ); 
        }
        else if (compteTests == 1)
        {
            llOwnerSay("ApplyRotImpulse");
            llApplyRotationalImpulse( impulsion, TRUE);
        }
        else if (compteTests == 2)
        {
            llOwnerSay("PushObject");
            llPushObject(llGetKey(), impulsion, ZERO_VECTOR, TRUE); 
        }
        else if (compteTests == 3)
        {
            llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); 
            llOwnerSay("Force");
            llSetForce( impulsion, TRUE ); 
        }
        else if (compteTests == 4)
        {
            llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); 
            llOwnerSay("Torque");
            llSetTorque( impulsion, TRUE ); 
        }
        else if (compteTests == 5)
        {
            llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); 
            llOwnerSay("ForceAndTorque");
            llSetForceAndTorque( impulsion, impulsion, TRUE ); 
        }
        else if (compteTests == 6)
        {
            llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); 
            llOwnerSay("MoveToTarget");
            llMoveToTarget( impulsion, 0.4 );
        }
        else if (compteTests == 7)
        {
            llStopMoveToTarget ( ); 
            llOwnerSay("RotLookAt");
            llRotLookAt( llEuler2Rot(impulsion * DEG_TO_RAD), 0.4, 0.4 ); 
        }
        else if (compteTests == 8)
         {
            llStopLookAt ( ); 
            llOwnerSay("LookAt");
            llLookAt( impulsion, 0.4, 0.4 ); 
        }
        else if (compteTests == 9)
        {
            llStopLookAt ( ); 
            llOwnerSay("HoverHeight");
            llSetHoverHeight( 5.0, TRUE, 0.5);
        }
        else if (compteTests == 10)
        {
            llSetHoverHeight( 0, TRUE, 0.5);
            llOwnerSay("GroundRepel");
            llGroundRepel( 5, TRUE, 0.5);
        }
        else if (compteTests == 11)
        {
            llGroundRepel( 0, TRUE, 0.5);
            llOwnerSay("Buoyancy");
            llSetBuoyancy( 0.997 );
        }
        else
        {
            llSetBuoyancy( 0.0 );
            llOwnerSay("Fini");
            compteTests = (-1);
        }
        llOwnerSay((string) compteTimer + ". energie    :" + (string) llGetEnergy());
        compteTimer = 0;
        compteTests++;
    }
 
    timer()
    {
        llOwnerSay((string) compteTimer + ". energie    :" + (string) llGetEnergy());
        compteTimer++;
        if (compteTimer > 10)
          reviensDepart();
    }
 
    collision(integer _n)
    {
        llOwnerSay((string) compteTimer + ". energie    :" + (string) llGetEnergy());
        reviensDepart();
    }
}
Vous cherchez encore des informations ? Peut-être cette page du LSLwiki pourra vous renseigner.