From 38abd77047d09efe53da17f0ba9ab06a52330c9e Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Tue, 17 Jan 2023 14:02:17 +0900 Subject: [PATCH] Add "anim_sequence" --- CMakeLists.txt | 3 ++- src/3d/anim_sequence.cc | 26 ++++++++++++++++++++++++++ src/3d/anim_sequence.h | 25 +++++++++++++++++++++++++ wasm_build/Makefile | 6 ++++-- 4 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 src/3d/anim_sequence.cc create mode 100644 src/3d/anim_sequence.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 182b315..60f180f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,7 @@ set(RPSDuelNative_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/a3f_conv.cc" "${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" ) set(RPSDuelNative_HEADERS @@ -40,7 +41,7 @@ set(RPSDuelNative_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/a3f_conv.h" "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/qm.h" "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/anims.h" - "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/anim_concurrent.h" + "${CMAKE_CURRENT_SOURCE_DIR}/src/3d/anim_sequence.h" ) add_executable(RPSDuelNative ${RPSDuelNative_SOURCES}) diff --git a/src/3d/anim_sequence.cc b/src/3d/anim_sequence.cc new file mode 100644 index 0000000..4dd1560 --- /dev/null +++ b/src/3d/anim_sequence.cc @@ -0,0 +1,26 @@ +#include "anim_sequence.h" + +AnimSequence::AnimSequence() {} + +AnimSequence::~AnimSequence() {} + +bool AnimSequence::is_done() { return anims.empty(); } + +void AnimSequence::do_update(float dt) { + if (!anims.empty()) { + anims.front()->do_update(dt); + if (anims.front()->is_done()) { + anims.pop_front(); + } + } +} + +void AnimSequence::do_draw(Model *m) { + if (!anims.empty()) { + anims.front()->do_draw(m); + } +} + +void AnimSequence::push_anim(UPtr &&p) { + anims.emplace_back(std::forward(p)); +} diff --git a/src/3d/anim_sequence.h b/src/3d/anim_sequence.h new file mode 100644 index 0000000..d88ddab --- /dev/null +++ b/src/3d/anim_sequence.h @@ -0,0 +1,25 @@ +#ifndef ROCK_PAPER_SCISSORS_DUEL_ANIM_SEQUENCE_H_ +#define ROCK_PAPER_SCISSORS_DUEL_ANIM_SEQUENCE_H_ + +#include "anims.h" + +// standard library includes +#include + +class AnimSequence : public Anims { + public: + AnimSequence(); + ~AnimSequence() override; + + bool is_done() override; + + void do_update(float dt) override; + void do_draw(Model *m) override; + + void push_anim(UPtr &&p); + + private: + std::list anims; +}; + +#endif diff --git a/wasm_build/Makefile b/wasm_build/Makefile index 8f98684..8840289 100644 --- a/wasm_build/Makefile +++ b/wasm_build/Makefile @@ -15,7 +15,8 @@ SOURCES = \ ../src/3d/a3f.cc \ ../src/3d/a3f_conv.cc \ ../src/3d/qm.cc \ - ../src/3d/anim_concurrent.cc + ../src/3d/anim_concurrent.cc \ + ../src/3d/anim_sequence.cc HEADERS = \ ../src/constants.h \ @@ -29,7 +30,8 @@ HEADERS = \ ../src/3d/a3f_conv.h \ ../src/3d/qm.h \ ../src/3d/anims.h \ - ../src/3d/anim_concurrent.h + ../src/3d/anim_concurrent.h \ + ../src/3d/anim_sequence.h CXX = source ${HOME}/git/emsdk/emsdk_env.sh && em++ -- 2.49.0