Rounded Particle Garden v0.2

De DigiWiki.

  • Créer un prim avec une rotation de 90° sur l'axe X
  • Mettre le script et quelques textures dans l'inventaire du prim
// Rounded Particle Garden v0.2
 
float MAX_RADIUS = 3;
float RADIUS_INTERVAL = 0.5;
integer IS_ON = FALSE;
float RADIUS = 2;
string TEXTURE = "TEXTURE_UUID";
 
garden()
{
    llParticleSystem ([
        PSYS_PART_FLAGS, 0 |
        PSYS_PART_EMISSIVE_MASK |
        PSYS_PART_INTERP_COLOR_MASK |
        PSYS_PART_INTERP_SCALE_MASK,
        PSYS_SRC_PATTERN,
        PSYS_SRC_PATTERN_ANGLE_CONE,
 
        // Texture / Size / Alpha / Color
        PSYS_SRC_TEXTURE, TEXTURE,
        PSYS_PART_START_SCALE, <0.2, 0.2, 0>,
        PSYS_PART_END_SCALE, <0.5, 0.5, 0>,
        PSYS_PART_START_ALPHA, 0,
        PSYS_PART_END_ALPHA, 1,
        PSYS_PART_START_COLOR, <1,1,1>,
        PSYS_PART_END_COLOR, <1,1,1>,    
 
        // Flow
        PSYS_PART_MAX_AGE, 100.0,
        PSYS_SRC_BURST_RATE, 1,
        PSYS_SRC_BURST_PART_COUNT, 1,
        PSYS_SRC_MAX_AGE, 0,
 
        // Rez position
        PSYS_SRC_BURST_RADIUS, RADIUS,
        PSYS_SRC_INNERANGLE, PI_BY_TWO,
        PSYS_SRC_OUTERANGLE, PI_BY_TWO,
        PSYS_SRC_OMEGA, <0,0,0>,        
        PSYS_SRC_BURST_SPEED_MIN, 0,
        PSYS_SRC_BURST_SPEED_MAX, 0]);
}
 
stop() {llParticleSystem([]);}
 
default
{
    state_entry()
    {
        if(IS_ON)
        {
            llSetTimerEvent(RADIUS_INTERVAL);
            garden();
        }
 
        else {stop();}
    }
 
    touch_start(integer num_detected)
    {
        if(IS_ON)
        {
            llSetTimerEvent(0.0);
            stop();
            llWhisper(0, "Le jardin est stoppé");
        }
 
        else
        {
            llSetTimerEvent(RADIUS_INTERVAL);
            garden();
            llWhisper(0, "Le jardin est démarré");
        }
        IS_ON = !IS_ON;
    }
 
    timer()
    {
        integer max_inventory = llGetInventoryNumber(INVENTORY_TEXTURE);
 
        if(max_inventory > 0)
        {
            TEXTURE = llGetInventoryName(INVENTORY_TEXTURE, (integer)llFrand(max_inventory));
        }
        RADIUS = llFrand(MAX_RADIUS);
        garden();
    }
    changed(integer change) {if (change & CHANGED_INVENTORY) {llResetScript();}}
}
Outils personnels
  • Cette page a été consultée 513 fois.
donate
Google Ads