Script de base pour particules PDF Imprimer Envoyer
Technique - Scripts
Écrit par ssm2017   
Mardi, 01 Janvier 2008 02:51
Ce script est ma base de depart pour faire des particules.
Il est pas mal pour commencer a voir comment ca fonctionne.
 
// particles vars
integer glow;
integer bounce;
integer interpColor;
integer interpSize;
integer wind;
integer followSource;
integer followVel;
integer pattern;
key target;
float age;
float maxSpeed;
float minSpeed;
string texture;
float startAlpha;
float endAlpha;
vector startColor;
vector endColor;
vector startSize;
vector endSize;
vector push;
float rate;
float radius;
integer count;
float outerAngle;
float innerAngle;
vector omega;
float life;
integer flags;
//^particles initialisation 
start()
{
    glow = TRUE;
    bounce = FALSE; 
    interpColor = TRUE; 
    interpSize = TRUE; 
    wind = FALSE;
    followSource = FALSE;
    followVel = FALSE;
    target = "";
    texture = "5e452db4-3ebc-72e9-667d-1bd2592a0afb";
    pattern = PSYS_SRC_PATTERN_EXPLODE;
    startColor = <1.0,0.,0.>;
    endColor = <1.0,1.0,0.>;
    startSize = <1.,1.,1.>; 
    endSize = <.1,.1,.1>;
    startAlpha = 1.;
    endAlpha = 1.;
    age = 1; 
    minSpeed = 1.; 
    maxSpeed = 1.; 
    push = <0,0,-0.03>;
    rate = .01; 
    radius = 1; 
    count = 1; 
    outerAngle = 0 * DEG_TO_RAD; 
    innerAngle = 0 * DEG_TO_RAD;
    omega = <0,0,10>; 
    life = 0;
    flags;
}
updateParticles()
{
    flags = 0; 
    if (target == "owner") target = llGetOwner();
    if (target == "self") target = llGetKey();
    if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
    if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
    if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
    if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
    if (wind) flags = flags | PSYS_PART_WIND_MASK;
    if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
    if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
    if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
    llParticleSystem([
        PSYS_PART_MAX_AGE, age,
        PSYS_PART_FLAGS, flags, 
        PSYS_PART_START_COLOR, startColor,
        PSYS_PART_END_COLOR, endColor, 
        PSYS_PART_START_SCALE, startSize,
        PSYS_PART_END_SCALE, endSize,
        PSYS_SRC_PATTERN, pattern,
        PSYS_SRC_BURST_RATE,rate, 
        PSYS_SRC_ACCEL, push, 
        PSYS_SRC_BURST_PART_COUNT,count,
        PSYS_SRC_BURST_RADIUS,radius,
        PSYS_SRC_BURST_SPEED_MIN,minSpeed,
        PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
        PSYS_SRC_TARGET_KEY,target,
        PSYS_SRC_ANGLE_BEGIN,innerAngle,
        PSYS_SRC_ANGLE_END,outerAngle,
        PSYS_SRC_OMEGA, omega,
        PSYS_SRC_MAX_AGE, life,
        PSYS_SRC_TEXTURE, texture, 
        PSYS_PART_START_ALPHA, startAlpha,
        PSYS_PART_END_ALPHA, endAlpha
    ]);
}
default
{
    state_entry()
    {
        start();
        updateParticles();
    }
}