"${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
"${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})
--- /dev/null
+#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);
+}
--- /dev/null
+#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
constexpr float QM_ANGLE_TIMER_MAX = 5.0F;
constexpr float QM_Y_TIMER_MAX = 3.5F;
+constexpr float MODEL_SHRINK_TIME = 1.0F;
+
#endif
../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 \
../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++