Curtain script
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
About this script:
Drop this script into the prim you want to use as a curtain etc. The script will change the length of the prim on one or more axes. Use sliced or path-cut prims to keep an edge stationary, e.g. in a blind. For a Mesh prim, arrange for the pivot point to be on one edge.
You can use these scripts with any prim type.
<lsl> // Prim Resizer (shrink/expand) by Omei Qunhua // e.g. Roll a blind from the top. (use a prim with slice end = 50%)
// Note: This script can rescale a prim on any or all axes
// Define the large and small sizes of the prim here:- // (if the prim is sliced or path cut, it will appear to be half size on the affected dimension) vector ScaleLarge = <0.1, 3.0, 6.0>; vector ScaleSmall = <0.1, 3.0, 1.2>;
integer gSteps = 20; // Number of steps in the shrink/expand process float gSwitch = 1.0; // Action on first touch. +1.0 = shrink, -1.0 = expand
default {
state_entry() {
llSetScale(ScaleLarge);
}
on_rez(integer x) {
llResetScript();
}
touch_start(integer total_number) {
vector ScaleStep = (ScaleLarge - ScaleSmall) / gSteps; // Compute the scale augment per step vector wscale = llGetScale(); gSwitch *= -1; // Switch between stretch and contract integer i; for (i = 0; i < gSteps; i++) { // It is more lag-friendly to incorporate a sleep per step // Rather than greatly increasing the number of steps llSleep(0.1); llSetScale(wscale + ScaleStep * i * gSwitch); }
}
}
</lsl>