#include "game.h" class EnlongatingCylinder : public GameObject { public: float time_count = 0; void movement(float ms) override { time_count += ms; for(auto &m : models){ m = scale(m, vec3(1, .1 * sin(time_count/100.0) + 1, 1)); } } }; class FloorPanel : public SolidObject { public: FloorPanel() { collision = true; }; void add_location_size(vec3 location, vec3 size){ models.push_back(translate(mat4(1.0), location)); models[models.size() - 1] = scale(models[models.size() - 1], size); } virtual void trigger_action(size_t instance, int action) override; ssize_t is_inside(vec3, float) override; }; class WaterTank : public SolidObject { public: WaterTank() { collision = true; }; void add_location_size(vec3 location, vec3 size){ models.push_back(translate(mat4(1.0), location)); models[models.size() - 1] = scale(models[models.size() - 1], size); } // virtual void trigger_action(size_t instance, int action) override; ssize_t is_inside(vec3, float) override; }; class VanishBlock : public FloorPanel { vector instance_countdowns; public: void add_location_size(vec3 location, vec3 size){ models.push_back(translate(mat4(1.0), location)); models[models.size() - 1] = scale(models[models.size() - 1], size); instance_countdowns.push_back(-1); } void trigger_action(size_t instance, int action) override; void movement(float time) override; }; class SlipperyBlock : public FloorPanel { public: void trigger_action(size_t instance, int action) override; };