Skip to content
Snippets Groups Projects
Commit 179ab139 authored by Noé's avatar Noé
Browse files

combination, scalability de terrain_length

parent fa25bd96
No related branches found
No related tags found
No related merge requests found
......@@ -20,6 +20,9 @@ void bat::initialize_mvt(vec3 p, numarray<vec3> key_positions, numarray<float> k
timer_mvt.t_min = key_times[0];
timer_mvt.t_max = key_times[NT - 1];
timer_mvt.t = timer_mvt.t_min;
//bat hitbox
bat_hitbox.initialize_hitbox(1, { {0,0,0} }, { size*6 }, pos);
}
void bat::update_mvt()
......
......@@ -2,6 +2,7 @@
#include "cgp/cgp.hpp"
#include "key_positions_structure.hpp"
#include "hitbox.hpp"
using namespace cgp;
......@@ -12,6 +13,7 @@ struct bat{
bool isdead;
vec3 pos;
vec3 pos_futur;
hitbox bat_hitbox;
// Timer used for the interpolation of the position
cgp::timer_interval timer_mvt;
......
#include "hitbox.hpp"
bool hitbox::is_in_hitbox(vec3 pos) {
void hitbox::initialize_hitbox(int _N, std::vector<vec3> _center, std::vector<double> _r, vec3 shift) {
N = _N;
center.resize(N);
r.resize(N);
for (int i = 0; i < N; i++) {
if (norm(pos - pos[i]) < r[i]) return true;
center[i] = _center[i] + shift;
r[i] = _r[i];
}
return false;
}
void hitbox::initialize_bat(double scale, vec3 posB, vec3 posWL, vec3 posWR)
{
N = 3;
pos.resize(N);
r.resize(N);
pos[0] = posB;
r[0] = 1 * scale;
pos[1] = posWL;
r[1] = 0.5 * scale;
pos[2] = posWR;
r[2] = 0.5 * scale;
}
void hitbox::update_bat(vec3 posB, vec3 posWL, vec3 posWR) {
pos[0] = posB;
pos[1] = posWL;
pos[2] = posWR;
bool hitbox::is_in_hitbox(vec3 pos) {
for (int i = 0; i < N; i++) {
if (norm(pos - center[i]) < r[i]) return true;
}
return false;
}
\ No newline at end of file
......@@ -7,10 +7,9 @@ using namespace cgp;
struct hitbox {
int N;
std::vector<vec3> pos;
std::vector<vec3> center;
std::vector<double> r;
void initialize_bat(double scale, vec3 posB, vec3 posWL, vec3 posWR);
void update_bat(vec3 posB, vec3 posWL, vec3 posWR);
void initialize_hitbox(int _N, std::vector<vec3> _center, std::vector<double> _r, vec3 shift);
bool is_in_hitbox(vec3 pos);
};
\ No newline at end of file
......@@ -290,6 +290,10 @@ void scene_structure::display_projectiles() {
projectiles.simulate(timer.scale * 0.03f);
for (int i = 0; i < projectiles.N; i++) {
for (int j = 0; j < bats.N; j++) {
if (bats.bats_prop[j].bat_hitbox.is_in_hitbox(projectiles.projectiles_prop[i].pos)) bats.bats_prop[j].isdead = true;
}
projectiles.mesh.model.translation = projectiles.projectiles_prop[i].pos;
projectiles.mesh.material.color = projectiles.projectiles_prop[i].color;
draw(projectiles.mesh, environment);
......
#include "settings.hpp"
int _num_trees = 200;
int _num_grass = 200;
float _terrain_length = 250;
float _terrain_length = 500;
int _num_trees = _terrain_length * 3 / 2;
int _num_grass = _terrain_length * 3 / 2;
int num_trees() { return _num_trees; }
int num_grass() { return _num_grass; }
......
......@@ -18,7 +18,7 @@ float evaluate_terrain_height(float x, float y)
}
perlin_noise_parameters parameters;
parameters.terrain_height = 25;
parameters.terrain_height = terrain_length()/10;
parameters.octave = 9;
parameters.frequency_gain = 2.4;
parameters.persistency = 0.33;
......@@ -39,7 +39,7 @@ mesh create_terrain_mesh(int N)
terrain.color.resize(N * N);
perlin_noise_parameters parameters;
parameters.terrain_height = 6;
parameters.terrain_height = terrain_length()*6/250;
parameters.octave = 6;
parameters.frequency_gain = 17;
parameters.persistency = 0.26;
......@@ -68,8 +68,10 @@ mesh create_terrain_mesh(int N)
//blending parameter for color
perlin_noise = parameters.terrain_height * noise_perlin(vec2(3 * x / terrain_length(), 3 * y / terrain_length()), parameters.octave, parameters.persistency, parameters.frequency_gain);
float b = std::min(1.0, exp((z + perlin_noise - 20) / 2) / exp(6));
float b = std::min(1.0, exp((z + perlin_noise - terrain_length()/10 + 5) / 2) / exp(6));
terrain.color[kv + N * ku] = std::max(0.0f,(1-b))*vec3(0,0.3f,0) + b * 1.5 * vec3(1, 1, 1);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment