summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjacksonmj <mj-pt@jacksonmj.co.uk>2012-02-19 00:49:04 (GMT)
committer jacksonmj <mj-pt@jacksonmj.co.uk>2012-02-19 00:49:04 (GMT)
commit3702438482785414076689bfb3b8ceeaaa1fbc3a (patch)
tree82a9ab9cada609b5d29b3fb3e3b14e462f765a25
parentc960c29f7264b2a56b7aec97a1777915c8207d72 (diff)
downloadpowder-3702438482785414076689bfb3b8ceeaaa1fbc3a.zip
powder-3702438482785414076689bfb3b8ceeaaa1fbc3a.tar.gz
Prevent gaps in beams of photons from powered clone
-rw-r--r--includes/powder.h1
-rw-r--r--src/elements/pbcn.c5
-rw-r--r--src/elements/pcln.c5
-rw-r--r--src/powder.c6
4 files changed, 17 insertions, 0 deletions
diff --git a/includes/powder.h b/includes/powder.h
index f198ad7..3330bb3 100644
--- a/includes/powder.h
+++ b/includes/powder.h
@@ -249,6 +249,7 @@
#define PROP_SPARKSETTLE 0x20000 //2^17 Allow Sparks/Embers to settle
#define FLAG_STAGNANT 1
+#define FLAG_SKIPMOVE 0x2 // skip movement for one frame, only implemented for PHOT
#define GRAPHICS_FUNC_ARGS particle *cpart, int nx, int ny, int *pixel_mode, int* cola, int *colr, int *colg, int *colb, int *firea, int *firer, int *fireg, int *fireb
#define GRAPHICS_FUNC_SUBCALL_ARGS cpart, nx, ny, pixel_mode, cola, colr, colg, colb, firea, firer, fireg, fireb
diff --git a/src/elements/pbcn.c b/src/elements/pbcn.c
index 5fb361c..f8424fe 100644
--- a/src/elements/pbcn.c
+++ b/src/elements/pbcn.c
@@ -69,6 +69,11 @@ int update_PBCN(UPDATE_FUNC_ARGS) {
{
parts[r].vx = rx*3;
parts[r].vy = ry*3;
+ if (r>i)
+ {
+ // Make sure movement doesn't happen until next frame, to avoid gaps in the beams of photons produced
+ parts[r].flags |= FLAG_SKIPMOVE;
+ }
}
}
}
diff --git a/src/elements/pcln.c b/src/elements/pcln.c
index 1972632..924ce7a 100644
--- a/src/elements/pcln.c
+++ b/src/elements/pcln.c
@@ -59,6 +59,11 @@ int update_PCLN(UPDATE_FUNC_ARGS) {
{
parts[r].vx = rx*3;
parts[r].vy = ry*3;
+ if (r>i)
+ {
+ // Make sure movement doesn't happen until next frame, to avoid gaps in the beams of photons produced
+ parts[r].flags |= FLAG_SKIPMOVE;
+ }
}
}
}
diff --git a/src/powder.c b/src/powder.c
index 2f42759..c869e59 100644
--- a/src/powder.c
+++ b/src/powder.c
@@ -2214,6 +2214,12 @@ killed:
if ((t==PT_PHOT||t==PT_NEUT||t==PT_ELEC)) {
if (t == PT_PHOT) {
+ if (parts[i].flags&FLAG_SKIPMOVE)
+ {
+ parts[i].flags &= ~FLAG_SKIPMOVE;
+ continue;
+ }
+
rt = pmap[fin_y][fin_x] & 0xFF;
lt = pmap[y][x] & 0xFF;