Difference between revisions of "FastConeSpread"

From Second Life Wiki
Jump to navigation Jump to search
m
m (added example and removed a single instruction/bug)
Line 14: Line 14:
     touch_start( integer d ){
     touch_start( integer d ){
         float x = (llFrand(1)-0.5)*PI;
         float x = (llFrand(1)-0.5)*PI;
         float y = (llFrand(1)-0.5)*Spread;
         float y = llFrand(0.5)*Spread;
          
          
         rotation rSpread = <0,llSin(y),0,llCos(y)> * <llSin(x),0,0,llCos(x)>;
         rotation rSpread = <0,llSin(y),0,llCos(y)> * <llSin(x),0,0,llCos(x)>;
         llSetRot( rSpread );
         llSetRot( rSpread );
        // Example with rezzing a bullet:
        // rSpread *= llGetRot();
        // llRezObject("b",llGetPos()+llRot2Fwd(rSpread), <60,0,0>*rSpread, rSpread, 1 );
     }
     }
}
}

Revision as of 10:59, 1 March 2010

<lsl> // 2009, Nexii Malthus // Public Domain

float Spread = 15.0;

default{

   state_entry(){
       Spread *= DEG_TO_RAD;
   }
   
   touch_start( integer d ){
       float x = (llFrand(1)-0.5)*PI;
       float y = llFrand(0.5)*Spread;
       
       rotation rSpread = <0,llSin(y),0,llCos(y)> * <llSin(x),0,0,llCos(x)>;
       llSetRot( rSpread );
       // Example with rezzing a bullet:
       // rSpread *= llGetRot();
       // llRezObject("b",llGetPos()+llRot2Fwd(rSpread), <60,0,0>*rSpread, rSpread, 1 );
   }

} </lsl>

<lsl> // 2008-2009, Aeron Kohime // Licensed under the Creative Commons Attribution 3.0 License // http://creativecommons.org/licenses/by/3.0/

float spread = 15.0;

default{

   state_entry(){
       spread *= DEG_TO_RAD;
   }
   
   touch_start( integer d ){
       float y = spread*(llFrand(1)-0.5);
       float z = spread*(llFrand(1)-0.5);
       rotation rSpread = llEuler2Rot(<0,y,z>);
       llSetRot( rSpread );
   }

} </lsl>