Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Help with particle script, please

Satai Diaz
Humble Bounty Hunter
Join date: 9 Aug 2003
Posts: 133
07-19-2005 18:54
I have the regular particle script and I have modified it like so:

CODE

// Particle Script 0.3
// Created by Ama Omega
// 10-10-2003

// Mask Flags - set to TRUE to enable
integer glow = TRUE; // Make the particles glow
integer bounce = TRUE; // Make particles bounce on Z plan of object
integer interpColor = TRUE; // Go from start to end color
integer interpSize = TRUE; // Go from start to end size
integer wind = FALSE; // Particles effected by wind
integer followSource = FALSE; // Particles follow the source
integer followVel = TRUE; // Particles turn to velocity direction

// Choose a pattern from the following:
// PSYS_SRC_PATTERN_EXPLODE
// PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE
integer pattern = PSYS_SRC_PATTERN_EXPLODE;

// Select a target for particles to go towards
// "" for no target, "owner" will follow object owner
// and "self" will target this object
// or put the key of an object for particles to go to
key target = "";

// Particle paramaters
float age = 5; // Life of each particle
float maxSpeed = .9; // Max speed each particle is spit out at
float minSpeed = .9; // Min speed each particle is spit out at
string texture; // Texture used for particles, default used if blank
float startAlpha = 10; // Start alpha (transparency) value
float endAlpha = 10; // End alpha (transparency) value
vector startColor = <1,0,0>; // Start color of particles <R,G,B>
vector endColor = <0.95,0.51,0.04>; // End color of particles <R,G,B> (if interpColor == TRUE)
vector startSize = <.5,.25,.5>; // Start size of particles
vector endSize = <.01,.25,.5>; // End size of particles (if interpSize == TRUE)
vector push = <0,0,-5>; // Force pushed on particles

// System paramaters
float rate = .2; // How fast (rate) to emit particles
float radius = 0.2; // Radius to emit particles for BURST pattern
integer count = 200; // How many particles to emit per BURST
float outerAngle = 1.54; // Outer angle for all ANGLE patterns
float innerAngle = 1.55; // Inner angle for all ANGLE patterns
vector omega = <0,0,10>; // Rotation of ANGLE patterns around the source
float life = 300; // Life in seconds for the system to make particles

// Script variables
integer 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_INNERANGLE,innerAngle,
PSYS_SRC_OUTERANGLE,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()
{
updateParticles();
}
}


However I was wondering if there was a way, instead of the particles bouncing off the z-plane of the object they would bounce off the ground instead? Maybe a way to do a key target that is ground or something like that.

Any thoughts? Thank you.
_____________________
Satai Diaz
Owner of SD Designs
DJ for Crystal Blue @ Cafe Hailey
Producer of Digital Paradise Studios & Cinema
Admiral of Kazenojin
Owner of SLRA
Eloise Pasteur
Curious Individual
Join date: 14 Jul 2004
Posts: 1,952
07-20-2005 03:04
I've not come across a coding way to do within particle scripts, although one of the people that has played with particles more might be able to help. You can force the object that makes the particles be at ground height which would appeat to do that:

http://secondlife.com/badgeo/wakka.php?wakka=llGround
http://secondlife.com/badgeo/wakka.php?wakka=llSetPos

might help.
Pixel Ennui
Registered User
Join date: 6 Jun 2005
Posts: 2
some idle ponderings
07-21-2005 07:30
the above suggestion is good unless you have slanty ground - maybe get the angle of the ground then and rotate the emitter prim accordingly.

better still if instead of 1 emitter you have a bunch - the ground nearby may not just be a linear slope, but a small hill or dimple with multiple slopes, in which case a number of slightly overlapping rotated emitters would do ... something.

=me=