User:Ugleh Ulrik/Vector2List

From Second Life Wiki
< User:Ugleh Ulrik
Revision as of 00:35, 22 April 2010 by Fred Gandt (talk | contribs) (→‎A Bad Example: Added typecasting (float to string))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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>