Difference between revisions of "FastConeSpread"

From Second Life Wiki
Jump to navigation Jump to search
m (<lsl> tag to <source>)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{LSL Header}}
{{LSL Header}}


<lsl>
<source lang="lsl2">
// 2008, Nexii Malthus
// 2009, Nexii Malthus
// Licensed under the Creative Commons Attribution-Share Alike 3.0 License
// Public Domain
// http://creativecommons.org/licenses/by-sa/3.0/


float Spread = 15.0;
float Spread = 15.0;
Line 15: 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 );
     }
     }
}
}
</lsl>
</source>
 
<source lang="lsl2">
// 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 );
    }
}
</source>

Latest revision as of 19:18, 24 January 2015

// 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 );
    }
}
// 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 );
    }
}