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/opengl.o \
|
||||
src/render.o \
|
||||
src/collision.o \
|
||||
src/collision2.o \
|
||||
src/update.o \
|
||||
src/unparse.o \
|
||||
src/color.o \
|
||||
$(patsubst %.glsl,%.glsl.o,$(wildcard src/shader/*.glsl)) \
|
||||
$(patsubst %.data,%.data.o,$(wildcard src/level/*.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_dx;
|
||||
float ball_dy;
|
||||
double launch_time;
|
||||
};
|
||||
|
||||
#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 "unparse.h"
|
||||
#include "collision.hpp"
|
||||
#include "collision2.hpp"
|
||||
#include "render.hpp"
|
||||
#include "color.hpp"
|
||||
#include "math/float_types.hpp"
|
||||
#include "math/transform.hpp"
|
||||
|
||||
@ -234,7 +233,11 @@ void render(mesh paddle_mesh,
|
||||
|
||||
mat4x4 trans = a * t * rx;
|
||||
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);
|
||||
|
||||
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_dx = d.x;
|
||||
ball.ball_dy = -d.y;
|
||||
ball.launch_time = time;
|
||||
|
||||
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);
|
||||
if (collided) {
|
||||
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