adopt engine stuff to new update strategy

This commit is contained in:
2020-12-26 19:29:39 +01:00
parent c1ae30c89c
commit 840b663d5e
28 changed files with 351 additions and 324 deletions

View File

@ -11,7 +11,7 @@
TEST(player_velocity, basic_run) {
float delta = 1/60.f;
MM::Engine engine(delta);
MM::Engine engine;
engine.addService<MM::Services::SDLService>();
ASSERT_TRUE(engine.enableService<MM::Services::SDLService>());
@ -19,7 +19,7 @@ TEST(player_velocity, basic_run) {
engine.addService<MM::Services::InputService>();
ASSERT_TRUE(engine.enableService<MM::Services::InputService>());
engine.addService<MM::Services::SimpleSceneService>();
engine.addService<MM::Services::SimpleSceneService>(delta);
ASSERT_TRUE(engine.enableService<MM::Services::SimpleSceneService>());
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::SimpleSceneService>();
@ -37,7 +37,8 @@ TEST(player_velocity, basic_run) {
//v.velocity = { 1.f, 1.f };
//v.rotation = 0.f;
engine.fixedUpdate();
engine.getUpdateStrategy().addDefered([](auto& e) { e.stop(); });
engine.run();
//ASSERT_EQ(t.position.x, 1.f * delta);
// TODO: TEST

View File

@ -1,23 +1,13 @@
#include <gtest/gtest.h>
#include <mm/engine.hpp>
#include <mm/services/simple_scene.hpp>
#include <mm/engine_fwd.hpp>
#include <entt/entity/registry.hpp>
#include <mm/systems/simple_velocity_system2d.hpp>
TEST(simple_velocity_2d, basic_run) {
float delta = 1/60.f;
MM::Engine engine(delta);
engine.addService<MM::Services::SimpleSceneService>();
ASSERT_TRUE(engine.enableService<MM::Services::SimpleSceneService>());
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::SimpleSceneService>();
ASSERT_TRUE(provide_ret);
auto& scene = engine.tryService<MM::Services::SceneServiceInterface>()->getScene();
MM::Scene scene;
// setup v system
MM::AddSystemToScene(scene, MM::Systems::SimpleVelocity);
@ -31,8 +21,10 @@ TEST(simple_velocity_2d, basic_run) {
v.velocity = { 1.f, 1.f };
v.rotation = 0.f;
engine.fixedUpdate();
::MM::EachSystemInScene(scene, [&](::MM::Scene& s, ::MM::System& fn) {
fn(s, 1.f/60.f);
});
ASSERT_EQ(t.position.x, 1.f * delta);
ASSERT_EQ(t.position.x, 1.f * 1.f/60.f);
}