diff options
Diffstat (limited to 'Client/Source/Phy2DLite/Settings.h')
-rw-r--r-- | Client/Source/Phy2DLite/Settings.h | 77 |
1 files changed, 50 insertions, 27 deletions
diff --git a/Client/Source/Phy2DLite/Settings.h b/Client/Source/Phy2DLite/Settings.h index 5f7237f..e976e26 100644 --- a/Client/Source/Phy2DLite/Settings.h +++ b/Client/Source/Phy2DLite/Settings.h @@ -1,27 +1,50 @@ -#pragma once - -#include "libfixmath/libfixmath/fixmath.h" - -namespace Phy2D -{ - -#define NUMBER_FLOAT false - -#if NUMBER_FLOAT -typedef float number; -#define NUMBER_MAX (FLT_MAX) -#define NUMBER_MIN (FLT_MIN) -#define SQRT(a) (sqrt((a))) -#define SIN(a) (sin((a))) -#define COS(a) (cos((a))) -#else -// 同时一定要开启内联函数扩展,否则执行效率会非常低 -typedef Fix16 number; -#define NUMBER_MAX (fix16_maximum) -#define NUMBER_MIN (fix16_minimum) -#define SQRT(a) ((a).sqrt()) -#define SIN(a) ((a).sin()) -#define COS(a) ((a).cos()) -#endif - -}
\ No newline at end of file +#pragma once
+
+#define NUMBER_FLOAT 1
+#define NUMBER_LIBFIX 2
+#define NUMBER_FPM 3
+
+#define NUMBER_ALIAS NUMBER_LIBFIX
+
+#if NUMBER_ALIAS == NUMBER_LIBFIX
+#include "libfixmath/libfixmath/fixmath.h"
+#elif NUMBER_ALIAS == NUMBER_FPM
+#include "fpm/include/fpm/fixed.hpp"
+#include "fpm/include/fpm/math.hpp"
+#endif
+
+namespace Phy2D
+{
+
+#if NUMBER_ALIAS == NUMBER_FLOAT
+
+typedef float number;
+#define NUMBER_MAX (FLT_MAX)
+#define NUMBER_MIN (FLT_MIN)
+#define SQRT(a) (sqrt((a)))
+#define SIN(a) (sin((a)))
+#define COS(a) (cos((a)))
+
+#elif NUMBER_ALIAS == NUMBER_LIBFIX
+
+// 同时一定要开启内联函数扩展,否则执行效率会非常低
+typedef Fix16 number;
+#define NUMBER_MAX (fix16_maximum)
+#define NUMBER_MIN (fix16_minimum)
+#define SQRT(a) ((a).sqrt())
+#define SIN(a) ((a).sin())
+#define COS(a) ((a).cos())
+
+#elif NUMBER_ALIAS == NUMBER_FPM
+
+typedef fpm::fixed_16_16 number;
+#define NUMBER_MAX (number::max())
+#define NUMBER_MIN (number::min())
+#define SQRT(a) (fpm::sqrt((a)))
+#define SIN(a) (fpm::sin((a)))
+#define COS(a) (fpm::cos((a)))
+
+#endif
+
+}
+
|