#include "Assets.hpp"
#include "FrameCounter.hpp"
+#include "init.hpp"
#include "../audio/Sound.hpp"
#include "../graphics/Font.hpp"
#include "../world/BlockType.hpp"
namespace blank {
-Application::Application(const Config &config)
-: init(config.doublebuf, config.multisampling)
+Application::Application(Window &win, const Config &config)
+: window(win)
, viewport()
, assets(get_asset_path())
, audio()
, counter()
, world(config.world)
, interface(config.interface, assets, audio, counter, world)
-, test_controller(MakeTestEntity(world))
+, spawner(world)
, running(false) {
viewport.VSync(config.vsync);
}
audio.StopAll();
}
-Entity &Application::MakeTestEntity(World &world) {
- Entity &e = world.AddEntity();
- e.Name("test");
- e.Position({ 0.0f, 0.0f, 0.0f });
- e.Bounds({ { -0.5f, -0.5f, -0.5f }, { 0.5f, 0.5f, 0.5f } });
- e.WorldCollidable(true);
- e.SetShape(world.BlockTypes()[1].shape, { 1.0f, 1.0f, 0.0f });
- e.AngularVelocity(glm::quat(glm::vec3{ 0.00001f, 0.000006f, 0.000013f }));
- return e;
-}
-
void Application::RunN(size_t n) {
Uint32 last = SDL_GetTicks();
void Application::Run() {
running = true;
Uint32 last = SDL_GetTicks();
- init.window.GrabMouse();
+ window.GrabMouse();
while (running) {
Uint32 now = SDL_GetTicks();
int delta = now - last;
void Application::Handle(const SDL_WindowEvent &event) {
switch (event.event) {
case SDL_WINDOWEVENT_FOCUS_GAINED:
- init.window.GrabMouse();
+ window.GrabMouse();
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
- init.window.ReleaseMouse();
+ window.ReleaseMouse();
break;
case SDL_WINDOWEVENT_RESIZED:
viewport.Resize(event.data1, event.data2);
void Application::Update(int dt) {
counter.EnterUpdate();
interface.Update(dt);
- test_controller.Update(dt);
+ spawner.Update(dt);
world.Update(dt);
glm::mat4 trans = world.Player().Transform(Chunk::Pos(0, 0, 0));
interface.Render(viewport);
counter.ExitRender();
- init.window.Flip();
+ window.Flip();
}