summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjacksonmj <mj-pt@jacksonmj.co.uk>2011-12-10 16:11:03 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-12-18 14:04:47 (GMT)
commitc819e2655e41363d0d416d478abe2804d40c1a95 (patch)
tree4889d45b1010351687c568d23ecc93a744c1f692 /src
parent934d1da66eb5aec49769feaf00d0949f805fd3d5 (diff)
downloadpowder-c819e2655e41363d0d416d478abe2804d40c1a95.zip
powder-c819e2655e41363d0d416d478abe2804d40c1a95.tar.gz
Fix some gravity memsets, remove gravx/y
Diffstat (limited to 'src')
-rw-r--r--src/gravity.c29
-rw-r--r--src/luaconsole.c25
-rw-r--r--src/main.c6
3 files changed, 29 insertions, 31 deletions
diff --git a/src/gravity.c b/src/gravity.c
index 57cce71..d7131a5 100644
--- a/src/gravity.c
+++ b/src/gravity.c
@@ -10,9 +10,6 @@
float gravmap[YRES/CELL][XRES/CELL]; //Maps to be used by the main thread
-float gravx[YRES/CELL][XRES/CELL];
-float gravy[YRES/CELL][XRES/CELL];
-float gravp[YRES/CELL][XRES/CELL];
float *gravpf;
float *gravyf;
float *gravxf;
@@ -91,9 +88,6 @@ void gravity_update_async()
if(result) //Did the gravity thread finish?
{
memcpy(th_gravmap, gravmap, sizeof(gravmap)); //Move our current gravmap to be processed other thread
- //memcpy(gravy, th_gravy, sizeof(gravy)); //Hmm, Gravy
- //memcpy(gravx, th_gravx, sizeof(gravx)); //Move the processed velocity maps to be used
- //memcpy(gravp, th_gravp, sizeof(gravp));
if (!sys_pause||framerender){ //Only update if not paused
//Switch the full size gravmaps, we don't really need the two above any more
@@ -116,8 +110,9 @@ void gravity_update_async()
}
pthread_mutex_unlock(&gravmutex);
//Apply the gravity mask
- membwand(gravy, gravmask, sizeof(gravy), sizeof(gravmask));
- membwand(gravx, gravmask, sizeof(gravx), sizeof(gravmask));
+ //TODO: doesn't work at the moment, gravx and gravy aren't used any more
+ //membwand(gravy, gravmask, sizeof(gravy), sizeof(gravmask));
+ //membwand(gravx, gravmask, sizeof(gravx), sizeof(gravmask));
}
}
@@ -129,6 +124,9 @@ void* update_grav_async(void* unused)
memset(th_gravmap, 0, sizeof(th_gravmap));
memset(th_gravy, 0, sizeof(th_gravy));
memset(th_gravx, 0, sizeof(th_gravx));
+ memset(th_gravyf, 0, XRES*YRES*sizeof(float));
+ memset(th_gravxf, 0, XRES*YRES*sizeof(float));
+ memset(th_gravpf, 0, XRES*YRES*sizeof(float));
#ifdef GRAVFFT
grav_fft_init();
#endif
@@ -165,9 +163,9 @@ void start_grav_async()
pthread_create(&gravthread, NULL, update_grav_async, NULL); //Start asynchronous gravity simulation
ngrav_enable = 1;
}
- memset(gravyf, 0, sizeof(gravyf));
- memset(gravxf, 0, sizeof(gravxf));
- memset(gravpf, 0, sizeof(gravpf));
+ memset(gravyf, 0, XRES*YRES*sizeof(float));
+ memset(gravxf, 0, XRES*YRES*sizeof(float));
+ memset(gravpf, 0, XRES*YRES*sizeof(float));
}
void stop_grav_async()
@@ -179,13 +177,12 @@ void stop_grav_async()
pthread_mutex_unlock(&gravmutex);
pthread_join(gravthread, NULL);
pthread_mutex_destroy(&gravmutex); //Destroy the mutex
- memset(gravy, 0, sizeof(gravy)); //Clear the grav velocities
- memset(gravx, 0, sizeof(gravx)); //Clear the grav velocities
ngrav_enable = 0;
}
- memset(gravyf, 0, sizeof(gravyf));
- memset(gravxf, 0, sizeof(gravxf));
- memset(gravpf, 0, sizeof(gravpf));
+ //Clear the grav velocities
+ memset(gravyf, 0, XRES*YRES*sizeof(float));
+ memset(gravxf, 0, XRES*YRES*sizeof(float));
+ memset(gravpf, 0, XRES*YRES*sizeof(float));
}
#ifdef GRAVFFT
diff --git a/src/luaconsole.c b/src/luaconsole.c
index 9482e7d..7cbbfa1 100644
--- a/src/luaconsole.c
+++ b/src/luaconsole.c
@@ -462,21 +462,22 @@ int luatpt_reset_gravity_field(lua_State* l)
int x1, y1, width, height;
x1 = abs(luaL_optint(l, 1, 0));
y1 = abs(luaL_optint(l, 2, 0));
- width = abs(luaL_optint(l, 3, XRES/CELL));
- height = abs(luaL_optint(l, 4, YRES/CELL));
- if(x1 > (XRES/CELL)-1)
- x1 = (XRES/CELL)-1;
- if(y1 > (YRES/CELL)-1)
- y1 = (YRES/CELL)-1;
- if(x1+width > (XRES/CELL)-1)
- width = (XRES/CELL)-x1;
- if(y1+height > (YRES/CELL)-1)
- height = (YRES/CELL)-y1;
+ width = abs(luaL_optint(l, 3, XRES));
+ height = abs(luaL_optint(l, 4, YRES));
+ if(x1 > XRES-1)
+ x1 = XRES-1;
+ if(y1 > YRES-1)
+ y1 = YRES-1;
+ if(x1+width > XRES-1)
+ width = XRES-x1;
+ if(y1+height > YRES-1)
+ height = YRES-y1;
for (nx = x1; nx<x1+width; nx++)
for (ny = y1; ny<y1+height; ny++)
{
- gravx[ny][nx] = 0;
- gravy[ny][nx] = 0;
+ gravxf[ny*XRES+nx] = 0;
+ gravyf[ny*XRES+nx] = 0;
+ gravpf[ny*XRES+nx] = 0;
}
return 0;
}
diff --git a/src/main.c b/src/main.c
index ee62b26..58c2a1a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1151,14 +1151,14 @@ void clear_sim(void)
memset(fire_g, 0, sizeof(fire_g));
memset(fire_b, 0, sizeof(fire_b));
memset(gravmask, 0xFF, sizeof(gravmask));
- memset(gravy, 0, sizeof(gravy));
- memset(gravx, 0, sizeof(gravx));
+ memset(gravyf, 0, XRES*YRES*sizeof(float));
+ memset(gravxf, 0, XRES*YRES*sizeof(float));
+ memset(gravpf, 0, XRES*YRES*sizeof(float));
for(x = 0; x < XRES/CELL; x++){
for(y = 0; y < YRES/CELL; y++){
hv[y][x] = 273.15f+22.0f; //Set to room temperature
}
}
- gravity_mask();
}
// stamps library