diff --git a/assets/models/background.blend b/assets/models/background.blend new file mode 100644 index 0000000..ef8958a --- /dev/null +++ b/assets/models/background.blend @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea8915c0a8e4f16a9d49dcd7a428daf5c27824b8d3320c26999e8bfaa23a714a +size 899036 diff --git a/assets/resources.json b/assets/resources.json index c91e28e..1599316 100644 --- a/assets/resources.json +++ b/assets/resources.json @@ -79,6 +79,25 @@ "type": "texture_2d", "filename": "textures/ground.png" }, + { + "type": "model", + "filename": "models/background.blend", + "outputs": [ + { + "type": "model", + "key": "models/background.model.mesh", + "options": [ + { + "name": "mesh" + } + ] + } + ] + }, + { + "type": "texture_2d", + "filename": "textures/background.png" + }, { "type": "font", "filename": "fonts/honeyblot_caps.ttf" diff --git a/assets/scenes/game.scene b/assets/scenes/game.scene index 065f42e..0eb1660 100644 --- a/assets/scenes/game.scene +++ b/assets/scenes/game.scene @@ -24,7 +24,7 @@ }, "pr": { "nc": 0.1, - "fc": 100.0, + "fc": 120.0, "t": 0, "fov": 25.0 } @@ -133,9 +133,9 @@ }, "dl": { "ac": [ - 0.8, 0.6999, - 0.6998 + 0.6998, + 1.0 ], "ai": 1.0, "c": [ @@ -145,18 +145,18 @@ 1.0 ], "d": [ - 0.0, - -0.9803, - 0.197 + 0.1489, + -0.9684, + 0.2 ], - "ss": 1024, + "ss": 4098, "smo": 0.0, "csl": 0.0, "opt": [ - 0.5, + 0.3000000119, 6.0, - 0.0149999996, - 0.0 + 0.0099999997, + 1.0 ] } } @@ -220,7 +220,7 @@ "as": 4 }, "scrollable": { - "speed": 0.002, + "speed": 2.0, "reset_distance": 40.0, "create_offset": 80.0, "reset_x_offset": 40.0 @@ -286,12 +286,313 @@ "as": 4 }, "scrollable": { - "speed": 0.002, + "speed": 2.0, "reset_distance": 40.0, "create_offset": 80.0, "reset_x_offset": 40.0 } } + }, + { + "n": "backdrop", + "c": { + "tr": { + "p": [ + 7.2571, + -10.3275, + 16.6378 + ], + "r": [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + "s": [ + 11.1941, + 4.3632, + 4.4278 + ] + }, + "mbs": { + "tx": "fs1://textures/background.png", + "ac": [ + 0.6, + 0.8999, + 1.0, + 1.0 + ], + "tf": 1.0, + "vcf": 0.0 + }, + "mf": { + "mesh": "fs1://models/background.model.mesh" + }, + "scrollable": { + "speed": 0.5, + "reset_distance": 2.0, + "create_offset": 140.0, + "reset_x_offset": 70.0 + } + } + }, + { + "n": "backdrop", + "c": { + "tr": { + "p": [ + 26.1741, + -17.5771, + 70.1244 + ], + "r": [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + "s": [ + 21.0872, + 8.1575, + 7.5166 + ] + }, + "mbs": { + "tx": "fs1://textures/background.png", + "ac": [ + 0.6, + 0.8999, + 1.0, + 1.0 + ], + "tf": 0.5, + "vcf": 0.0 + }, + "mf": { + "mesh": "fs1://models/background.model.mesh" + }, + "scrollable": { + "speed": 0.05, + "reset_distance": 2.0, + "create_offset": 140.0, + "reset_x_offset": 70.0 + } + } + }, + { + "n": "backdrop", + "c": { + "tr": { + "p": [ + -32.4608, + -12.4385, + 37.5946 + ], + "r": [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + "s": [ + 14.0677, + 5.2178, + 9.274 + ] + }, + "mbs": { + "tx": "fs1://textures/background.png", + "ac": [ + 0.6, + 0.8999, + 1.0, + 1.0 + ], + "tf": 0.8, + "vcf": 0.0 + }, + "mf": { + "mesh": "fs1://models/background.model.mesh" + }, + "scrollable": { + "speed": 0.1, + "reset_distance": 2.0, + "create_offset": 140.0, + "reset_x_offset": 70.0 + } + } + }, + { + "n": "backdrop", + "c": { + "tr": { + "p": [ + -97.0669, + -15.8753, + 90.2787 + ], + "r": [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + "s": [ + 24.0016, + 8.1575, + 10.5794 + ] + }, + "mbs": { + "tx": "fs1://textures/background.png", + "ac": [ + 0.6, + 0.8999, + 1.0, + 1.0 + ], + "tf": 0.6499, + "vcf": 0.0 + }, + "mf": { + "mesh": "fs1://models/background.model.mesh" + }, + "scrollable": { + "speed": 0.002, + "reset_distance": 2.0, + "create_offset": 140.0, + "reset_x_offset": 70.0 + } + } + }, + { + "n": "backdrop", + "c": { + "tr": { + "p": [ + 48.5665, + -12.4385, + 38.6837 + ], + "r": [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + "s": [ + 14.0677, + 5.2178, + 9.274 + ] + }, + "mbs": { + "tx": "fs1://textures/background.png", + "ac": [ + 0.6, + 0.8999, + 1.0, + 1.0 + ], + "tf": 0.8, + "vcf": 0.0 + }, + "mf": { + "mesh": "fs1://models/background.model.mesh" + }, + "scrollable": { + "speed": 0.1, + "reset_distance": 2.0, + "create_offset": 140.0, + "reset_x_offset": 70.0 + } + } + }, + { + "n": "backdrop", + "c": { + "tr": { + "p": [ + -49.2111, + -10.3275, + 16.6378 + ], + "r": [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + "s": [ + 11.1941, + 4.3632, + 4.4278 + ] + }, + "mbs": { + "tx": "fs1://textures/background.png", + "ac": [ + 0.6, + 0.8999, + 1.0, + 1.0 + ], + "tf": 1.0, + "vcf": 0.0 + }, + "mf": { + "mesh": "fs1://models/background.model.mesh" + }, + "scrollable": { + "speed": 0.5, + "reset_distance": 2.0, + "create_offset": 140.0, + "reset_x_offset": 70.0 + } + } + }, + { + "n": "backdrop", + "c": { + "tr": { + "p": [ + -68.1492, + -15.8753, + 62.7094 + ], + "r": [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + "s": [ + 21.0872, + 8.1575, + 7.5166 + ] + }, + "mbs": { + "tx": "fs1://textures/background.png", + "ac": [ + 0.6, + 0.8999, + 1.0, + 1.0 + ], + "tf": 0.5, + "vcf": 0.0 + }, + "mf": { + "mesh": "fs1://models/background.model.mesh" + }, + "scrollable": { + "speed": 0.05, + "reset_distance": 2.0, + "create_offset": 140.0, + "reset_x_offset": 70.0 + } + } } ] } \ No newline at end of file diff --git a/assets/textures/background.png b/assets/textures/background.png new file mode 100644 index 0000000..de6ea8f --- /dev/null +++ b/assets/textures/background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1c1e8e5a55d268e715f354a6e26eb58e5db8fd051471ac34a182189d48a0e26 +size 14493 diff --git a/src/components/scrollable.hpp b/src/components/scrollable.hpp index 11b0d6f..70da5f4 100644 --- a/src/components/scrollable.hpp +++ b/src/components/scrollable.hpp @@ -4,8 +4,7 @@ namespace lerppana::flappykarp::components { struct [[le::component]] scrollable { - [[le::property]] float speed = 0.002f; - [[le::property]] float reset_distance = 2.f; + [[le::property]] float speed = 2.f; [[le::property]] float create_offset = 8.0f; [[le::property]] float reset_x_offset = 15.0f; }; diff --git a/src/systems/infinite_scroller.cpp b/src/systems/infinite_scroller.cpp index 3c96c42..afa8a59 100644 --- a/src/systems/infinite_scroller.cpp +++ b/src/systems/infinite_scroller.cpp @@ -18,8 +18,8 @@ namespace lerppana::flappykarp::systems if (!enabled) return; auto random_y_offset = util::random_value(-2.0f, 6.0f); - core::view(scene.objects).for_each( - [&](auto entity, auto& physics, auto& scrollable) + core::view(scene.objects).for_each( + [&](auto entity, auto& physics, auto& scrollable, auto& transform) { auto* obj = (btRigidBody*)physics.get(); if (obj == nullptr) @@ -45,12 +45,41 @@ namespace lerppana::flappykarp::systems } else { - origin.setX(origin.getX() + dt.count() * scrollable.speed); + origin.setX(origin.getX() + dt.count() * scrollable.speed / 1000.0f); } - obj->setWorldTransform(tr); obj->getMotionState()->setWorldTransform(tr); + + if (scene.objects->has_component(entity)) + { + return; + } + else + { + + } + }); + + core::view(scene.objects).for_each( + [&](auto entity, auto& scrollable, auto& transform) + { + if (scene.objects->has_component(entity)) + { + return; + } + + auto pos = transform.get_position(); + if (pos.x >= scrollable.reset_x_offset) + { + pos.x = pos.x - scrollable.create_offset; + } + else + { + pos.x = pos.x + dt.count() * scrollable.speed / 1000.0f; + } + + transform.set_position(pos); }); } diff --git a/vcpkg.json b/vcpkg.json index 19655e2..7e2ca7e 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,6 +1,6 @@ { "name": "flappy-karp", - "version-string": "0.3.1", + "version-string": "0.4.0", "dependencies": [ { "name": "reload-engine",