Help! Diffrences between PSYS_SRC to PSYS_PART? - SLUniverse Forums
sluniverse logo SLUNIVERSE


Go Back   SLUniverse Forums > Community Discussion > General SL Discussion

General SL Discussion Discuss topics related to Second Life

Reply
Old 08-26-2008, 01:38 AM   #1 (permalink)
Junior Member
 
Join Date: Aug 2008
Posts: 9

Diffrences between PSYS_SRC to PSYS_PART?

Just like the topic says, can anyone tell me what are the diffrences between PSYS_SRC to PSYS_PART? in llParticleSystem.

Thanks in advacne
DeViLiTe is offline   Reply With Quote
Old 08-26-2008, 01:42 AM   #2 (permalink)
Tya
Prim Whore
 
Tya's Avatar
Wears Cherry Chapstick
 
Join Date: Aug 2007
Location: Toronto
Posts: 2,397
SL Join Date: August 2003
Business: Pixel Mode [PM]
Blog Entries: 2
SLShopper Ads: 57

My Mood:

Send a message via Yahoo to Tya
i believe this is about particle pattern

PART being what happens at each "release"

PSYS_SRC - is the pattern at the source...

i think ...
Tya is offline   Reply With Quote
Old 08-26-2008, 01:43 AM   #3 (permalink)
Tya
Prim Whore
 
Tya's Avatar
Wears Cherry Chapstick
 
Join Date: Aug 2007
Location: Toronto
Posts: 2,397
SL Join Date: August 2003
Business: Pixel Mode [PM]
Blog Entries: 2
SLShopper Ads: 57

My Mood:

Send a message via Yahoo to Tya
this should help you. its heavily commented

Quote:
// Particle Script 0.5
// Created by Ama Omega
// 3-26-2004

// Mask Flags - set to TRUE to enable
integer glow = TRUE; // Make the particles glow
integer bounce = FALSE; // Make particles bounce on Z plane of object
integer interpColor = TRUE; // Go from start to end color
integer interpSize = TRUE; // Go from start to end size
integer wind = TRUE; // Particles effected by wind
integer followSource = TRUE; // 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 = "self";

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

// System paramaters
float rate = 1.5; // How fast (rate) to emit particles
float radius = 1; // Radius to emit particles for BURST pattern
integer count = 1; // 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,0>; // Rotation of ANGLE patterns around the source
float life = 0; // Life in seconds for the system to make particles

// Script variables
integer pre = 2; //Adjust the precision of the generated list.

integer flags;
list sys;
integer type;
vector tempVector;
rotation tempRot;
string tempString;
integer i;

string float2String(float in)
{
return llGetSubString((string)in,0,pre - 7);
}

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;
sys = [ 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
];

llParticleSystem(sys);
}

default
{
state_entry()
{
updateParticles();
}

touch_start(integer num)
{
llWhisper(0,"...Generating List...");
for (i=1;i<42;i+=2)
{
type = llGetListEntryType(sys,i);
if(type == TYPE_FLOAT)
{
tempString = float2String(llList2Float(sys,i));
sys = llDeleteSubList(sys,i,i);
sys = llListInsertList(sys,[tempString],i);
}
else if (type == TYPE_VECTOR)
{
tempVector = llList2Vector(sys,i);
tempString = "<" + float2String(tempVector.x) + ","
+ float2String(tempVector.y) + ","
+ float2String(tempVector.z) + ">";
sys = llDeleteSubList(sys,i,i);
sys = llListInsertList(sys,[tempString],i);
}
else if (type == TYPE_ROTATION)
{
tempRot = llList2Rot(sys,i);
tempString = "<" + float2String(tempRot.x) + ","
+ float2String(tempRot.y) + ","
+ float2String(tempRot.z) + ","
+ float2String(tempRot.s) + ">";
sys = llDeleteSubList(sys,i,i);
sys = llListInsertList(sys,[tempString],i);
}
else if (type == TYPE_STRING || type == TYPE_KEY)
{
tempString = """ + llList2String(sys,i) + """;
sys = llDeleteSubList(sys,i,i);
sys = llListInsertList(sys,[tempString],i);
}
}
sys = llListSort(sys,2,TRUE);
if (target == "") sys = llDeleteSubList(sys,38,39);
else if (target == llGetKey() )
sys = llListInsertList(llDeleteSubList(sys,39,39),["llGetKey()"],39);
else if (target == llGetOwner() )
sys = llListInsertList(llDeleteSubList(sys,39,39),["llGetOwner()"],39);
if (texture == "") sys = llDeleteSubList(sys,24,25);
if (!interpSize) sys = llDeleteSubList(sys,12,13);
if (!interpColor) sys = llDeleteSubList(sys,6,7);

llWhisper(0,"[" + llList2CSV(llList2List(sys,0,21)) + ",");
llWhisper(0,llList2CSV(llList2List(sys,22,-1)) + "]");
}
}
Tya is offline   Reply With Quote
Old 08-26-2008, 07:49 AM   #4 (permalink)
is not a french girl
 
Candide LeMay's Avatar
 
Join Date: Sep 2007
Posts: 211

Can anyone also tell the guy the difference between the General forum and the Scripting forum.

Thanks in advacne
Candide LeMay is offline   Reply With Quote
1 User Groaned:
Old 08-26-2008, 07:53 AM   #5 (permalink)
Banned
 
Join Date: Jun 2007
Location: NYC
Posts: 22,229
SL Join Date: 10-11-2004
Business: abstract avatars!
SLShopper Ads: 16

My Mood:

Quote:
Originally Posted by Candide LeMay View Post
Can anyone also tell the guy the difference between the General forum and the Scripting forum.

Thanks in advacne
Okay this is beginning to cross the line.

Quote:
Originally Posted by Joshua Nightshade View Post
Why do you keep being so nasty about it?
Joshua Nightshade is offline   Reply With Quote
Old 08-26-2008, 07:18 PM   #6 (permalink)
posts... sometimes.
 
Shyotl's Avatar
 
Join Date: Nov 2007
Posts: 128
SL Join Date: 06/15/05

Quote:
Originally Posted by Candide LeMay View Post
Can anyone also tell the guy the difference between the General forum and the Scripting forum.

Thanks in advacne
People actually read the former?


Also. PART is short for 'particle', as in single-particle-specific flags fall under it. SRC flags just define 'how' the particle(s) is(are) shot out. PART is how a particle behaves afterwords. That said, some flags are arguably inconsistent with this to a degree, like age and texture, specifically. Regardless they all pretty much serve the same exact purpose, so the distinction between the two types isn't really necessary and is actually nearly a gotcha in it's current state, IMO.

Least, this is how I try to approach the flags.
__________________

Last edited by Shyotl; 08-26-2008 at 07:33 PM.
Shyotl is offline   Reply With Quote
1 User Agreed:
Old 08-26-2008, 07:54 PM   #7 (permalink)
Mad Artist
 
Miriel Enfield's Avatar
Even nerdier than usual.
 
Join Date: Sep 2007
Posts: 991
Business: Miriel
SLShopper Ads: 2

My Mood:

What Shyotl said. (Except for the part about nobody reading the scripting forum. I do!)

I recommend just using this or another wiki as a guide, and not paying too much attention to the naming scheme.
__________________
Miriel: Jewelry, eyes, shapes, and a couple of hairstyles. Oh, and a pretty forest. And a treasure hunt.
3.5 on the Internationally Recognized Trout Recreant Scale of Slutwatoosi.

"Blender is the Pai Mae of 3d programs. It hates newbies, despises windows users, and has nothing but contempt for English speakers. It will let you learn, but mostly because doing so will give Blender a chance to amuse itself by making you suffer."
- Twenty Sided
Miriel Enfield is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


All times are GMT -5. The time now is 12:55 PM.
Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC7
vB.Sponsors Copyright 2008 SLUniverse.com / Hurricane Interactive.
All rights reserved.

Second Life(TM) and Linden Lab(TM) are trademarks or registered trademarks of Linden Research, Inc.
No infringement is intended.