mirror of
https://github.com/MadeOfJelly/MushMachine.git
synced 2025-06-18 18:56:36 +02:00
port everything over to organizer
This commit is contained in:
@ -31,6 +31,8 @@ target_link_libraries(simple_rect_render_task_test
|
||||
|
||||
simple_velocity_system
|
||||
|
||||
random
|
||||
|
||||
gtest_main
|
||||
)
|
||||
|
||||
@ -100,6 +102,8 @@ target_link_libraries(blur_render_task_test
|
||||
|
||||
simple_velocity_system
|
||||
|
||||
random
|
||||
|
||||
gtest_main
|
||||
)
|
||||
|
||||
|
@ -4,10 +4,11 @@
|
||||
|
||||
#include <mm/services/filesystem.hpp>
|
||||
#include <mm/services/sdl_service.hpp>
|
||||
#include <mm/services/simple_scene.hpp>
|
||||
#include <mm/services/organizer_scene.hpp>
|
||||
#include <mm/services/opengl_renderer.hpp>
|
||||
|
||||
#include <entt/entity/registry.hpp>
|
||||
#include <entt/entity/organizer.hpp>
|
||||
|
||||
#include <mm/opengl/texture_loader.hpp>
|
||||
|
||||
@ -15,15 +16,29 @@
|
||||
|
||||
#include <mm/components/transform2d.hpp>
|
||||
#include <mm/components/color.hpp>
|
||||
#include <mm/components/time_delta.hpp>
|
||||
#include <mm/opengl/render_tasks/spritesheet_renderable.hpp>
|
||||
|
||||
#include <physfs.h>
|
||||
#include "res/textures.zip.h"
|
||||
|
||||
#include <mm/logger.hpp>
|
||||
|
||||
using namespace entt::literals;
|
||||
|
||||
const char* argv0;
|
||||
|
||||
void update_spritesheet_animation(entt::view<entt::exclude_t<>, MM::OpenGL::SpriteSheetRenderable> view, float& accu, const MM::Components::TimeDelta& td) {
|
||||
accu += td.tickDelta;
|
||||
|
||||
if (accu >= 1.f/10) {
|
||||
accu -= 1.f/10;
|
||||
view.each([](auto& spr) {
|
||||
spr.tile_index = (spr.tile_index+spr.sp.tile_count.x) % (spr.sp.tile_count.x*spr.sp.tile_count.y);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
TEST(batched_spritesheet_render_task, it) {
|
||||
MM::Engine engine;
|
||||
|
||||
@ -32,10 +47,10 @@ TEST(batched_spritesheet_render_task, it) {
|
||||
|
||||
sdl_ss.createGLWindow("batched_spritesheet_render_task_test", 1280, 720);
|
||||
|
||||
engine.addService<MM::Services::SimpleSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::SimpleSceneService>());
|
||||
engine.addService<MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::OrganizerSceneService>());
|
||||
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::SimpleSceneService>();
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(provide_ret);
|
||||
auto& scene = engine.tryService<MM::Services::SceneServiceInterface>()->getScene();
|
||||
|
||||
@ -54,19 +69,13 @@ TEST(batched_spritesheet_render_task, it) {
|
||||
|
||||
rs.addRenderTask<MM::OpenGL::RenderTasks::BatchedSpriteSheet>(engine);
|
||||
|
||||
float accu = 0.f;
|
||||
MM::AddSystemToScene(scene, [&accu](auto& scene, float delta) {
|
||||
accu += delta;
|
||||
// setup systems
|
||||
scene.set<float>(0.f); // accu
|
||||
auto& org = scene.set<entt::organizer>();
|
||||
org.emplace<&update_spritesheet_animation>("update_spritesheet_animation");
|
||||
|
||||
if (accu >= 1.f/10) {
|
||||
accu -= 1.f/10;
|
||||
scene.template view<MM::OpenGL::SpriteSheetRenderable>()
|
||||
.each([](auto, auto& spr) {
|
||||
spr.tile_index = (spr.tile_index+spr.sp.tile_count.x) % (spr.sp.tile_count.x*spr.sp.tile_count.y);
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
// HACK: instead you would switch to this scene
|
||||
engine.getService<MM::Services::OrganizerSceneService>().updateOrganizerVertices(scene);
|
||||
|
||||
auto& rm_t = MM::ResourceManager<MM::OpenGL::Texture>::ref();
|
||||
ASSERT_TRUE(rm_t.load<MM::OpenGL::TextureLoaderFile>("anim_run", engine, "/textures/animation_running-1_ea_0.3.png"));
|
||||
|
@ -4,11 +4,12 @@
|
||||
|
||||
#include <mm/services/filesystem.hpp>
|
||||
#include <mm/services/sdl_service.hpp>
|
||||
#include <mm/services/simple_scene.hpp>
|
||||
#include <mm/services/organizer_scene.hpp>
|
||||
#include <mm/services/opengl_renderer.hpp>
|
||||
#include <mm/services/imgui_s.hpp>
|
||||
|
||||
#include <entt/entity/registry.hpp>
|
||||
#include <entt/entity/organizer.hpp>
|
||||
|
||||
#include <mm/opengl/render_tasks/clear.hpp>
|
||||
#include <mm/opengl/render_tasks/copy_to_fb.hpp>
|
||||
@ -26,7 +27,7 @@
|
||||
|
||||
#include <imgui/imgui.h>
|
||||
|
||||
#include <random>
|
||||
#include <mm/random/srng.hpp>
|
||||
|
||||
using namespace entt::literals;
|
||||
|
||||
@ -40,10 +41,10 @@ TEST(blur_render_task, it) {
|
||||
|
||||
sdl_ss.createGLWindow("blur_render_task_test", 1280, 720);
|
||||
|
||||
engine.addService<MM::Services::SimpleSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::SimpleSceneService>());
|
||||
engine.addService<MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::OrganizerSceneService>());
|
||||
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::SimpleSceneService>();
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(provide_ret);
|
||||
auto& scene = engine.tryService<MM::Services::SceneServiceInterface>()->getScene();
|
||||
|
||||
@ -111,9 +112,13 @@ TEST(blur_render_task, it) {
|
||||
|
||||
|
||||
// setup v system
|
||||
MM::AddSystemToScene(scene, MM::Systems::SimpleVelocity);
|
||||
auto& org = scene.set<entt::organizer>();
|
||||
org.emplace<&MM::Systems::simple_velocity>("simple_velocity");
|
||||
|
||||
std::mt19937 mt(42);
|
||||
// HACK: instead you would switch to this scene
|
||||
engine.getService<MM::Services::OrganizerSceneService>().updateOrganizerVertices(scene);
|
||||
|
||||
MM::Random::SRNG rng{42};
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
auto e = scene.create();
|
||||
@ -124,14 +129,10 @@ TEST(blur_render_task, it) {
|
||||
auto& v = scene.emplace<MM::Components::Velocity2D>(e);
|
||||
v.rotation = float(i) * 0.3f;
|
||||
|
||||
if (mt() % 2) {
|
||||
if (rng.roll(0.5f)) {
|
||||
auto& col = scene.emplace<MM::Components::Color>(e);
|
||||
auto rc = [&mt]() -> float {
|
||||
return (mt() % 1001) / 1000.f ;
|
||||
};
|
||||
col.color = {rc(),rc(),rc(),1};
|
||||
col.color = {rng.zeroToOne(), rng.zeroToOne(), rng.zeroToOne(), 1.f};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
engine.run();
|
||||
|
@ -4,15 +4,17 @@
|
||||
|
||||
#include <mm/services/filesystem.hpp>
|
||||
#include <mm/services/sdl_service.hpp>
|
||||
#include <mm/services/simple_scene.hpp>
|
||||
#include <mm/services/organizer_scene.hpp>
|
||||
#include <mm/services/opengl_renderer.hpp>
|
||||
|
||||
#include <entt/entity/registry.hpp>
|
||||
#include <entt/entity/organizer.hpp>
|
||||
|
||||
#include <mm/opengl/render_tasks/fast_sky_render_task.hpp>
|
||||
#include <mm/systems/fast_sky_sun_system.hpp>
|
||||
|
||||
#include <mm/opengl/camera_3d.hpp>
|
||||
#include <mm/components/time_delta.hpp>
|
||||
|
||||
const char* argv0;
|
||||
|
||||
@ -24,10 +26,10 @@ TEST(fast_sky_render_task, it) {
|
||||
|
||||
sdl_ss.createGLWindow("fast_sky_render_task_test", 1280, 720);
|
||||
|
||||
engine.addService<MM::Services::SimpleSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::SimpleSceneService>());
|
||||
engine.addService<MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::OrganizerSceneService>());
|
||||
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::SimpleSceneService>();
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(provide_ret);
|
||||
auto& scene = engine.tryService<MM::Services::SceneServiceInterface>()->getScene();
|
||||
|
||||
@ -39,7 +41,13 @@ TEST(fast_sky_render_task, it) {
|
||||
|
||||
rs.addRenderTask<MM::OpenGL::RenderTasks::FastSky>(engine);
|
||||
|
||||
MM::AddSystemToScene(scene, MM::Systems::FastSkySun);
|
||||
// setup systems
|
||||
auto& org = scene.set<entt::organizer>();
|
||||
org.emplace<&MM::Systems::fast_sky_sun>("fast_sky_sun");
|
||||
|
||||
// HACK: instead you would switch to this scene
|
||||
engine.getService<MM::Services::OrganizerSceneService>().updateOrganizerVertices(scene);
|
||||
|
||||
|
||||
auto& cam = scene.set<MM::OpenGL::Camera3D>();
|
||||
cam.setPerspective();
|
||||
|
@ -1,4 +1,3 @@
|
||||
#include "entt/entity/fwd.hpp"
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <mm/engine.hpp>
|
||||
@ -9,6 +8,7 @@
|
||||
#include <mm/services/opengl_renderer.hpp>
|
||||
|
||||
#include <entt/entity/registry.hpp>
|
||||
#include <entt/entity/organizer.hpp>
|
||||
|
||||
#include <mm/opengl/render_tasks/simple_rect.hpp>
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
#include <mm/systems/simple_velocity_system2d.hpp>
|
||||
|
||||
#include <random>
|
||||
#include <mm/random/srng.hpp>
|
||||
|
||||
const char* argv0;
|
||||
|
||||
@ -46,10 +46,12 @@ TEST(simple_rect_render_task, it) {
|
||||
|
||||
// setup v system
|
||||
auto& org = scene.set<entt::organizer>();
|
||||
org.emplace<&MM::Systems::simple_velocity>("simple_velocity");
|
||||
|
||||
//MM::AddSystemToScene(scene, MM::Systems::SimpleVelocity);
|
||||
// HACK: instead you would switch to this scene
|
||||
engine.getService<MM::Services::OrganizerSceneService>().updateOrganizerVertices(scene);
|
||||
|
||||
std::mt19937 mt(42);
|
||||
MM::Random::SRNG rng{42};
|
||||
|
||||
for (int y = 0; y < 10; y++) {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
@ -62,14 +64,10 @@ TEST(simple_rect_render_task, it) {
|
||||
auto& v = scene.emplace<MM::Components::Velocity2D>(e);
|
||||
v.rotation = i * 0.3f;
|
||||
|
||||
if (mt() % 2) {
|
||||
if (rng.roll(0.5f)) {
|
||||
auto& col = scene.emplace<MM::Components::Color>(e);
|
||||
auto rc = [&mt]() -> float {
|
||||
return (mt() % 1001) / 1000.f ;
|
||||
};
|
||||
col.color = {rc(),rc(),rc(),1};
|
||||
col.color = {rng.zeroToOne(), rng.zeroToOne(), rng.zeroToOne(), 1.f};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,10 +4,11 @@
|
||||
|
||||
#include <mm/services/filesystem.hpp>
|
||||
#include <mm/services/sdl_service.hpp>
|
||||
#include <mm/services/simple_scene.hpp>
|
||||
#include <mm/services/organizer_scene.hpp>
|
||||
#include <mm/services/opengl_renderer.hpp>
|
||||
|
||||
#include <entt/entity/registry.hpp>
|
||||
#include <entt/entity/organizer.hpp>
|
||||
|
||||
#include <mm/opengl/render_tasks/simple_sprite.hpp>
|
||||
|
||||
@ -31,10 +32,10 @@ TEST(simple_sprite_render_task, it) {
|
||||
|
||||
sdl_ss.createGLWindow("simple_sprite_render_task_test", 1280, 720);
|
||||
|
||||
engine.addService<MM::Services::SimpleSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::SimpleSceneService>());
|
||||
engine.addService<MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::OrganizerSceneService>());
|
||||
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::SimpleSceneService>();
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(provide_ret);
|
||||
auto& scene = engine.tryService<MM::Services::SceneServiceInterface>()->getScene();
|
||||
|
||||
@ -47,7 +48,11 @@ TEST(simple_sprite_render_task, it) {
|
||||
rs.addRenderTask<MM::OpenGL::RenderTasks::SimpleSprite>(engine);
|
||||
|
||||
// setup v system
|
||||
MM::AddSystemToScene(scene, MM::Systems::SimpleVelocity);
|
||||
auto& org = scene.set<entt::organizer>();
|
||||
org.emplace<&MM::Systems::simple_velocity>("simple_velocity");
|
||||
|
||||
// HACK: instead you would switch to this scene
|
||||
engine.getService<MM::Services::OrganizerSceneService>().updateOrganizerVertices(scene);
|
||||
|
||||
auto& rm_t = MM::ResourceManager<MM::OpenGL::Texture>::ref();
|
||||
|
||||
|
@ -4,10 +4,11 @@
|
||||
|
||||
#include <mm/services/filesystem.hpp>
|
||||
#include <mm/services/sdl_service.hpp>
|
||||
#include <mm/services/simple_scene.hpp>
|
||||
#include <mm/services/organizer_scene.hpp>
|
||||
#include <mm/services/opengl_renderer.hpp>
|
||||
|
||||
#include <entt/entity/registry.hpp>
|
||||
#include <entt/entity/organizer.hpp>
|
||||
|
||||
#include <mm/opengl/texture_loader.hpp>
|
||||
|
||||
@ -15,6 +16,7 @@
|
||||
|
||||
#include <mm/components/transform2d.hpp>
|
||||
#include <mm/components/color.hpp>
|
||||
#include <mm/components/time_delta.hpp>
|
||||
#include <mm/opengl/render_tasks/spritesheet_renderable.hpp>
|
||||
|
||||
#include <physfs.h>
|
||||
@ -22,6 +24,17 @@
|
||||
|
||||
using namespace entt::literals;
|
||||
|
||||
void update_spritesheet_animation(entt::view<entt::exclude_t<>, MM::OpenGL::SpriteSheetRenderable> view, float& accu, const MM::Components::TimeDelta& td) {
|
||||
accu += td.tickDelta;
|
||||
|
||||
if (accu >= 1.f/10) {
|
||||
accu -= 1.f/10;
|
||||
view.each([](auto& spr) {
|
||||
spr.tile_index = (spr.tile_index+spr.sp.tile_count.x) % (spr.sp.tile_count.x*spr.sp.tile_count.y);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
TEST(simple_spritesheet_render_task, it) {
|
||||
MM::Engine engine;
|
||||
|
||||
@ -30,10 +43,10 @@ TEST(simple_spritesheet_render_task, it) {
|
||||
|
||||
sdl_ss.createGLWindow("simple_spritesheet_render_task_test", 1280, 720);
|
||||
|
||||
engine.addService<MM::Services::SimpleSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::SimpleSceneService>());
|
||||
engine.addService<MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::OrganizerSceneService>());
|
||||
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::SimpleSceneService>();
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(provide_ret);
|
||||
auto& scene = engine.tryService<MM::Services::SceneServiceInterface>()->getScene();
|
||||
|
||||
@ -52,19 +65,13 @@ TEST(simple_spritesheet_render_task, it) {
|
||||
|
||||
rs.addRenderTask<MM::OpenGL::RenderTasks::SimpleSpriteSheet>(engine);
|
||||
|
||||
float accu = 0.f;
|
||||
MM::AddSystemToScene(scene, [&accu](auto& scene, float delta) {
|
||||
accu += delta;
|
||||
// setup systems
|
||||
scene.set<float>(0.f); // accu
|
||||
auto& org = scene.set<entt::organizer>();
|
||||
org.emplace<&update_spritesheet_animation>("update_spritesheet_animation");
|
||||
|
||||
if (accu >= 1.f/10) {
|
||||
accu -= 1.f/10;
|
||||
scene.template view<MM::OpenGL::SpriteSheetRenderable>()
|
||||
.each([](auto, auto& spr) {
|
||||
spr.tile_index = (spr.tile_index+spr.sp.tile_count.x) % (spr.sp.tile_count.x*spr.sp.tile_count.y);
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
// HACK: instead you would switch to this scene
|
||||
engine.getService<MM::Services::OrganizerSceneService>().updateOrganizerVertices(scene);
|
||||
|
||||
auto& rm_t = MM::ResourceManager<MM::OpenGL::Texture>::ref();
|
||||
ASSERT_TRUE(rm_t.load<MM::OpenGL::TextureLoaderFile>("anim_run", engine, "/textures/animation_running-1_ea_0.3.png"));
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <mm/services/filesystem.hpp>
|
||||
#include <mm/services/sdl_service.hpp>
|
||||
#include <mm/services/simple_scene.hpp>
|
||||
#include <mm/services/organizer_scene.hpp>
|
||||
#include <mm/services/opengl_renderer.hpp>
|
||||
|
||||
#include <entt/entity/registry.hpp>
|
||||
@ -27,10 +27,10 @@ TEST(tilemap_render_task_test, it) {
|
||||
|
||||
sdl_ss.createGLWindow("tilemap_render_task_test", 1280, 720);
|
||||
|
||||
engine.addService<MM::Services::SimpleSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::SimpleSceneService>());
|
||||
engine.addService<MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(engine.enableService<MM::Services::OrganizerSceneService>());
|
||||
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::SimpleSceneService>();
|
||||
bool provide_ret = engine.provide<MM::Services::SceneServiceInterface, MM::Services::OrganizerSceneService>();
|
||||
ASSERT_TRUE(provide_ret);
|
||||
auto& scene = engine.tryService<MM::Services::SceneServiceInterface>()->getScene();
|
||||
|
||||
|
Reference in New Issue
Block a user