Difference between revisions of "LlWater"

From Second Life Wiki
Jump to: navigation, search
m
m (Replaced old <LSL> block with <source lang="lsl2">)
 
(3 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
|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
+
|func_footnote=
 
Water height is constant across each entire sim and is typically 20 meters but not always.
 
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 + {{LSLP|offset}}
+
|return_text=that is the water height below the prim's [[llGetPos|position]] + {{LSLP|offset}}
 
|spec
 
|spec
 
|caveats
 
|caveats
 
|constants
 
|constants
 
|examples=
 
|examples=
<lsl>// Gets the object to land on ground or on water
+
<source lang="lsl2">// Makes the object land on ground or on water
// by Konigmann Lippmann & Strife Onizuka
+
 
 
FindGroundOrWater()
 
FindGroundOrWater()
 
{
 
{
    float fHeight = llGround( ZERO_VECTOR );
 
    float fWaterLevel = llWater( ZERO_VECTOR );
 
    if( fHeight < fWaterLevel )
 
        fHeight = fWaterLevel;
 
 
     vector vTarget = llGetPos();
 
     vector vTarget = llGetPos();
 
+
     vTarget.z = llGround( ZERO_VECTOR );
     //llSetPos can only move 10m at a time.
+
     float fWaterLevel = llWater( ZERO_VECTOR );
     integer iCounter = 1 + llAbs((integer)(vTarget.z - fHeight) / 10);
+
    if( vTarget.z < fWaterLevel )
    vTarget.z = fHeight;
+
        vTarget.z = fWaterLevel;
     do
+
     llSetRegionPos(vTarget);
        llSetPos( vTarget );
+
    while( --iCounter );
+
 
}
 
}
  
Line 38: Line 32:
 
     }
 
     }
 
}
 
}
</lsl>
+
</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 );

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

Search JIRA for related Issues

Signature

function float llWater( vector offset );