Difference between revisions of "LlWater"

From Second Life Wiki
Jump to navigation Jump to search
m (Replaced old <LSL> block with <source lang="lsl2">)
 
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{LSL_Function
{{LSL_Function
|inject-2={{LSL Function/offset|offset|noZ=*|sim=*}}
|func=llWater
|func=llWater
|func_id=153|func_sleep=0.0|func_energy=10.0
|func_id=153|func_sleep=0.0|func_energy=10.0
|func_footnote=The requested position needs to be in the same sim.
|func_footnote=
Water height is constant across each entire sim and is typically 20 meters but not always.
|func_desc
|func_desc
|p1_type=vector|p1_name=offset
|p1_type=vector|p1_name=offset
|return_type=float
|return_type=float
|return_text=that is the water height below the object position + '''offset'''
|return_text=that is the water height below the prim's [[llGetPos|position]] + {{LSLP|offset}}
|spec
|spec
|caveats
|caveats
|constants
|constants
|examples=<pre>
|examples=
// by Konigmann Lippmann & Strife Onizuka
<source lang="lsl2">// Makes the object land on ground or on water
 
FindGroundOrWater()
FindGroundOrWater()
{
{
     float fHeight = llGround( ZERO_VECTOR );
     vector vTarget = llGetPos();
    vTarget.z = llGround( ZERO_VECTOR );
     float fWaterLevel = llWater( ZERO_VECTOR );
     float fWaterLevel = llWater( ZERO_VECTOR );
     if( fHeight < fWaterLevel )
     if( vTarget.z < fWaterLevel )
         fHeight = fWaterLevel;
         vTarget.z = fWaterLevel;
    vector vTarget = llGetPos();
     llSetRegionPos(vTarget);
 
    //llSetPos can only move 10m at a time.
    integer iCounter = 1 + llAbs((integer)(vTarget.z - fHeight) / 10);
    vTarget.z = fHeight;
     do
        llSetPos( vTarget );
    while( --iCounter );
}
}


Line 35: Line 32:
     }
     }
}
}
</pre>
</source>
|helpers
|helpers
|also_functions={{LSL DefineRow||[[llGround]]|Gets the ground height}}
|also_functions={{LSL DefineRow||[[llGround]]|Gets the ground height}}

Latest revision as of 10:54, 22 January 2015

Summary

Function: float llWater( vector offset );
0.0 Forced Delay
10.0 Energy

Returns a float that is the water height below the prim's position + offset

• vector offset offset relative to the prim's position and expressed in local coordinates

The requested position needs to be in the same region. Only the x and y coordinates in offset are important, the z component is ignored. Water height is constant across each entire sim and is typically 20 meters but not always.

Examples

// Makes the object land on ground or on water

FindGroundOrWater()
{
    vector vTarget = llGetPos();
    vTarget.z = llGround( ZERO_VECTOR );
    float fWaterLevel = llWater( ZERO_VECTOR );
    if( vTarget.z < fWaterLevel )
        vTarget.z = fWaterLevel;
    llSetRegionPos(vTarget);
}

default
{
    touch_start(integer total_number)
    {
        FindGroundOrWater();
    }
}

See Also

Functions

•  llGround Gets the ground height
•  llWind Gets the wind velocity
•  llCloud Gets the cloud density

Deep Notes

Signature

function float llWater( vector offset );