Created
March 28, 2012 02:57
-
-
Save d4l3k/2223157 to your computer and use it in GitHub Desktop.
TomGUI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// TomGUI!!! | |
// vAlphaPotato | |
reset() | |
{ | |
llPassTouches(TRUE); | |
llSetLinkPrimitiveParamsFast(LINK_ALL_CHILDREN,[PRIM_SIZE,<0.01,0.01,0.01>,PRIM_POS_LOCAL,<0.0,0.0,0.0>,PRIM_COLOR,ALL_SIDES,<1.0,1.0,1.0>,0.0]); | |
integer i; | |
integer to = llGetNumberOfPrims(); | |
for(i=2;i<=to;i++) | |
{ | |
aprims += [i]; | |
} | |
llOwnerSay("Total prims: "+(string)llGetListLength(aprims)); | |
} | |
list aprims = []; | |
list d_prims = []; | |
list d_types = []; | |
list d_reference = []; | |
list d_offset = []; | |
list d_size = []; | |
integer TYPE_WINDOW = 0; | |
integer TYPE_WINDOW_CLOSE = 1; | |
integer TYPE_TEXT = 2; | |
integer TYPE_BUTTON = 3; | |
integer prim_get() | |
{ | |
integer prim = llList2Integer(aprims,0); | |
aprims = llDeleteSubList(aprims,0,1); | |
return prim; | |
} | |
prim_register(integer id, integer type, integer reference, vector offset, vector size) | |
{ | |
d_prims+=[id]; | |
d_types+=[type]; | |
d_reference+=[reference]; | |
d_offset+=[offset]; | |
d_size+=[size]; | |
} | |
integer prim_type(integer id) | |
{ | |
integer index = llListFindList(d_prims,[id]); | |
return llList2Integer(d_types,index); | |
} | |
integer prim_reference(integer id) | |
{ | |
integer index = llListFindList(d_prims,[id]); | |
return llList2Integer(d_reference,index); | |
} | |
vector prim_offset(integer id) | |
{ | |
integer index = llListFindList(d_prims,[id]); | |
return llList2Vector(d_offset,index); | |
} | |
prim_offset_set(integer id, vector offset) | |
{ | |
integer index = llListFindList(d_prims,[id]); | |
d_offset = llListReplaceList(d_offset,[offset], index, index+1); | |
} | |
vector prim_size(integer id) | |
{ | |
integer index = llListFindList(d_prims,[id]); | |
return llList2Vector(d_size,index); | |
} | |
vector prim_pos(integer id) | |
{ | |
integer reference = prim_reference(id); | |
vector pos = prim_offset(id); | |
pos.y = -pos.y; | |
return pos + prim_offset(reference); | |
} | |
prim_destroy(integer id) | |
{ | |
integer i; | |
integer length = llGetListLength(d_prims); | |
list prims = []; | |
for(i=0;i<length;i++) | |
{ | |
if(llList2Integer(d_reference,i)==id) | |
{ | |
prims+=[llList2Integer(d_prims,i)]; | |
} | |
} | |
integer index = llListFindList(d_prims,[id]); | |
d_prims = llDeleteSubList(d_prims,index,index); | |
d_types = llDeleteSubList(d_types,index,index); | |
d_reference = llDeleteSubList(d_reference,index,index); | |
d_offset = llDeleteSubList(d_offset,index,index); | |
d_size = llDeleteSubList(d_size,index,index); | |
aprims+=[id]; | |
llSetLinkPrimitiveParamsFast(id,[PRIM_SIZE,ZERO_VECTOR,PRIM_POS_LOCAL,ZERO_VECTOR,PRIM_COLOR,ALL_SIDES,<1.0,1.0,1.0>,0.0,PRIM_TEXT,"",ZERO_VECTOR,0.0]); | |
length = llGetListLength(prims); | |
for(i=0;i<length;i++) | |
{ | |
prim_destroy(llList2Integer(prims,i)); | |
} | |
} | |
integer window_new(vector pos, vector size) | |
{ | |
pos.y = -pos.y; | |
integer window = prim_get(); | |
prim_register(window,TYPE_WINDOW,1,pos,size); | |
vector l_pos = pos+<size.x,-size.y,0>/2; | |
llSetLinkPrimitiveParamsFast(window,[PRIM_POS_LOCAL,l_pos,PRIM_SIZE,size,PRIM_COLOR,ALL_SIDES,<0.0,0.0,0.0>,0.5]); | |
integer window_close = prim_get(); | |
vector offset = pos+<size.x-0.005,-0.005,0.005>; | |
prim_register(window_close,TYPE_WINDOW_CLOSE,window,offset,ZERO_VECTOR); | |
llSetLinkPrimitiveParamsFast(window_close,[PRIM_POS_LOCAL,offset,PRIM_COLOR,ALL_SIDES,<1.0,0.0,0.0>,1.0]); | |
return window; | |
} | |
integer text_new(integer window,string text,vector offset) | |
{ | |
integer id = prim_get(); | |
prim_register(id,TYPE_TEXT,window,offset+<0.,0.,0.001>,ZERO_VECTOR); | |
llSetLinkPrimitiveParamsFast(id,[PRIM_POS_LOCAL,prim_pos(id),PRIM_SIZE, <.005*llStringLength(text),.05,.0>,PRIM_ROTATION, llEuler2Rot(<-PI_BY_TWO,0.0,0.0>) , PRIM_COLOR,ALL_SIDES,<1.0,1.0,1.0>,0.0, PRIM_TEXT,text,<1.0,1.0,1.0>,1.0,PRIM_TYPE,PRIM_TYPE_BOX,PRIM_HOLE_DEFAULT, <0.375,.875,0.0>,0.0,ZERO_VECTOR,<1.0,1.0,0.0>,<0.0,0.0,0.0>]); | |
return id; | |
} | |
integer button_new(integer window,string text,vector offset) | |
{ | |
integer id = prim_get(); | |
prim_register(id,TYPE_BUTTON,window,offset+<0.,0.,0.001>,ZERO_VECTOR); | |
llSetLinkPrimitiveParamsFast(id,[PRIM_POS_LOCAL,prim_pos(id),PRIM_SIZE, <.005*llStringLength(text),.05,.0>,PRIM_ROTATION, llEuler2Rot(<-PI_BY_TWO,0.0,0.0>) , PRIM_COLOR,ALL_SIDES,<1.0,1.0,1.0>,1.0, PRIM_TEXT,text,<1.0,1.0,1.0>,1.0,PRIM_TYPE,PRIM_TYPE_BOX,PRIM_HOLE_DEFAULT, <0.375,.875,0.0>,0.0,ZERO_VECTOR,<1.0,1.0,0.0>,<0.0,0.0,0.0>]); | |
return id; | |
} | |
text_pos(integer id, vector offset) | |
{ | |
llSetLinkPrimitiveParamsFast(id,[PRIM_POS_LOCAL,prim_pos(id)]); | |
} | |
default | |
{ | |
state_entry() | |
{ | |
reset(); | |
integer window = window_new(<0.0,0.0,0.0>,<.75,0.4,0.0>); | |
integer text = text_new(window,"Hello!",<0.1,0.1,0.0>); | |
integer text2 = text_new(window,"Another Text!",<0.5,0.4,0.0>); | |
integer window2 = window_new(<0.0,0.5,0.0>,<.5,0.4,0.0>); | |
integer text3 = text_new(window2,"Another WINDOW! Shocker!",<0.1,0.1,0.0>); | |
integer button = button_new(window2,"Button! Butts!",<0.2,0.4,0.0>); | |
} | |
touch_start(integer n) | |
{ | |
integer id = llDetectedLinkNumber(0); | |
if(id==1) | |
{ | |
return; | |
} | |
integer type = prim_type(id); | |
if(type==TYPE_WINDOW_CLOSE) | |
{ | |
prim_destroy(prim_reference(id)); | |
} | |
else if(type==TYPE_BUTTON) | |
{ | |
llSay(0,"You just clicked a button."); | |
integer window2 = window_new(<0.6,0.5,0.0>,<.5,0.4,0.0>); | |
integer text3 = text_new(window2,"Here's a third window",<0.1,0.1,0.0>); | |
integer test4 = text_new(window2,"Twas created by button click.",<0.2,0.4,0.0>); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment