Cool VL Viewer forum

View unanswered posts | View active topics It is currently 2024-04-18 19:15:41



Reply to topic  [ 6 posts ] 
Particle & HUD sorting bug for Rightclick-on-HUD 
Author Message

Joined: 2012-02-09 21:01:50
Posts: 284
Reply with quote
Hello,

Cool VL Viewer 1.26.12 (33) Feb 28 2015 09:48:42 (Cool VL Viewer)

I have some item that creates particle rain. The strange thing is, that the sorting of HUD elements and those particles seems to be off... not on the display... HUDs are still on top of these particles.

But when I try to click a HUD element while having the camera inside this 'rain', I get a radial menu with greyed out "mute object" and "mute owner" entries only. Greyed out probably because the object is mine.

If I cam back, getting the camera outside of the rain, I can click the HUD elements without a problem.

Simple to reproduce:

1. Create a prim,
2. Add a new script:

Code:
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//// eltee Statosky's Particle Creation Engine 1.0
//// 01/09/2004
//// *PUBLIC DOMAIN*
//// Free to use
//// Free to copy
//// Free to poke at
//// Free to hide in stuff you sell
//// Just please leave this header intact
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////

integer effectFlags=0;
integer running=TRUE;


///////////////////////////////////////////////////////
// Color Secelection Variables
///////////////////////////////////////////////////////
// Interpolate between startColor and endColor
integer colorInterpolation  = TRUE;
// Starting color for each particle
vector  startColor          = <1.0, 1.0, 1.0>;
// Ending color for each particle
vector  endColor            = <1.0, 1.0, 1.0>;
// Starting Transparency for each particle (1.0 is solid)
float   startAlpha          = 0.1;
// Ending Transparency for each particle (0.0 is invisible)
float   endAlpha            = 0.1;
// Enables Absolute color (true) ambient lighting (false)
integer glowEffect          = FALSE;


///////////////////////////////////////////////////////
// Size & Shape Selection Variables
///////////////////////////////////////////////////////
// Interpolate between startSize and endSize
integer sizeInterpolation   = TRUE;
// Starting size of each particle
vector  startSize           = <1.5,3,3.0>;
// Ending size of each particle
vector  endSize             = <1,2,1.0>;
// Turns particles to face their movement direction
integer followVelocity      = TRUE;
// Texture the particles will use ("" for default)
string  texture             = "raindrop";


///////////////////////////////////////////////////////
// Timing & Creation Variables Variables
///////////////////////////////////////////////////////
// Lifetime of one particle (seconds)
float   particleLife        = 4;
// Lifetime of the system 0.0 for no time out (seconds)
float   SystemLife          = 0.0;
// Number of seconds between particle emissions
float   emissionRate        =.1;
// Number of particles to releast on each emission
integer partPerEmission     = 25;


///////////////////////////////////////////////////////
// Angular Variables
///////////////////////////////////////////////////////
// The radius used to spawn angular particle patterns
float   radius              = 4.0;
// Inside angle for angular particle patterns
float   innerAngle          = .9;
// Outside angle for angular particle patterns
float   outerAngle          =.1;
// Rotational potential of the inner/outer angle
vector  omega               = <00.0, 00.0, 0.0>;


///////////////////////////////////////////////////////
// Movement & Speed Variables
///////////////////////////////////////////////////////
// The minimum speed a particle will be moving on creation
float   minSpeed            = 0.6;
// The maximum speed a particle will be moving on creation
float   maxSpeed            = 0.6;
// Global acceleration applied to all particles
vector  acceleration        = <0.0, 0.0, -1.3>;
// If true, particles will be blown by the current wind
integer windEffect          = FALSE;
// if true, particles 'bounce' off of the object's Z height
integer bounceEffect        = FALSE;
// If true, particles spawn at the container object center
integer followSource        = FALSE;
// If true, particles will move to expire at the target
//integer followTarget        = TRUE;
// Desired target for the particles (any valid object/av key)
// target Needs to be set at runtime
key     target              = "";


///////////////////////////////////////////////////////
//As yet unimplemented particle system flags
///////////////////////////////////////////////////////
integer randomAcceleration  = FALSE;
integer randomVelocity      = FALSE;
integer particleTrails      = FALSE;

///////////////////////////////////////////////////////
// Pattern Selection
///////////////////////////////////////////////////////
//   Uncomment the pattern call you would like to use
//   Drop parcles at the container objects' center
//integer pattern = PSYS_SRC_PATTERN_DROP;
//   Burst pattern originating at objects' center
integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE;
//   Uses 2D angle between innerAngle and outerAngle
//integer pattern = PSYS_SRC_PATTERN_ANGLE;
//  Uses 3D cone spread between innerAngle and outerAngle
//integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE;
//
//integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY;



setParticles()
{
// Here is where to set the current target
// llGetKey() targets this script's container object
// llGetOwner() targets the owner of this script
// Feel free to insert any other valid key
    target="";
// The following block of if statements is used to construct the mask
    if (colorInterpolation) effectFlags = effectFlags|PSYS_PART_INTERP_COLOR_MASK;
    if (sizeInterpolation)  effectFlags = effectFlags|PSYS_PART_INTERP_SCALE_MASK;
    if (windEffect)         effectFlags = effectFlags|PSYS_PART_WIND_MASK;
    if (bounceEffect)       effectFlags = effectFlags|PSYS_PART_BOUNCE_MASK;
    if (followSource)       effectFlags = effectFlags|PSYS_PART_FOLLOW_SRC_MASK;
    if (followVelocity)     effectFlags = effectFlags|PSYS_PART_FOLLOW_VELOCITY_MASK;
    if (target!="")       effectFlags = effectFlags|PSYS_PART_TARGET_POS_MASK;
    if (glowEffect)         effectFlags = effectFlags|PSYS_PART_EMISSIVE_MASK;
//Uncomment the following selections once they've been implemented
//    if (randomAcceleration) effectFlags = effectFlags|PSYS_PART_RANDOM_ACCEL_MASK;
//    if (randomVelocity)     effectFlags = effectFlags|PSYS_PART_RANDOM_VEL_MASK;
//    if (particleTrails)     effectFlags = effectFlags|PSYS_PART_TRAIL_MASK;
    llParticleSystem([
        PSYS_PART_FLAGS,            effectFlags,
        PSYS_SRC_PATTERN,           pattern,
        PSYS_PART_START_COLOR,      startColor,
        PSYS_PART_END_COLOR,        endColor,
        PSYS_PART_START_ALPHA,      startAlpha,
        PSYS_PART_END_ALPHA,        endAlpha,
        PSYS_PART_START_SCALE,      startSize,
        PSYS_PART_END_SCALE,        endSize,   
        PSYS_PART_MAX_AGE,          particleLife,
        PSYS_SRC_ACCEL,             acceleration,
        PSYS_SRC_TEXTURE,           texture,
        PSYS_SRC_BURST_RATE,        emissionRate,
        PSYS_SRC_INNERANGLE,        innerAngle,
        PSYS_SRC_OUTERANGLE,        outerAngle,
        PSYS_SRC_BURST_PART_COUNT,  partPerEmission,     
        PSYS_SRC_BURST_RADIUS,      radius,
        PSYS_SRC_BURST_SPEED_MIN,   minSpeed,
        PSYS_SRC_BURST_SPEED_MAX,   maxSpeed,
        PSYS_SRC_MAX_AGE,           SystemLife,
        PSYS_SRC_TARGET_KEY,        target,
        PSYS_SRC_OMEGA,             omega   ]);
}

default
{
    state_entry()
    {
        running=TRUE;
        llSetText("", <0.0, 1.0, 0.0>, 0.5);
        setParticles();
    }
   
    touch_start(integer num_detected)
    {
        if (running==TRUE)
        {
            running=FALSE;
            llSetText("Stopped", <1.0, 0.0, 0.0>, 0.5);
            llParticleSystem([]);
        }
        else
        {
            running=TRUE;
            llSetText("", <0.0, 1.0, 0.0>, 0.5);
            setParticles();
        }
    }
}


3. Wear a HUD prim
4. Cam in closely to the prim creating the snow.

Result: Quite often you don't get a proper radial menu with all the entries when clicking the HUD, except you cam out again.


2015-03-02 18:05:41
Profile

Joined: 2009-03-17 18:42:51
Posts: 5546
Reply with quote
I'll have a look. In the mean time, the work around is to disable the "Tools" -> "Pick Particles" feature.


2015-03-02 20:08:54
Profile WWW

Joined: 2012-02-09 21:01:50
Posts: 284
Reply with quote
:-o What is this "Pick Particle" magic... ok then, nothing to do for you then, I can just disable this. Is this on by default?


2015-03-02 21:17:17
Profile

Joined: 2009-03-17 18:42:51
Posts: 5546
Reply with quote
Tillie wrote:
:-o What is this "Pick Particle" magic...
It's the particle mute feature that I backported from LL's viewer when they implemented it, months ago...
Quote:
ok then, nothing to do for you then,
Yes, there is... That's a right-click pick order issue: the HUD should still be prioritary over the particles since the particles are rendered behind the HUD...
Quote:
I can just disable this. Is this on by default?
Yes, and yes.


2015-03-02 21:41:57
Profile WWW

Joined: 2009-03-17 18:42:51
Posts: 5546
Reply with quote
Bug fixed for next releases.


2015-03-02 23:39:56
Profile WWW

Joined: 2012-02-09 21:01:50
Posts: 284
Reply with quote
You find and fix like everything, yay! :D


2015-03-03 12:25:53
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 6 posts ] 

Who is online

Users browsing this forum: No registered users and 16 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.