summaryrefslogtreecommitdiffhomepage
path: root/main/ctor.cpp
blob: 35968535902bbeee788ca3b4d82e95cff1ed98a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "main-impl.hpp"
#include "compat/fpu.hpp"
#include "src/search-astar.hpp"
#include "src/search.hpp"
#include <algorithm>
#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{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 = Time::now();
}

class world& main_impl::reset_world(class world&& w) noexcept
{
    arrayResize(_clickable_scenery, 0);
    _world = move(w);
    _first_frame = true;
    return _world;
}

} // namespace floormat