]> git.seodisparate.com - RockPaperScissorsDuel/commitdiff
Add anim_model_shrink
authorStephen Seo <seo.disparate@gmail.com>
Tue, 17 Jan 2023 05:18:22 +0000 (14:18 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Tue, 17 Jan 2023 05:18:22 +0000 (14:18 +0900)
CMakeLists.txt
src/3d/anim_model_shrink.cc [new file with mode: 0644]
src/3d/anim_model_shrink.h [new file with mode: 0644]
src/constants.h
wasm_build/Makefile

index 60f180fab1717c9c148811c2fd358b4d451b4c43..44b51f687168d72bdff82b67e6892d92ea2422f8 100644 (file)
@@ -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 (file)
index 0000000..49270cd
--- /dev/null
@@ -0,0 +1,22 @@
+#include "anim_model_shrink.h"
+
+// third party includes
+#include <raylib.h>
+
+// 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 (file)
index 0000000..39c1a39
--- /dev/null
@@ -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
index 2bcd69d15a5b8de8bcfb97a45614b7f48c6a0fcc..c7b654ad752cae30b4315b7fce78269940ac988e 100644 (file)
@@ -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
index 8840289f1f037a5b82eda22d90d1c8f157ae722f..789c57917f9525769e458f52298ee928db21955b 100644 (file)
@@ -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++