colored balls
This commit is contained in:
parent
8468789a34
commit
78a597964b
2
Makefile
2
Makefile
@ -103,10 +103,10 @@ MAIN_OBJS = \
|
|||||||
src/glad.o \
|
src/glad.o \
|
||||||
src/opengl.o \
|
src/opengl.o \
|
||||||
src/render.o \
|
src/render.o \
|
||||||
src/collision.o \
|
|
||||||
src/collision2.o \
|
src/collision2.o \
|
||||||
src/update.o \
|
src/update.o \
|
||||||
src/unparse.o \
|
src/unparse.o \
|
||||||
|
src/color.o \
|
||||||
$(patsubst %.glsl,%.glsl.o,$(wildcard src/shader/*.glsl)) \
|
$(patsubst %.glsl,%.glsl.o,$(wildcard src/shader/*.glsl)) \
|
||||||
$(patsubst %.data,%.data.o,$(wildcard src/level/*.data)) \
|
$(patsubst %.data,%.data.o,$(wildcard src/level/*.data)) \
|
||||||
$(patsubst %.data,%.data.o,$(wildcard src/font/*.data)) \
|
$(patsubst %.data,%.data.o,$(wildcard src/font/*.data)) \
|
||||||
|
|||||||
5
include/color.hpp
Normal file
5
include/color.hpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "math/float_types.hpp"
|
||||||
|
|
||||||
|
vec3 hsv_to_rgb(float h, float s, float v);
|
||||||
@ -15,6 +15,7 @@ extern "C" {
|
|||||||
float ball_y;
|
float ball_y;
|
||||||
float ball_dx;
|
float ball_dx;
|
||||||
float ball_dy;
|
float ball_dy;
|
||||||
|
double launch_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_BALLS 20
|
#define MAX_BALLS 20
|
||||||
|
|||||||
26
src/color.cpp
Normal file
26
src/color.cpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#include "color.hpp"
|
||||||
|
|
||||||
|
vec3 hsv_to_rgb(float h, float s, float v)
|
||||||
|
{
|
||||||
|
if (s == 0.0)
|
||||||
|
return vec3(v, v, v);
|
||||||
|
int i = h * 6.0f;
|
||||||
|
float f = (h * 6.0f) - i;
|
||||||
|
float p = v * (1.0f - s);
|
||||||
|
float q = v * (1.0f - s * f);
|
||||||
|
float t = v * (1.0f - s * (1.0f - f));
|
||||||
|
i = i % 6;
|
||||||
|
if (i == 0)
|
||||||
|
return vec3(v, t, p);
|
||||||
|
if (i == 1)
|
||||||
|
return vec3(q, v, p);
|
||||||
|
if (i == 2)
|
||||||
|
return vec3(p, v, t);
|
||||||
|
if (i == 3)
|
||||||
|
return vec3(p, q, v);
|
||||||
|
if (i == 4)
|
||||||
|
return vec3(t, p, v);
|
||||||
|
if (i == 5)
|
||||||
|
return vec3(v, p, q);
|
||||||
|
return vec3(0, 0, 0);
|
||||||
|
}
|
||||||
@ -5,9 +5,8 @@
|
|||||||
#include "glad/glad.h"
|
#include "glad/glad.h"
|
||||||
|
|
||||||
#include "unparse.h"
|
#include "unparse.h"
|
||||||
#include "collision.hpp"
|
|
||||||
#include "collision2.hpp"
|
|
||||||
#include "render.hpp"
|
#include "render.hpp"
|
||||||
|
#include "color.hpp"
|
||||||
#include "math/float_types.hpp"
|
#include "math/float_types.hpp"
|
||||||
#include "math/transform.hpp"
|
#include "math/transform.hpp"
|
||||||
|
|
||||||
@ -234,7 +233,11 @@ void render(mesh paddle_mesh,
|
|||||||
|
|
||||||
mat4x4 trans = a * t * rx;
|
mat4x4 trans = a * t * rx;
|
||||||
mat3x3 normal_trans = submatrix(rx, 3, 3);
|
mat3x3 normal_trans = submatrix(rx, 3, 3);
|
||||||
vec4 base_color = vec4(0.5f, 0.5f, 0.5f, 1.0f);
|
//vec4 base_color = vec4(0.5f, 0.5f, 0.5f, 1.0f);
|
||||||
|
float hue = state->time - ball.launch_time;
|
||||||
|
hue = hue - floorf(hue);
|
||||||
|
vec3 c = hsv_to_rgb(hue, 1.0f, 1.0f);
|
||||||
|
vec4 base_color = vec4(c.x, c.y, c.z, 1.0f);
|
||||||
//vec3 light_pos = vec3(-1, -1, 1);
|
//vec3 light_pos = vec3(-1, -1, 1);
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, ball_mesh.vtx);
|
glBindBuffer(GL_ARRAY_BUFFER, ball_mesh.vtx);
|
||||||
|
|||||||
@ -49,6 +49,7 @@ void launch_ball(struct game_state * state, double time)
|
|||||||
ball.ball_y = 25.0f;
|
ball.ball_y = 25.0f;
|
||||||
ball.ball_dx = d.x;
|
ball.ball_dx = d.x;
|
||||||
ball.ball_dy = -d.y;
|
ball.ball_dy = -d.y;
|
||||||
|
ball.launch_time = time;
|
||||||
|
|
||||||
state->balls_launched += 1;
|
state->balls_launched += 1;
|
||||||
}
|
}
|
||||||
@ -122,6 +123,8 @@ void update_ball(struct game_state * state, struct ball_state& ball, double time
|
|||||||
bool collided = aabb_circle_collision(paddle_position, ball_position, paddle_bounds, &cd);
|
bool collided = aabb_circle_collision(paddle_position, ball_position, paddle_bounds, &cd);
|
||||||
if (collided) {
|
if (collided) {
|
||||||
ball_collision_response(ball, cd);
|
ball_collision_response(ball, cd);
|
||||||
|
ball.ball_y = 25.0f;
|
||||||
|
ball.ball_dy = -fabsf(ball.ball_dy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user