Difference between revisions of "User:Ugleh Ulrik/Vector2List"

From Second Life Wiki
Jump to navigation Jump to search
m
m (→‎A Bad Example: Added typecasting (float to string))
 
Line 45: Line 45:
     {
     {
         vector pos = llGetPos();
         vector pos = llGetPos();
         llOwnerSay("X Axis: " + pos.x);
         llOwnerSay("X Axis: " + ((string)pos.x));
         llOwnerSay("Y Axis: " + pos.y);
         llOwnerSay("Y Axis: " + ((string)pos.y));
         llOwnerSay("Z Axis: " + pos.z);
         llOwnerSay("Z Axis: " + ((string)pos.z));
     }
     }
}
}

Latest revision as of 01:35, 22 April 2010

With many requests on how to easily store a vector to a list, mainly for purposes in storing a llGetPos() only to capture the x and y cords, this is a simple way.

For Example <lsl>list thislist = Vector2List(llGetPos());</lsl> As a list, would output <lsl>list thislist = [x, y, z];</lsl>

Function <lsl>list Vector2List(vector v){

   return [v.x, v.y, v.z];

}</lsl>

A Bad Example

Do Not Do This <lsl> list Vector2List(vector v){

   return [v.x, v.y, v.z];

}

default {

   touch_start(integer total_number)
   {
       vector pos = llGetPos();
       list thislist =  Vector2List(pos);
       string x = llList2String(thislist,0);
       string y = llList2String(thislist,1);
       string z = llList2String(thislist,2);
       llOwnerSay("X Axis: " + x);
       llOwnerSay("Y Axis: " + y);
       llOwnerSay("Z Axis: " + z);
   }

} </lsl>

Here is the correct way to do this

<lsl> default {

   touch_start(integer total_number)
   {
       vector pos = llGetPos();
       llOwnerSay("X Axis: " + ((string)pos.x));
       llOwnerSay("Y Axis: " + ((string)pos.y));
       llOwnerSay("Z Axis: " + ((string)pos.z));
   }

} </lsl>

A Good Example

<lsl> list Vector2List(vector v){

   return [v.x, v.y, v.z];

}

default {

   touch_start(integer total_number)
   {
       list size = Vector2List(llGetScale());
       list sorted_size = llListSort(size, 1, 0);
       llOwnerSay("<"+llList2CSV(sorted_size)+">");
   }

} </lsl>