|
|
Line 1: |
Line 1: |
| == Send vector as on_rez parameter ==
| |
|
| |
|
| this script is to demonstrate how a vector could be sent to a rezzed object
| |
| without using the listen event, sending it throught the start parameter in
| |
| the llRezObject() function. There are two parts, the decoder that would be
| |
| in the rezzed object to convert the start_parameter back to a vector the
| |
| other part(s) is the encoder there are two encoders one to send a float vector
| |
| eg <1.34,4.87,9.96> and one to send a integer vector eg <13,4,999>
| |
|
| |
|
| |
| == Limitations ==
| |
|
| |
| -- using the float encoder the maximum value that can be sent is 9.99
| |
|
| |
| -- using the float encoder it is only accurate to 2 decimal places
| |
|
| |
| -- using the integer encoder the maximum value that can be sent is 999
| |
|
| |
| -- one big limitation at the moment is that only posative values can be sent
| |
|
| |
|
| |
|
| |
| == Links to simmilar content ==
| |
|
| |
| [[WaS Pass data to rezzed object|Wizardry_and_Steamworks/LSL#Pass_Data_to_a_Rezzed_Object]]
| |
|
| |
| <lsl>
| |
| // [M] moonbuggy- 2012, License: GPLv3
| |
| // Please see: http://www.gnu.org/licenses/gpl.html
| |
| // for legal details, rights of fair usage and
| |
| // the disclaimer and warranty conditions.
| |
|
| |
|
| |
| //this script is to demonstrate how a vector could be sent to a rezzed object
| |
| //without using the listen event, sending it throught the start parameter in
| |
| //the llRezObject() function. There are two parts, the decoder that would be
| |
| //in the rezzed object to convert the start_parameter back to a vector the
| |
| //other part(s) is the encoder there are two encoders one to send a float vector
| |
| // eg <1.34,4.87,9.96> and one to send a integer vector eg <13,4,999>
| |
|
| |
| //****LIMITATIONS****
| |
| //using the float encoder the maximum value that can be sent is 9.99
| |
| //using the float encoder it is only accurate to 2 decimal places
| |
| //using the integer encoder the maximum value that can be sent is 999
| |
| //one big limitation at the moment is that only posative values can be sent
| |
|
| |
| //if anyone has any ideas to overcome these limitaions and would like to talk to me
| |
| //please IM me :)
| |
|
| |
|
| |
|
| |
| vector start_vec=<8,26,999>;
| |
|
| |
| integer encoded;
| |
| vector decoded;
| |
| //--------------------------------------------------------------------------------------------
| |
| integer encode_float_vect(vector vec)// there is a maximum value of 9.99 in each float to send
| |
| {
| |
| string v_int = "1";
| |
| list string_split=llParseString2List((string)vec,[",","<",">"," "],[""]);
| |
| integer i;
| |
| for(i=0;i<3;++i)
| |
| {
| |
| list temp=llParseString2List(llList2String(string_split,i),["."],[""]);
| |
| v_int+=llGetSubString(llList2String(temp,0)+llList2String(temp,1),0,2);
| |
| }
| |
| return (integer)v_int;
| |
| }
| |
|
| |
| //--------------------------------------------------------------------------------------------
| |
| integer encode_integer_vect(vector vec)//there is a maximum value of 999 in each integer to send
| |
| {
| |
| string v_int="-1";
| |
| list string_split=llParseString2List((string)vec,[",","<",">"," "],[""]);
| |
| integer i;
| |
| for(i=0;i<3;++i)
| |
| {
| |
| list temp=llParseString2List(llList2String(string_split,i),["."],[""]);
| |
| string temp_string=llGetSubString(llList2String(temp,0),0,2);
| |
| while(llStringLength(temp_string)<3)
| |
| {temp_string="0"+temp_string;}
| |
| v_int+=temp_string;
| |
| }
| |
| return (integer)v_int;
| |
| }
| |
|
| |
| //--------------------------------------------------------------------------------------------
| |
| vector decode_vector(integer int)//decode the integer into vector
| |
| {
| |
| vector decode;
| |
| integer n=0;
| |
| if(int<0){n=1;}
| |
| string vec_x=llGetSubString((string)int,1+n,3+n);
| |
| string vec_y=llGetSubString((string)int,4+n,6+n);
| |
| string vec_z=llGetSubString((string)int,7+n,10+n);
| |
| if(int<0)
| |
| {decode.x=(integer)vec_x;decode.y=(integer)vec_y;decode.z=(integer)vec_z;}
| |
| else
| |
| {
| |
| decode.x=(float)(llGetSubString(vec_x,0,0)+"."+llGetSubString(vec_x,1,2));
| |
| decode.y=(float)(llGetSubString(vec_y,0,0)+"."+llGetSubString(vec_y,1,2));
| |
| decode.z=(float)(llGetSubString(vec_z,0,0)+"."+llGetSubString(vec_z,1,2));
| |
| }
| |
| return decode;
| |
| }
| |
|
| |
| //--------------------------------------------------------------------------------------------
| |
| default
| |
| {
| |
|
| |
| touch_start(integer total_number)
| |
| {
| |
| encoded=encode_integer_vect(start_vec);
| |
| decoded=decode_vector(encoded);
| |
| llSay(0,"START:"+(string)start_vec);
| |
| llSay(0,"ENCODE:"+(string)encoded);
| |
| llSay(0,"DECODE:"+(string)decoded);
| |
|
| |
| //IN LINE USE, BELOW IS AN EXAMPLE HOW TO ENCODE THE VECTOR AND SEND IT TO THE OBJECT DIRECTLY
| |
| llRezObject("rezme",llGetPos()+<0,0,1>,ZERO_VECTOR,ZERO_ROTATION,encode_integer_vect(start_vec));
| |
|
| |
| }
| |
|
| |
| //BELOW IS AN EXAMPLE HOW TO DECODE IN THE OBJECT BEING REZZED
| |
| //on_rez(integer start_param)
| |
| //{
| |
| // vector DECODED_VECTOR = decode_vector(start_param);
| |
| //}
| |
| }
| |
|
| |
| </lsl>
| |