From 09abf1b529b4226f585ecfbb20866715b901755b Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 1 Dec 2021 13:34:22 +0800 Subject: +fpm --- Client/Source/Phy2DLite/Settings.h | 77 +++++++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 27 deletions(-) (limited to 'Client/Source/Phy2DLite/Settings.h') 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 + +} + -- cgit v1.1-26-g67d0