From 4642bb24db4d4d41c58fc4d9cd95da77fb12d42d Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Sun, 26 Feb 2023 18:53:18 +0900 Subject: [PATCH] Fix screenshake, add rotation to screenshake --- src/3d_renderer.cc | 22 +++++++++++++++++----- src/3d_renderer.h | 1 + src/constants.h | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/3d_renderer.cc b/src/3d_renderer.cc index 730f266..d7ec4cc 100644 --- a/src/3d_renderer.cc +++ b/src/3d_renderer.cc @@ -29,6 +29,7 @@ Renderer3D::Renderer3D() overview_timer(OVERVIEW_TIMER_MAX), button_color_timer(BUTTON_COLOR_TIME), screen_shake_factor(SCREEN_SHAKE_DEFAULT_FACTOR), + screen_shake_rot_factor(SCREEN_SHAKE_DEFAULT_ROT_FACTOR), screen_shake_timer(0.0F), waiting_spinner_timer(0.0F), received_pos(0), @@ -430,6 +431,8 @@ void Renderer3D::update_impl() { } else { screen_shake_factor = screen_shake_timer / SCREEN_SHAKE_TIME * SCREEN_SHAKE_DEFAULT_FACTOR; + screen_shake_rot_factor = screen_shake_timer / SCREEN_SHAKE_TIME * + SCREEN_SHAKE_DEFAULT_ROT_FACTOR; } } @@ -590,20 +593,29 @@ void Renderer3D::draw_impl() { float offset_x = 0; float offset_y = 0; + float rotation = 0; if (flags.test(21)) { offset_x = screen_shake_factor * 2.0F * call_js_get_random() - screen_shake_factor; offset_y = screen_shake_factor * 2.0F * call_js_get_random() - screen_shake_factor; + rotation = screen_shake_rot_factor * 2.0F * call_js_get_random() - + screen_shake_rot_factor; } BeginDrawing(); - DrawTextureRec(renderTexture.value().texture, - Rectangle{offset_x, offset_y, - (float)renderTexture.value().texture.width, - (float)-renderTexture.value().texture.height}, - Vector2{0, 0}, WHITE); + DrawTexturePro( + renderTexture.value().texture, + Rectangle{0, 0, (float)renderTexture.value().texture.width, + (float)-renderTexture.value().texture.height}, + Rectangle{offset_x + (float)(renderTexture.value().texture.width / 2), + offset_y + (float)(renderTexture.value().texture.height / 2), + (float)renderTexture.value().texture.width, + (float)renderTexture.value().texture.height}, + Vector2{(float)(renderTexture.value().texture.width / 2), + (float)(renderTexture.value().texture.height / 2)}, + rotation, WHITE); EndDrawing(); } else { EndDrawing(); diff --git a/src/3d_renderer.h b/src/3d_renderer.h index 274d20c..c47dc1f 100644 --- a/src/3d_renderer.h +++ b/src/3d_renderer.h @@ -129,6 +129,7 @@ class Renderer3D : public GameRenderer { float overview_timer; float button_color_timer; float screen_shake_factor; + float screen_shake_rot_factor; float screen_shake_timer; float waiting_spinner_timer; diff --git a/src/constants.h b/src/constants.h index 9079878..4f890b9 100644 --- a/src/constants.h +++ b/src/constants.h @@ -72,6 +72,7 @@ constexpr float BUTTON_COLOR_MAX = 180.0F; constexpr float SCREEN_SHAKE_DEFAULT_FACTOR = 7.0F; constexpr float SCREEN_SHAKE_TIME = 0.5F; +constexpr float SCREEN_SHAKE_DEFAULT_ROT_FACTOR = 2.0F; constexpr int ANIM_FALLING_AMT = 7; constexpr int ANIM_FALLING_OPP_THRESHOLD = 5; -- 2.49.0