summaryrefslogtreecommitdiffhomepage
path: root/main/ctor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main/ctor.cpp')
-rw-r--r--main/ctor.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/main/ctor.cpp b/main/ctor.cpp
new file mode 100644
index 00000000..11bc8cb9
--- /dev/null
+++ b/main/ctor.cpp
@@ -0,0 +1,34 @@
+#include "main-impl.hpp"
+#include "compat/fpu.hpp"
+#include "src/path-search.hpp"
+#include <Corrade/Containers/GrowableArray.h>
+
+namespace floormat {
+
+main_impl::main_impl(floormat_app& app, fm_settings&& se, int& argc, char** argv) noexcept :
+ Platform::Sdl2Application{Arguments{argc, argv},
+ make_conf(se), make_gl_conf(se)},
+ s{std::move(se)}, app{app}, _shader{_tuc}
+{
+ if (s.vsync)
+ {
+ (void)setSwapInterval(1);
+ if (const auto list = GL::Context::current().extensionStrings();
+ std::find(list.cbegin(), list.cend(), "EXT_swap_control_tear") != list.cend())
+ (void)setSwapInterval(-1);
+ }
+ else
+ (void)setSwapInterval(0);
+ set_fp_mask();
+ arrayReserve(_clickable_scenery, 128);
+ timeline.start();
+}
+
+class world& main_impl::reset_world(class world&& w) noexcept
+{
+ arrayResize(_clickable_scenery, 0);
+ _world = std::move(w);
+ return _world;
+}
+
+} // namespace floormat