From f159ceac7401f3912f4cba05671420be0072dc87 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Tue, 17 Jan 2023 14:18:22 +0900 Subject: [PATCH] Add anim_model_shrink --- CMakeLists.txt | 2 ++ src/3d/anim_model_shrink.cc | 22 ++++++++++++++++++++++ src/3d/anim_model_shrink.h | 22 ++++++++++++++++++++++ src/constants.h | 2 ++ wasm_build/Makefile | 6 ++++-- 5 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 src/3d/anim_model_shrink.cc create mode 100644 src/3d/anim_model_shrink.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 60f180f..44b51f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,7 @@ set(RPSDuelNative_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/qm.cc" "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/anim_concurrent.cc" "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/anim_sequence.cc" + "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/anim_model_shrink.cc" ) set(RPSDuelNative_HEADERS @@ -42,6 +43,7 @@ set(RPSDuelNative_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/qm.h" "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/anims.h" "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/anim_sequence.h" + "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/anim_model_shrink.h" ) add_executable(RPSDuelNative ${RPSDuelNative_SOURCES}) diff --git a/src/3d/anim_model_shrink.cc b/src/3d/anim_model_shrink.cc new file mode 100644 index 0000000..49270cd --- /dev/null +++ b/src/3d/anim_model_shrink.cc @@ -0,0 +1,22 @@ +#include "anim_model_shrink.h" + +// third party includes +#include + +// local includes +#include "../constants.h" +#include "a3f_conv.h" + +AnimModelShrink::AnimModelShrink(Model *model, A3F pos) + : Anims(model), pos(pos), timer(MODEL_SHRINK_TIME) {} + +AnimModelShrink::~AnimModelShrink() {} + +bool AnimModelShrink::is_done() { return timer <= 0.0F; } + +void AnimModelShrink::do_update(float dt) { timer -= dt; } + +void AnimModelShrink::do_draw() { + DrawModel(*model, A3FToRV3(pos), + timer >= 0.0F ? (timer / MODEL_SHRINK_TIME) : 0.0F, WHITE); +} diff --git a/src/3d/anim_model_shrink.h b/src/3d/anim_model_shrink.h new file mode 100644 index 0000000..39c1a39 --- /dev/null +++ b/src/3d/anim_model_shrink.h @@ -0,0 +1,22 @@ +#ifndef ROCK_PAPER_SCISSORS_DUEL_3D_ANIM_MODEL_SHRINK_H_ +#define ROCK_PAPER_SCISSORS_DUEL_3D_ANIM_MODEL_SHRINK_H_ + +#include "a3f.h" +#include "anims.h" + +class AnimModelShrink : public Anims { + public: + AnimModelShrink(Model *model, A3F pos); + ~AnimModelShrink() override; + + bool is_done() override; + + void do_update(float dt) override; + void do_draw() override; + + private: + A3F pos; + float timer; +}; + +#endif diff --git a/src/constants.h b/src/constants.h index 2bcd69d..c7b654a 100644 --- a/src/constants.h +++ b/src/constants.h @@ -77,4 +77,6 @@ constexpr float QM_MAX_Y_OFFSET = 0.3F; constexpr float QM_ANGLE_TIMER_MAX = 5.0F; constexpr float QM_Y_TIMER_MAX = 3.5F; +constexpr float MODEL_SHRINK_TIME = 1.0F; + #endif diff --git a/wasm_build/Makefile b/wasm_build/Makefile index 8840289..789c579 100644 --- a/wasm_build/Makefile +++ b/wasm_build/Makefile @@ -16,7 +16,8 @@ SOURCES = \ ../src/3d/a3f_conv.cc \ ../src/3d/qm.cc \ ../src/3d/anim_concurrent.cc \ - ../src/3d/anim_sequence.cc + ../src/3d/anim_sequence.cc \ + ../src/3d/anim_model_shrink.cc HEADERS = \ ../src/constants.h \ @@ -31,7 +32,8 @@ HEADERS = \ ../src/3d/qm.h \ ../src/3d/anims.h \ ../src/3d/anim_concurrent.h \ - ../src/3d/anim_sequence.h + ../src/3d/anim_sequence.h \ + ../src/3d/anim_model_shrink.h CXX = source ${HOME}/git/emsdk/emsdk_env.sh && em++ -- 2.49.0