diff --git a/src/liborng/nodes/hurtbox/hurtbox_base.cpp b/src/liborng/nodes/hurtbox/hurtbox_base.cpp index e616038..ac96e83 100644 --- a/src/liborng/nodes/hurtbox/hurtbox_base.cpp +++ b/src/liborng/nodes/hurtbox/hurtbox_base.cpp @@ -110,14 +110,14 @@ void HurtboxBase::_physics_process(double delta) void HurtboxBase::_send_next_in_queue() { - if (!this->hit_data_queue.empty()) + for (uint8_t i = 0; i < MAX_HITS_PER_QUEUE_LOOP && !this->hit_data_queue.empty(); i++) { IDamageable *closest_damageable = nullptr; float shortest_distance_from_hurtbox = FLT_MAX; bool found_character_3d = false; for (const auto &[damageable, hit_data_list] : this->hit_data_queue) { - if (const Character3D *node = (Character3D*)(damageable)) + if (const Character3D *node = cast_to(damageable)) { const float distance_to_hurtbox = node->get_global_position().distance_squared_to(this->get_global_position()); if (distance_to_hurtbox < shortest_distance_from_hurtbox) diff --git a/src/liborng/nodes/hurtbox/hurtbox_base.h b/src/liborng/nodes/hurtbox/hurtbox_base.h index 84ffb72..ba9557c 100644 --- a/src/liborng/nodes/hurtbox/hurtbox_base.h +++ b/src/liborng/nodes/hurtbox/hurtbox_base.h @@ -17,6 +17,8 @@ #include using namespace godot; +#define MAX_HITS_PER_QUEUE_LOOP 3 + #define HURTBOX_BASE_TAG "HurtboxBase"