diff options
author | chai <chaifix@163.com> | 2021-12-01 19:30:25 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-12-01 19:30:25 +0800 |
commit | bcc11176480f403ab294de24d61bab993ce2fdfd (patch) | |
tree | 0863baca5d29dc58b3555cf38bfeecbeecbec624 /Client/Source | |
parent | 1308cb4e2db1eb117b53372bc4fe964cf2d96813 (diff) |
*misc
Diffstat (limited to 'Client/Source')
-rw-r--r-- | Client/Source/Phy2DLite/Settings.h | 52 | ||||
-rw-r--r-- | Client/Source/Phy2DLite/Tests/test.cpp (renamed from Client/Source/Phy2DLite/Tests/test_p2d.cpp) | 27 |
2 files changed, 49 insertions, 30 deletions
diff --git a/Client/Source/Phy2DLite/Settings.h b/Client/Source/Phy2DLite/Settings.h index e50646c..73639ef 100644 --- a/Client/Source/Phy2DLite/Settings.h +++ b/Client/Source/Phy2DLite/Settings.h @@ -11,6 +11,32 @@ #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())
+#define PI (fix16_pi)
+
+#elif NUMBER_ALIAS == NUMBER_FPM
template <typename T> struct Limits {}; @@ -57,32 +83,6 @@ struct Limits<fpm::fixed_8_24> static constexpr fpm::fixed_8_24 max() noexcept { return fpm::fixed_8_24::from_raw_value(2147483647); } }; -#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 (Limits<number>::max())
#define NUMBER_MIN (Limits<number>::min())
diff --git a/Client/Source/Phy2DLite/Tests/test_p2d.cpp b/Client/Source/Phy2DLite/Tests/test.cpp index 69737f6..6456b75 100644 --- a/Client/Source/Phy2DLite/Tests/test_p2d.cpp +++ b/Client/Source/Phy2DLite/Tests/test.cpp @@ -454,15 +454,17 @@ static void Demo9(Body* b, Joint* j) } } -static void InitDemo() +void(*demos[])(Body* b, Joint* j) = { Demo1, Demo2, Demo3, Demo4, Demo5, Demo6, Demo7, Demo8, Demo9 }; + +static void InitDemo(int index) { world.Clear(); numBodies = 0; numJoints = 0; bomb = NULL; - demoIndex = 0; - Demo5(bodies, joints); + demoIndex = index; + demos[index](bodies, joints); } int main(int argc, char **argv) {
@@ -545,7 +547,7 @@ int main(int argc, char **argv) { glOrtho(-zoom, zoom, -zoom / aspect + pan_y, zoom / aspect + pan_y, -1.0, 1.0); }
- InitDemo();
+ InitDemo(5);
// Main loop
bool done = false;
@@ -568,6 +570,23 @@ int main(int argc, char **argv) { done = true;
if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_CLOSE && event.window.windowID == SDL_GetWindowID(window))
done = true;
+ if (event.type == SDL_KEYDOWN)
+ {
+ switch (event.key.keysym.sym)
+ {
+ case SDLK_1:
+ case SDLK_2:
+ case SDLK_3:
+ case SDLK_4:
+ case SDLK_5:
+ case SDLK_6:
+ case SDLK_7:
+ case SDLK_8:
+ case SDLK_9:
+ InitDemo(event.key.keysym.sym - SDLK_1);
+ break;
+ }
+ }
}
// Start the Dear ImGui frame
|