Fix some gravity memsets, remove gravx/y

This commit is contained in:
jacksonmj 2011-12-11 00:11:03 +08:00 committed by Simon Robertshaw
parent 934d1da66e
commit c819e2655e
4 changed files with 29 additions and 34 deletions

View File

@ -8,9 +8,6 @@ extern int gravwl_timeout;
extern int gravityMode;
extern float gravmap[YRES/CELL][XRES/CELL]; //Maps to be used by the main thread
extern float gravx[YRES/CELL][XRES/CELL];
extern float gravy[YRES/CELL][XRES/CELL];
extern float gravp[YRES/CELL][XRES/CELL];
extern float *gravpf;
extern float *gravxf;
extern float *gravyf;

View File

@ -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

View File

@ -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;
}

View File

@ -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