Difference between revisions of "LlDetectedRot"

From Second Life Wiki
Jump to navigation Jump to search
m (Added Example)
Line 9: Line 9:
|caveats
|caveats
|constants
|constants
|examples
|examples=
<pre>
//--// get compass facing of Avatar that touches this object //--//
 
//-- list of compass directions starting after West, rotated counterclockwise
list gLstCompassPoints = ["SouthWest","South","SouthEast","East","NorthEast","North","NorthWest"];
 
//-- convert rotation to z-axis compass direction
string vfCompassDirection( rotation vRotBase ){
  //-- convert rotation to dgrees
  vector vVecBase = llRot2Euler( vRotBase ) * RAD_TO_DEG;
  //-- covert to range 0-159
  vVecBase.z += 180;
  if ( vVecBase.z < 22.5 || vVecBase.z > 337.5){
    return "West";
  }
  else{
    //--ofset to the end or west range
    vVecBase.z -= 22.5;
    //-- divide by range (45 deg) and round to get index of direction
    return llList2String( gLstCompassPoints, llRound( vVecBase.z - 11.25 ) / 45 );
  }
}
 
default{
  state_entry(){
    llSay( 0, "Touch me to get your compass facing" );
  }
 
  touch_start( integer vIntTouchCount ){
    integer vIntCounter = 0;
    do{
      llSay( 0,
            llDetectedName( vIntCounter )
            + " is facing "
              //-- next line gets avatar rotation and converts to compass direction
            + vfCompassDirection( llDetectedRot( vIntCounter ) ) );
    }while ( ++vIntCounter < vIntTouchCount );
  }
}
</pre>[[User:Void Singer|Void Singer]] 00:58, 15 October 2007 (PDT)
|helpers
|helpers
|also_functions
|also_functions

Revision as of 00:58, 15 October 2007

Summary

Function: rotation llDetectedRot( integer number );

Returns a rotation that is the rotation of detected object number.

• integer number

number does not support negative indexes. Returns <0.0, 0.0, 0.0, 1.0> if number is not valid sensed object.

Caveats

  • If number is out of bounds the script continues to execute without an error message.
All Issues ~ Search JIRA for related Bugs

Examples

//--// get compass facing of Avatar that touches this object //--//

 //-- list of compass directions starting after West, rotated counterclockwise
list gLstCompassPoints = ["SouthWest","South","SouthEast","East","NorthEast","North","NorthWest"];

 //-- convert rotation to z-axis compass direction
string vfCompassDirection( rotation vRotBase ){
   //-- convert rotation to dgrees
  vector vVecBase = llRot2Euler( vRotBase ) * RAD_TO_DEG;
   //-- covert to range 0-159
  vVecBase.z += 180;
  if ( vVecBase.z < 22.5 || vVecBase.z > 337.5){
    return "West";
  }
  else{
     //--ofset to the end or west range
    vVecBase.z -= 22.5;
     //-- divide by range (45 deg) and round to get index of direction
    return llList2String( gLstCompassPoints, llRound( vVecBase.z - 11.25 ) / 45 );
  }
}

default{
  state_entry(){
    llSay( 0, "Touch me to get your compass facing" );
  }

  touch_start( integer vIntTouchCount ){
    integer vIntCounter = 0;
    do{
      llSay( 0,
             llDetectedName( vIntCounter )
             + " is facing "
              //-- next line gets avatar rotation and converts to compass direction
             + vfCompassDirection( llDetectedRot( vIntCounter ) ) );
    }while ( ++vIntCounter < vIntTouchCount );
  }
}
Void Singer 00:58, 15 October 2007 (PDT)

See Also

Articles

•  Detected

Deep Notes

Search JIRA for related Issues

Signature

function rotation llDetectedRot( integer number );