Difference between revisions of "LlGround"
Jump to navigation
Jump to search
Line 9: | Line 9: | ||
|caveats | |caveats | ||
|constants | |constants | ||
|examples | |examples=<pre> | ||
FindGroundWater() | |||
{ | |||
//llSay(0, "Finding Ground."); | |||
float fGroundHeight = llGround( <0,0,0> ); | |||
float fWaterLevel = llWater( <0,0,0> ); | |||
integer iRepeats = 0; | |||
if( fGroundHeight < fWaterLevel ) | |||
fGroundHeight = fWaterLevel; | |||
vector vOldPosition = llGetPos(); | |||
vector vNewPosition = vOldPosition; | |||
vNewPosition.z = fGroundHeight; | |||
//llSay(0, "New location should be:" + (string)vNewPosition ); | |||
while( (llAbs((integer)(vOldPosition.z - vNewPosition.z)) > 2.0 ) && (fGroundHeight>iRepeats) ) | |||
{ | |||
llSetPos( vNewPosition ); | |||
vOldPosition = llGetPos(); | |||
//llSay(0, "vOldPosition=[" + (string)vOldPosition +"]" ); | |||
iRepeats++; //iRepeats is used as a safety valve to make sure that this routine doesn't repeat forever. | |||
} | |||
} | |||
default | |||
{ | |||
state_entry() | |||
{ | |||
//llSay(0, "default:state_entry"); | |||
} | |||
touch_start(integer total_number) | |||
{ | |||
FindGroundWater(); | |||
} | |||
} | |||
</pre> | |||
|helpers | |helpers | ||
|also_functions= | |also_functions= |
Revision as of 14:49, 2 September 2007
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: float llGround( vector offset );42 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Returns a float that is the ground height below the object position + offset
• vector | offset |
The requested position needs to be in the same sim, only the X & Y of the offset are important.
Caveats
Examples
FindGroundWater() { //llSay(0, "Finding Ground."); float fGroundHeight = llGround( <0,0,0> ); float fWaterLevel = llWater( <0,0,0> ); integer iRepeats = 0; if( fGroundHeight < fWaterLevel ) fGroundHeight = fWaterLevel; vector vOldPosition = llGetPos(); vector vNewPosition = vOldPosition; vNewPosition.z = fGroundHeight; //llSay(0, "New location should be:" + (string)vNewPosition ); while( (llAbs((integer)(vOldPosition.z - vNewPosition.z)) > 2.0 ) && (fGroundHeight>iRepeats) ) { llSetPos( vNewPosition ); vOldPosition = llGetPos(); //llSay(0, "vOldPosition=[" + (string)vOldPosition +"]" ); iRepeats++; //iRepeats is used as a safety valve to make sure that this routine doesn't repeat forever. } } default { state_entry() { //llSay(0, "default:state_entry"); } touch_start(integer total_number) { FindGroundWater(); } }
See Also
Functions
• | llGroundContour | – | Gets the ground contour | |
• | llGroundNormal | – | Gets the ground normal | |
• | llGroundSlope | – | Gets the ground slope |