User:Ugleh Ulrik/Vector2List
< User:Ugleh Ulrik
Jump to navigation
Jump to search
Revision as of 00:35, 22 April 2010 by Fred Gandt (talk | contribs) (→A Bad Example: Added typecasting (float to string))
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>