diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2017-04-26 16:02:30 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2017-04-26 16:02:30 -0700 |
commit | 9f499b0590b1a7d56c36ec5d093e82795c3aba19 (patch) | |
tree | 165f984ea248580a767a245a1fe5bde528375a59 /src/modules/sparkler/burst.c | |
parent | 9acecdfdd43c0eca5e7d0ec22aaf3ac51b94a7c2 (diff) |
sparkler: add virtual flag to particle_props_t
The burst particle abused a zero mass to circumvent the effects of aging.
Instead use an explicit virtual flag to suppress aging, change busrt_cb
to ignore all virtual particles instead of only its center. Previously
burst_cb would thrust other bursts like any other particle, and this was
incorrect. Now burst centers are always stationary, even when they overlap
other bursts.
Diffstat (limited to 'src/modules/sparkler/burst.c')
-rw-r--r-- | src/modules/sparkler/burst.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/modules/sparkler/burst.c b/src/modules/sparkler/burst.c index 828ca02..72cde03 100644 --- a/src/modules/sparkler/burst.c +++ b/src/modules/sparkler/burst.c @@ -23,8 +23,7 @@ static int burst_init(particles_t *particles, particle_t *p) burst_ctxt_t *ctxt = p->ctxt; ctxt->longevity = ctxt->lifetime = BURST_MAX_LIFETIME; - p->props->velocity = 0; /* burst should be stationary */ - p->props->mass = 0; /* no mass prevents gravity's effects */ + p->props->virtual = 1; return 1; } @@ -66,8 +65,8 @@ static void burst_cb(bsp_t *bsp, list_head_t *occupants, void *_s) particle_t *p = container_of(o, particle_t, occupant); float d_sq; - if (p == s->center) { - /* leave ourselves alone */ + if (p->props->virtual) { + /* don't move virtual particles (includes ourself) */ continue; } |