Difference between revisions of "LlWater"

From Second Life Wiki
Jump to: navigation, search
m
(Bring example up-to-date with llSetRegionPos().)
Line 13: Line 13:
 
|constants
 
|constants
 
|examples=
 
|examples=
<lsl>// Gets the object to land on ground or on water
+
<lsl>// 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 );
+
 
}
 
}
  

Revision as of 08:59, 4 January 2013

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

<lsl>// 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();
   }

}

</lsl>

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 );