Difference between revisions of "LlGround"

From Second Life Wiki
Jump to navigation Jump to search
m
(Bring example into line with llWater)
Line 11: Line 11:
|constants
|constants
|examples=
|examples=
<lsl>// Get the object to land on the ground or on the water
<lsl>// Makes the object land on ground or on water
// by Konigmann Lippmann & Strife Onizuka
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 );
}
}



Revision as of 10:54, 4 January 2013

Summary

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

Returns a float that is the ground height directly below the prim 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.

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

•  llGroundContour Gets the ground contour
•  llGroundNormal Gets the ground normal
•  llGroundSlope Gets the ground slope
•  llEdgeOfWorld Returns existence of neighboring sims

Deep Notes

Signature

function float llGround( vector offset );