Fix some gravity memsets, remove gravx/y
This commit is contained in:
parent
934d1da66e
commit
c819e2655e
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user