Tool-Texture cube hollow face

From Second Life Wiki
Revision as of 19:33, 4 January 2010 by BETLOG Hax (talk | contribs) (Created page with '{{LSL Header}} ====Tool-Texture cube hollow face v0.1.0==== --BETLOG Hax GMT+10: 20090210 0222 [SLT: 20090209 0922] A tool for adjusting texture repeats for...')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Tool-Texture cube hollow face v0.1.0

--BETLOG Hax GMT+10: 20090210 0222 [SLT: 20090209 0922]

A tool for adjusting texture repeats for inside (hollow) face of cubes.
I made some attempt to accommodate other prim types, but never actually finished it.

<lsl> //========================================================================= f_setHollowX(float Xrepeats) { list data = llGetPrimitiveParams([PRIM_TYPE]);

   vector cut = llList2Vector(data, 2);
   float hollow = llList2Float(data, 3);
   if (hollow == 0.0)
   {   llOwnerSay("ERROR: not hollow.");
       return;
   }
   if (llList2Integer(data, 0) != PRIM_TYPE_BOX)
   {   llOwnerSay("WARNING: not a box. This is completely UNTESTED");
   }
   integer face = 5;
   if (cut.y - cut.x <= 0.75)  face = 4;
   if (cut.y - cut.x <= 0.5)   face = 3;
   if (cut.y - cut.x <= 0.25)  face = 2;

//llOwnerSay((string)cut+"\t"+(string)face);

   float rpt = Xrepeats/-hollow;
   float ofs = (((Xrepeats/-hollow)+Xrepeats) / 2.0)+(Xrepeats/2.0/Xrepeats);
   if ((ofs > 1.0) ||  (ofs < -1.0))
       ofs -= (float)llFloor(ofs);
   vector o = llGetTextureOffset(face);
   vector r = llGetTextureScale(face);    
   llSetPrimitiveParams([PRIM_TEXTURE, face
       , llGetTexture(face)
       , <rpt, r.y, 0.0>//repeats
       , <ofs, o.y, 0.0>//offsets
       , 0*DEG_TO_RAD
   ]);    

} //====================================================================================== default { on_rez(integer start_param)

   {   llResetScript();
   }
   state_entry()
   {   llOwnerSay(
           "\n Type number of X texture repeats for the hollow face of a cube."
           +"\n Type 'done' to delete script and finish.");
       llListen(0, "", llGetOwner(), "");
   }
   listen(integer channel, string name, key id, string message)
   {   if ((float)message != 0.0)
       {   f_setHollowX((float)message);
       }
       if (llToLower(message) == "done")
       {   llOwnerSay("OK, removing script.");
           llRemoveInventory(llGetScriptName());
       }
   }

} //=========================================================================

</lsl>