Difference between revisions of "LlWater"
Jump to navigation
Jump to search
Line 11: | Line 11: | ||
|constants | |constants | ||
|examples=<pre> | |examples=<pre> | ||
// by Konigmann Lippmann | // by Konigmann Lippmann & Strife Onizuka | ||
FindGroundOrWater() | FindGroundOrWater() | ||
{ | { | ||
float fHeight = llGround( ZERO_VECTOR ); | |||
float | float fWaterLevel = llWater( ZERO_VECTOR ); | ||
float fWaterLevel = llWater( | if( fHeight < fWaterLevel ) | ||
fHeight = fWaterLevel; | |||
vector vTarget = llGetPos(); | |||
vector | //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 ); | |||
llSetPos( | |||
} | } | ||
Line 36: | Line 31: | ||
{ | { | ||
touch_start(integer total_number) | touch_start(integer total_number) | ||
{ | |||
FindGroundOrWater(); | FindGroundOrWater(); | ||
} | |||
} | } | ||
</pre> | </pre> |
Revision as of 23:03, 2 September 2007
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: float llWater( vector offset );153 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Returns a float that is the water height below the object position + offset
• vector | offset |
The requested position needs to be in the same sim.
Caveats
Examples
// by Konigmann Lippmann & Strife Onizuka FindGroundOrWater() { float fHeight = llGround( ZERO_VECTOR ); float fWaterLevel = llWater( ZERO_VECTOR ); if( fHeight < fWaterLevel ) fHeight = fWaterLevel; vector vTarget = llGetPos(); //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 ); } default { touch_start(integer total_number) { FindGroundOrWater(); } }