Guest User

Untitled

a guest
Apr 30th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // V START Multi texture line rendering V
  2. list lines = [-1,-1,-1,-1,-1,-1];
  3. list faceordering =  [3,7,4,6,1];
  4. list repeats = [<2.48,1,0>,<1,1,0>,<-15.15000,1,0>,<1,1,0>,<2.48000,1,0>];
  5. list offsets = [<-0.2559,0,0>,<0,0,0>,<1,0,0>,<0,0,0>,<-0.74,0,0>];
  6. list preload_multitexture_faces = [2,0,5];
  7. preload_multi(list data)
  8. {
  9.     if(llGetListLength(data) == 4)
  10.     {
  11.         integer line = llList2Integer(data,0);
  12.         if((line >= 1) && (line <= 6))
  13.         {
  14.             integer loop = 1;
  15.             while(loop < 4)
  16.             {
  17.                 integer face = llList2Integer(preload_multitexture_faces,loop-1);
  18.                 llSetLinkPrimitiveParamsFast(llList2Integer(lines,line-1),[PRIM_TEXTURE,face,llList2String(data,loop),<1,1,1>,<1,1,1>,0,PRIM_COLOR,face,<0,0,0>,0]);
  19.                 loop++;
  20.             }        
  21.         }
  22.         else llOwnerSay("Debug: unsupported preload_multi passed "+(string)line+"");
  23.     }
  24.     else llOwnerSay("Debug: incorrect data amount passed to preload_multi");
  25. }
  26. grayout(list data)
  27. {
  28.     if(llGetListLength(data) == 2)
  29.     {
  30.         integer line = llList2Integer(data,0);
  31.         integer block = llList2Integer(data,1);
  32.         if((line >= 1) && (line <= 6) && (block >= 1) && (block <= 5))
  33.         {
  34.             llSetLinkPrimitiveParamsFast(llList2Integer(lines,line-1),[PRIM_COLOR,llList2Integer(faceordering,block-1),<0.2,0.2,0.2>,1]);        
  35.         }
  36.         else llOwnerSay("Debug: unsupported grayout command passed "+(string)line+","+(string)block+"");
  37.     }
  38.     else llOwnerSay("Debug: incorrect data amount passed to grayout");
  39. }
  40. swaptexture(list data)
  41. {
  42.     if(llGetListLength(data) == 3)
  43.     {
  44.         integer line = llList2Integer(data,0);
  45.         integer block = llList2Integer(data,1);
  46.         string texture = llList2String(data,2);
  47.         if((line >= 1) && (line <= 6) && (block >= 1) && (block <= 5))
  48.         {
  49.             integer face = llList2Integer(faceordering,block-1);
  50.             llSetLinkPrimitiveParamsFast(llList2Integer(lines,line-1),[PRIM_TEXTURE,face,texture,llList2Vector(repeats,block-1),llList2Vector(offsets,block-1),0,PRIM_COLOR,face,<1,1,1>,1]);        
  51.         }
  52.         else llOwnerSay("Debug: unsupported swaptexture command passed "+(string)line+","+(string)block+"");
  53.     }
  54.     else llOwnerSay("Debug: incorrect data amount passed to swaptexture");  
  55. }
  56. renderline(list data)
  57. {
  58.     if(llGetListLength(data) == 6)
  59.     {
  60.         integer line = llList2Integer(data,0);
  61.         if((line >= 1) && (line <= 6))
  62.         {
  63.             integer loop = 0;
  64.             while(loop < 5)
  65.             {
  66.                 integer face = llList2Integer(faceordering,loop);
  67.                 llSetLinkPrimitiveParamsFast(llList2Integer(lines,line-1),[PRIM_TEXTURE,face,llList2String(data,loop+1),llList2Vector(repeats,loop),llList2Vector(offsets,loop),0,PRIM_COLOR,face,<1,1,1>,1]);  
  68.                 loop++;
  69.             }      
  70.         }
  71.         else llOwnerSay("Debug: unsupported renderline command passed "+(string)line+"");
  72.     }
  73.     else llOwnerSay("Debug: incorrect data amount passed to renderline");      
  74. }
  75. // ^ END Multi texture line rendering ^
  76. // V START touchscreen rendering V
  77. list touch_screen_preload_faces = [0,2,4,3,5,1];
  78. integer touch_screen_active_face = 1;
  79. integer main_screen_link_id = -1;
  80. integer sub_screen_link_id = -1;
  81. preload(integer linkid,list textures)
  82. {
  83.     if(llGetListLength(textures) == 6)
  84.     {
  85.         integer loop = 0;
  86.         while(loop < 6)
  87.         {
  88.             integer face = llList2Integer(touch_screen_preload_faces,loop);
  89.             llSetLinkPrimitiveParamsFast(linkid,[PRIM_TEXTURE,face,llList2String(textures,loop),<1,1,1>,<0,0,0>,0,PRIM_COLOR,face,<0,0,0>,1]);
  90.             loop++;
  91.         }    
  92.     }  
  93.     else llOwnerSay("Debug: incorrect data passed to preload");
  94. }
  95. render(integer linkid,string texture)
  96. {
  97.     llSetLinkPrimitiveParamsFast(linkid,[PRIM_TEXTURE,touch_screen_active_face,texture,<1,1,1>,<0,0,0>,0,PRIM_COLOR,touch_screen_active_face,<1,1,1>,1]);    
  98. }
  99. colorize(integer linkid,vector color)
  100. {
  101.     llSetLinkPrimitiveParamsFast(linkid,[PRIM_COLOR,touch_screen_active_face,color,1]);    
  102. }
  103. show(integer linkid)
  104. {
  105.     llSetLinkAlpha(linkid,0,touch_screen_active_face);    
  106. }
  107. hide(integer linkid)
  108. {
  109.     llSetLinkAlpha(linkid,1,touch_screen_active_face);  
  110. }
  111. // ^ END touchscreen rendering ^
  112. default
  113. {
  114.     state_entry()
  115.     {
  116.         integer loop = 1;
  117.         integer total = llGetNumberOfPrims();
  118.         while(loop <= total)
  119.         {
  120.             string name = llGetLinkName(loop);
  121.             if(name == "mainscreen") main_screen_link_id = loop;
  122.             else if(name == "subscreen") sub_screen_link_id = loop;
  123.             else
  124.             {
  125.                 integer id = (integer)name;
  126.                 if(id > 0) lines = llListReplaceList(lines,[loop],id-1,id-1);
  127.             }
  128.             loop++;
  129.         }    
  130.     }
  131.     link_message(integer sender,integer num,string str,key id)
  132.     {
  133.         if(num == -1) // rendering commands
  134.         {
  135.             list data = llParseString2List(str,["@@"],[""]);
  136.             if(id == "gray_out") grayout(data);
  137.             else if(id == "swap_texture") swaptexture(data);
  138.             else if(id == "render_line") renderline(data);
  139.             else if(id == "preload_multi") preload_multi(data);
  140.             else if(id == "preload_mainscreen") preload(main_screen_link_id,data);
  141.             else if(id == "preload_subscreen") preload(sub_screen_link_id,data);
  142.             else if(id == "render_mainscreen") render(main_screen_link_id,str);
  143.             else if(id == "render_subscreen") render(sub_screen_link_id,str);
  144.             else if(id == "blackout_mainscreen") colorize(main_screen_link_id,<0,0,0>);
  145.             else if(id == "blackout_subscreen") colorize(sub_screen_link_id,<0,0,0>);
  146.             else if(id == "show_mainscreen") show(main_screen_link_id);
  147.             else if(id == "show_subscreen") show(sub_screen_link_id);
  148.             else if(id == "hide_mainscreen") hide(main_screen_link_id);
  149.             else if(id == "hide_subscreen") hide(sub_screen_link_id);
  150.             else llOwnerSay("Debug: unsupported render command passed ["+(string)id+" / "+str+"]");
  151.         }
  152.         else if(num == 0) // system commands
  153.         {
  154.             if(id == "reset") llResetScript();    
  155.         }
  156.     }
  157. }
Add Comment
Please, Sign In to add comment