48 lines
		
	
	
		
			924 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			924 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef Squircle_h_
 | |
| #define Squircle_h_
 | |
| 
 | |
| #include "glm/glm.hpp"
 | |
| #include "SDL.h"
 | |
| #include "Game.hpp"
 | |
| #include "filesystem.hpp"
 | |
| 
 | |
| class Squircle : public Game
 | |
| {
 | |
| 
 | |
| private:
 | |
| 
 | |
|     enum Mode : bool
 | |
|     {
 | |
|         SQUIRCLE,
 | |
|         UNSQUIRCLE
 | |
|     };
 | |
| 
 | |
|     enum Spin
 | |
|     {
 | |
|         NEGATIVE = -1,
 | |
|         NONE,
 | |
|         POSITIVE = 1
 | |
|     };
 | |
| 
 | |
|     GLuint base_texture_shader_location = 0, base_texture_id = 0, flat_program = 0, unmapped_vao = 0, mapped_vao = 0,
 | |
|         mode_uniform_location = 0, transformation_uniform_location = 0;
 | |
|     int circle_vertices_count = 0, image_index = 0;
 | |
|     Mode mode = Mode::SQUIRCLE;
 | |
|     glm::mat4 transformation = glm::mat4(1.0f);
 | |
|     Spin spin_z = Spin::NONE, spin_x = Spin::NONE;
 | |
| 
 | |
|     typedef Game super;
 | |
|     void load_gl_context();
 | |
|     GLuint load_file_into_texture(fs::path) const;
 | |
|     void load_image_index(int);
 | |
|     void update();
 | |
| 
 | |
| public:
 | |
| 
 | |
|     Squircle();
 | |
|     void respond(SDL_Event&);
 | |
| 
 | |
| };
 | |
| 
 | |
| #endif
 |