From 179ab139e1bbd908d731f074e4a9fa3309d97464 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9?= <noe.artru@polytechnique.org> Date: Tue, 23 May 2023 10:41:11 +0200 Subject: [PATCH] combination, scalability de terrain_length --- projet-code/scenes_inf443/base/src/bat.cpp | 3 ++ projet-code/scenes_inf443/base/src/bat.hpp | 2 ++ projet-code/scenes_inf443/base/src/hitbox.cpp | 32 +++++++------------ projet-code/scenes_inf443/base/src/hitbox.hpp | 5 ++- projet-code/scenes_inf443/base/src/scene.cpp | 4 +++ .../scenes_inf443/base/src/settings.cpp | 7 ++-- .../scenes_inf443/base/src/terrain.cpp | 8 +++-- 7 files changed, 31 insertions(+), 30 deletions(-) diff --git a/projet-code/scenes_inf443/base/src/bat.cpp b/projet-code/scenes_inf443/base/src/bat.cpp index 1198b79..e6dc8bc 100644 --- a/projet-code/scenes_inf443/base/src/bat.cpp +++ b/projet-code/scenes_inf443/base/src/bat.cpp @@ -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() diff --git a/projet-code/scenes_inf443/base/src/bat.hpp b/projet-code/scenes_inf443/base/src/bat.hpp index 2b83f21..eae5fb1 100644 --- a/projet-code/scenes_inf443/base/src/bat.hpp +++ b/projet-code/scenes_inf443/base/src/bat.hpp @@ -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; diff --git a/projet-code/scenes_inf443/base/src/hitbox.cpp b/projet-code/scenes_inf443/base/src/hitbox.cpp index 71622fe..4773626 100644 --- a/projet-code/scenes_inf443/base/src/hitbox.cpp +++ b/projet-code/scenes_inf443/base/src/hitbox.cpp @@ -1,28 +1,18 @@ #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 diff --git a/projet-code/scenes_inf443/base/src/hitbox.hpp b/projet-code/scenes_inf443/base/src/hitbox.hpp index 41dc9c5..2e31385 100644 --- a/projet-code/scenes_inf443/base/src/hitbox.hpp +++ b/projet-code/scenes_inf443/base/src/hitbox.hpp @@ -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 diff --git a/projet-code/scenes_inf443/base/src/scene.cpp b/projet-code/scenes_inf443/base/src/scene.cpp index 42b330b..4d1c51f 100644 --- a/projet-code/scenes_inf443/base/src/scene.cpp +++ b/projet-code/scenes_inf443/base/src/scene.cpp @@ -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); diff --git a/projet-code/scenes_inf443/base/src/settings.cpp b/projet-code/scenes_inf443/base/src/settings.cpp index 0ada24c..b052197 100644 --- a/projet-code/scenes_inf443/base/src/settings.cpp +++ b/projet-code/scenes_inf443/base/src/settings.cpp @@ -1,8 +1,9 @@ #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; } diff --git a/projet-code/scenes_inf443/base/src/terrain.cpp b/projet-code/scenes_inf443/base/src/terrain.cpp index 739a9ab..18c3b94 100644 --- a/projet-code/scenes_inf443/base/src/terrain.cpp +++ b/projet-code/scenes_inf443/base/src/terrain.cpp @@ -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); + + } } -- GitLab