aboutsummaryrefslogtreecommitdiff
path: root/Client/Source
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-12-01 19:30:25 +0800
committerchai <chaifix@163.com>2021-12-01 19:30:25 +0800
commitbcc11176480f403ab294de24d61bab993ce2fdfd (patch)
tree0863baca5d29dc58b3555cf38bfeecbeecbec624 /Client/Source
parent1308cb4e2db1eb117b53372bc4fe964cf2d96813 (diff)
*misc
Diffstat (limited to 'Client/Source')
-rw-r--r--Client/Source/Phy2DLite/Settings.h52
-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