summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorjacksonmj <mj-pt@jacksonmj.co.uk>2011-12-10 15:23:33 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-12-18 14:04:47 (GMT)
commit934d1da66eb5aec49769feaf00d0949f805fd3d5 (patch)
tree28ee674d06060d9940e1c235d2dba39f8a5c74f5 /includes
parent20dd54f36e971e9b9f8762309caa49ed07bea031 (diff)
downloadpowder-934d1da66eb5aec49769feaf00d0949f805fd3d5.zip
powder-934d1da66eb5aec49769feaf00d0949f805fd3d5.tar.gz
Move Newtonian gravity into a new file
Diffstat (limited to 'includes')
-rw-r--r--includes/air.h25
-rw-r--r--includes/defines.h3
-rw-r--r--includes/element.h1
-rw-r--r--includes/gravity.h44
-rw-r--r--includes/powder.h5
5 files changed, 45 insertions, 33 deletions
diff --git a/includes/air.h b/includes/air.h
index 0f37310..2ad2efb 100644
--- a/includes/air.h
+++ b/includes/air.h
@@ -2,24 +2,6 @@
#define AIR_H
#include "defines.h"
-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;
-extern unsigned gravmask[YRES/CELL][XRES/CELL];
-
-extern float th_ogravmap[YRES/CELL][XRES/CELL]; // Maps to be processed by the gravity thread
-extern float th_gravmap[YRES/CELL][XRES/CELL];
-extern float th_gravx[YRES/CELL][XRES/CELL];
-extern float th_gravy[YRES/CELL][XRES/CELL];
-extern float *th_gravpf;
-extern float *th_gravxf;
-extern float *th_gravyf;
-extern float th_gravp[YRES/CELL][XRES/CELL];
-
extern float vx[YRES/CELL][XRES/CELL], ovx[YRES/CELL][XRES/CELL];
extern float vy[YRES/CELL][XRES/CELL], ovy[YRES/CELL][XRES/CELL];
extern float pv[YRES/CELL][XRES/CELL], opv[YRES/CELL][XRES/CELL];
@@ -39,13 +21,6 @@ void make_kernel(void);
void update_airh(void);
-void update_grav(void);
-
-#ifdef GRAVFFT
-void grav_fft_init();
-void grav_fft_cleanup();
-#endif
-
void update_air(void);
#endif
diff --git a/includes/defines.h b/includes/defines.h
index def6c8d..2ea6067 100644
--- a/includes/defines.h
+++ b/includes/defines.h
@@ -149,7 +149,6 @@ int GRAV_G2;
int GRAV_B2;
extern int legacy_enable;
-extern int ngrav_enable; //Newtonian gravity
extern int sound_enable;
extern int kiosk_enable;
extern int aheat_enable;
@@ -251,7 +250,5 @@ void clear_sim(void);
void del_stamp(int d);
void sdl_seticon(void);
void play_sound(char *file);
-void start_grav_async(void);
-void stop_grav_async(void);
int set_scale(int scale, int kiosk);
#endif
diff --git a/includes/element.h b/includes/element.h
index cf84d79..ad22216 100644
--- a/includes/element.h
+++ b/includes/element.h
@@ -3,6 +3,7 @@
// This header should be included by all files in src/elements/
#include "powder.h"
+#include "gravity.h"
#include "misc.h"
#include "math.h"
#include "powdergraphics.h"
diff --git a/includes/gravity.h b/includes/gravity.h
new file mode 100644
index 0000000..05e244c
--- /dev/null
+++ b/includes/gravity.h
@@ -0,0 +1,44 @@
+#ifndef GRAVITY_H
+#define GRAVITY_H
+
+#include "defines.h"
+
+extern int ngrav_enable; //Newtonian gravity
+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;
+extern unsigned gravmask[YRES/CELL][XRES/CELL];
+
+extern float th_ogravmap[YRES/CELL][XRES/CELL]; // Maps to be processed by the gravity thread
+extern float th_gravmap[YRES/CELL][XRES/CELL];
+extern float th_gravx[YRES/CELL][XRES/CELL];
+extern float th_gravy[YRES/CELL][XRES/CELL];
+extern float *th_gravpf;
+extern float *th_gravxf;
+extern float *th_gravyf;
+extern float th_gravp[YRES/CELL][XRES/CELL];
+
+void gravity_init();
+void gravity_cleanup();
+void gravity_update_async();
+
+void start_grav_async();
+void stop_grav_async();
+void update_grav();
+void gravity_mask();
+
+void bilinear_interpolation(float *src, float *dst, int sw, int sh, int rw, int rh);
+
+#ifdef GRAVFFT
+void grav_fft_init();
+void grav_fft_cleanup();
+#endif
+
+#endif
diff --git a/includes/powder.h b/includes/powder.h
index db9cb03..a5a8bef 100644
--- a/includes/powder.h
+++ b/includes/powder.h
@@ -1051,15 +1051,12 @@ extern int portal_ry[8];
extern int wire_placed;
-extern int gravwl_timeout;
-
extern playerst player;
extern playerst player2;
extern playerst fighters[256];
extern unsigned char fighcount;
-extern int gravityMode;
extern int airMode;
extern particle *parts;
@@ -1137,6 +1134,4 @@ void orbitalparts_get(int block1, int block2, int resblock1[], int resblock2[]);
void orbitalparts_set(int *block1, int *block2, int resblock1[], int resblock2[]);
-void gravity_mask();
-
#endif