summaryrefslogtreecommitdiff
path: root/src/elements/sprk.c
diff options
context:
space:
mode:
authorjacksonmj <mj-pt@jacksonmj.co.uk>2012-06-28 23:04:46 (GMT)
committer jacksonmj <mj-pt@jacksonmj.co.uk>2012-06-28 23:04:46 (GMT)
commit966f1dcc235d65943d14e2a99058de709a15659a (patch)
tree443e006634ed5f5065661b9257ecdc9ad0d8e6ef /src/elements/sprk.c
parent167740e83926c233b108ada9ca770f6adaf312dd (diff)
downloadpowder-966f1dcc235d65943d14e2a99058de709a15659a.zip
powder-966f1dcc235d65943d14e2a99058de709a15659a.tar.gz
Use atan2 for LIGH angle calculations
atan2 gives the actual angle (in the range -pi to pi). acos and asin just give the principal value (in the range 0 to pi, or -pi/2 to pi/2)
Diffstat (limited to 'src/elements/sprk.c')
-rw-r--r--src/elements/sprk.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/elements/sprk.c b/src/elements/sprk.c
index 11a12ad..4f95565 100644
--- a/src/elements/sprk.c
+++ b/src/elements/sprk.c
@@ -78,19 +78,17 @@ int update_SPRK(UPDATE_FUNC_ARGS) {
r = pmap[y+ry][x+rx];
if (r)
continue;
- if (rand()%(parts[i].tmp*parts[i].tmp/20+6)==0)
+ if (parts[i].tmp>4 && rand()%(parts[i].tmp*parts[i].tmp/20+6)==0)
{
int p=create_part(-1, x+rx*2, y+ry*2, PT_LIGH);
if (p!=-1)
{
- if(parts[i].tmp<=4) //Prevent Arithmetic errors with zero values
- continue;
parts[p].life=rand()%(2+parts[i].tmp/15)+parts[i].tmp/7;
if (parts[i].life>60)
parts[i].life=60;
parts[p].temp=parts[p].life*parts[i].tmp/2.5;
parts[p].tmp2=1;
- parts[p].tmp=acos(1.0*rx/sqrt(rx*rx+ry*ry))/M_PI*360;
+ parts[p].tmp=atan2(-ry, rx)/M_PI*360;
parts[i].temp-=parts[i].tmp*2+parts[i].temp/5; // slight self-cooling
if (fabs(pv[y/CELL][x/CELL])!=0.0f)
{