From 8b233db1b619ef8b1e1674107d3c8d0cea245a3c Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 27 Jan 2025 00:42:02 +0100 Subject: [PATCH] feat: delta time is no longer const & --- src/core/level.cpp | 2 +- src/core/level.hpp | 2 +- src/core/node.cpp | 11 ++++++++++- src/core/node.hpp | 6 ++++-- src/player.cpp | 1 + src/player.hpp | 2 +- src/scrolling_ground.cpp | 2 +- src/scrolling_ground.hpp | 2 +- src/test_node.cpp | 2 +- src/test_node.hpp | 2 +- src/truck.cpp | 2 +- 11 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/core/level.cpp b/src/core/level.cpp index 25dbd03..443247f 100644 --- a/src/core/level.cpp +++ b/src/core/level.cpp @@ -15,7 +15,7 @@ void Level::deinstantiate() { this->root.reset(); } -void Level::propagate_tick(double const &delta_time) { +void Level::propagate_tick(double delta_time) { this->root->propagate_tick(delta_time); this->root->propagate_post_tick(); } diff --git a/src/core/level.hpp b/src/core/level.hpp index 0410aa3..8b7fd1c 100644 --- a/src/core/level.hpp +++ b/src/core/level.hpp @@ -17,7 +17,7 @@ public: void instantiate(); virtual Node::OwnedPtr construct() = 0; void deinstantiate(); - void propagate_tick(double const &delta_time); + void propagate_tick(double delta_time); void propagate_draw(SDL_Renderer *render); Node *get_root(); diff --git a/src/core/node.cpp b/src/core/node.cpp index 8b109f0..feebb69 100644 --- a/src/core/node.cpp +++ b/src/core/node.cpp @@ -125,7 +125,7 @@ std::optional Node::remove_child(Node *node) { } } -void Node::propagate_tick(double const &delta_time) { +void Node::propagate_tick(double delta_time) { if(this->tick) { if(!this->has_ticked) { this->has_ticked = true; @@ -171,6 +171,15 @@ void Node::propagate_draw(SDL_Renderer *render, ce::Transform const &view_transf } } +void Node::propagate_draw_ui(SDL_Renderer *render, ce::Transform const &ui_transform) { + this->_draw_ui(render, ui_transform); + if(this->visible) { + this->_draw_ui(render, ui_transform); + for(ChildrenVector::value_type &pair : this->children) + pair.second->propagate_draw_ui(render, ui_transform); + } +} + bool Node::rename_child(std::string const &old_name, std::string const &new_name) { // extract ownership of node and erase old name for(ChildrenVector::iterator itr{this->children.begin()}; itr != this->children.end(); ++itr) { diff --git a/src/core/node.hpp b/src/core/node.hpp index 49179fc..379c607 100644 --- a/src/core/node.hpp +++ b/src/core/node.hpp @@ -37,9 +37,10 @@ public: public: virtual void _added() {} //!< called the moment after the object is added as a child to another node virtual void _first_tick() {} //!< called the first frame this object is active - virtual void _tick(double const &delta_time [[maybe_unused]]) {} //!< called every frame + virtual void _tick(double delta_time [[maybe_unused]]) {} //!< called every frame virtual void _removed() {} //!< called the moment before the object is removed as a child to another node virtual void _draw(SDL_Renderer *render [[maybe_unused]], ce::Transform const &view_transform [[maybe_unused]]) {} + virtual void _draw_ui(SDL_Renderer *render [[maybe_unused]], ce::Transform const &ui_transform [[maybe_unused]]) {} virtual void _update_transform() {} public: template TNode *get_child(std::string const &name); //!< get a non-owning pointer to a child @@ -62,11 +63,12 @@ private: void set_level(ce::Level *level); void set_is_inside_tree(bool value); std::optional remove_child(Node *child); //!< remove a child, the caller now owns the pointer - void propagate_tick(double const &delta_time); + void propagate_tick(double delta_time); void propagate_post_tick(); void propagate_added(); void propagate_removed(); void propagate_draw(SDL_Renderer *render, ce::Transform const &view_transform); + void propagate_draw_ui(SDL_Renderer *renderer, ce::Transform const &ui_transform); bool rename_child(std::string const &old_name, std::string const &new_name); }; diff --git a/src/player.cpp b/src/player.cpp index 9f6112d..dcc59b0 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -51,6 +51,7 @@ void Player::_tick(double const &delta) { ACCELERATION * delta ); ce::Transform trans{this->get_global_transform().translated(this->velocity * delta)}; +void Player::_tick(double delta) { trans.position.x = std::clamp(trans.position.x, -LIMITS.x, LIMITS.x); trans.position.y = std::clamp(trans.position.y, -LIMITS.y, LIMITS.y); this->set_global_transform(trans); diff --git a/src/player.hpp b/src/player.hpp index e7b3464..33dcc10 100644 --- a/src/player.hpp +++ b/src/player.hpp @@ -23,7 +23,7 @@ class Player : public ce::CollidableNode { float invincibility{0.f}; public: Player(); - virtual void _tick(double const &delta) override; + virtual void _tick(double delta) override; void _input_horizontal_movement(ce::InputValue value); void _input_vertical_movement(ce::InputValue value); void _on_overlap_enter(ce::CollisionShape *, ce::CollidableNode *node, ce::CollisionShape*); diff --git a/src/scrolling_ground.cpp b/src/scrolling_ground.cpp index 2ecf4c4..df72a09 100644 --- a/src/scrolling_ground.cpp +++ b/src/scrolling_ground.cpp @@ -20,7 +20,7 @@ ScrollingGround::ScrollingGround() ); } -void ScrollingGround::_tick(double const &delta) { +void ScrollingGround::_tick(double delta) { ce::Transform trans; for(size_t i{0u}; i < NUM_SPRITES; ++i) { trans = this->sprites[i]->get_global_transform() diff --git a/src/scrolling_ground.hpp b/src/scrolling_ground.hpp index 5add713..6445a44 100644 --- a/src/scrolling_ground.hpp +++ b/src/scrolling_ground.hpp @@ -11,7 +11,7 @@ class ScrollingGround : public ce::Node2D { ce::Sprite *sprites[2]{nullptr, nullptr}; public: ScrollingGround(); - virtual void _tick(double const &delta) override; + virtual void _tick(double delta) override; }; #endif // !SCROLLING_GROUND_HPP diff --git a/src/test_node.cpp b/src/test_node.cpp index 9172ad8..a62158f 100644 --- a/src/test_node.cpp +++ b/src/test_node.cpp @@ -15,7 +15,7 @@ void TestNode::_first_tick() { this->sprite->set_global_transform(st); } -void TestNode::_tick(double const &delta) { +void TestNode::_tick(double delta) { ce::Node2D::_tick(delta); ce::Transform trans{this->get_transform()}; trans.position.x = 500 + std::sin(SDL_GetTicks64() * 0.001) * 100.f; diff --git a/src/test_node.hpp b/src/test_node.hpp index b1f20bb..2b43e8f 100644 --- a/src/test_node.hpp +++ b/src/test_node.hpp @@ -12,7 +12,7 @@ private: public: TestNode(); virtual void _first_tick() override; - virtual void _tick(double const &delta) override; + virtual void _tick(double delta) override; virtual void _draw(SDL_Renderer *render, ce::Transform const &view_transform) override; }; diff --git a/src/truck.cpp b/src/truck.cpp index c646b46..7522c3d 100644 --- a/src/truck.cpp +++ b/src/truck.cpp @@ -15,7 +15,6 @@ Truck::Truck(bool left) })); } -void Truck::_tick(double const &delta) { wave_time += delta * FREQUENCY; ce::Transform const transform{this->get_global_transform() .translated(ce::Vecf{ @@ -24,6 +23,7 @@ void Truck::_tick(double const &delta) { } * float(delta)) }; this->set_global_transform(transform); +void Truck::_tick(double delta) { if(transform.position.y > 4.5f) this->flag_for_deletion(); }