From ef4888f94a5b18220690c69cc77f8c59df7ebd3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9au?= <theau.baton@etu.univ-amu.fr> Date: Sat, 25 May 2024 13:59:32 +0200 Subject: [PATCH] Write spawn method --- ParticleGenerator/res/config/imgui.ini | 2 +- ParticleGenerator/src/Interface/Scene/SceneParticle.cpp | 3 +++ ParticleGenerator/src/Scene/Scenes/MeshGenerator.cpp | 1 - ParticleGenerator/src/Scene/Scenes/MeshGenerator.hpp | 1 - ParticleGenerator/src/Scene/Scenes/Path.cpp | 7 +++---- ParticleGenerator/src/Scene/Scenes/Path.hpp | 1 - ParticleGenerator/src/Scene/Scenes/Physic.cpp | 7 +++---- ParticleGenerator/src/Scene/Scenes/Physic.hpp | 1 - 8 files changed, 10 insertions(+), 13 deletions(-) diff --git a/ParticleGenerator/res/config/imgui.ini b/ParticleGenerator/res/config/imgui.ini index d77fdd2..1e77131 100644 --- a/ParticleGenerator/res/config/imgui.ini +++ b/ParticleGenerator/res/config/imgui.ini @@ -4,5 +4,5 @@ Size=400,400 [Window][Particle Generator] Pos=60,60 -Size=533,291 +Size=838,505 diff --git a/ParticleGenerator/src/Interface/Scene/SceneParticle.cpp b/ParticleGenerator/src/Interface/Scene/SceneParticle.cpp index a1f43e2..68d169e 100644 --- a/ParticleGenerator/src/Interface/Scene/SceneParticle.cpp +++ b/ParticleGenerator/src/Interface/Scene/SceneParticle.cpp @@ -1,5 +1,7 @@ #include "SceneParticle.hpp" +#include "../../Scene/Scene.hpp" + #include <imgui.h> namespace pg::interface { @@ -7,6 +9,7 @@ namespace pg::interface { : _scene(scene) {} void SceneParticle::draw(double) { + ImGui::Text("Particule Number : %i / %i", this->_scene->_particles.size(), this->_scene->_max); ImGui::Text("Scene Particle Interface !"); } } \ No newline at end of file diff --git a/ParticleGenerator/src/Scene/Scenes/MeshGenerator.cpp b/ParticleGenerator/src/Scene/Scenes/MeshGenerator.cpp index 360ca05..71bc6d6 100644 --- a/ParticleGenerator/src/Scene/Scenes/MeshGenerator.cpp +++ b/ParticleGenerator/src/Scene/Scenes/MeshGenerator.cpp @@ -14,7 +14,6 @@ namespace pg::scene { _meshPosition(0.f), _meshRotation(0.f), _generators(), - _particles(), _billboard(), _billboardTexture(), _billboardProgram(), diff --git a/ParticleGenerator/src/Scene/Scenes/MeshGenerator.hpp b/ParticleGenerator/src/Scene/Scenes/MeshGenerator.hpp index c53003d..298501b 100644 --- a/ParticleGenerator/src/Scene/Scenes/MeshGenerator.hpp +++ b/ParticleGenerator/src/Scene/Scenes/MeshGenerator.hpp @@ -20,7 +20,6 @@ namespace pg::scene { glm::vec3 _meshRotation; std::vector<PhysicsParticleGenerator> _generators; - std::vector<std::unique_ptr<Particle>> _particles; Billboard _billboard; Material _billboardTexture; Program _billboardProgram; diff --git a/ParticleGenerator/src/Scene/Scenes/Path.cpp b/ParticleGenerator/src/Scene/Scenes/Path.cpp index 787d4e3..48bd6ee 100644 --- a/ParticleGenerator/src/Scene/Scenes/Path.cpp +++ b/ParticleGenerator/src/Scene/Scenes/Path.cpp @@ -11,7 +11,6 @@ namespace pg::scene { _texture(), _generator(generator, ctrlpoint), _trajectory(&this->_generator), - _particles(), _interface(this, &this->_generator) {} void Path::initialize() { @@ -63,8 +62,7 @@ namespace pg::scene { if(duration_cast<std::chrono::milliseconds>(end - start).count() >= 500) { start = std::chrono::high_resolution_clock::now(); if((5 + this->_particles.size() <= 1024) && true) { - std::vector<std::unique_ptr<pg::Particle>> newParticles = this->_generator.generate(5, static_cast<size_t>(current_time)); - this->_particles.insert(this->_particles.begin(), std::make_move_iterator(newParticles.begin()), std::make_move_iterator(newParticles.end())); + this->spawn(5, current_time); } } @@ -126,6 +124,7 @@ namespace pg::scene { } void Path::spawn(size_t count, double current_time) { - + std::vector<std::unique_ptr<pg::Particle>> newParticles = this->_generator.generate(count, static_cast<size_t>(current_time)); + this->_particles.insert(this->_particles.begin(), std::make_move_iterator(newParticles.begin()), std::make_move_iterator(newParticles.end())); } } \ No newline at end of file diff --git a/ParticleGenerator/src/Scene/Scenes/Path.hpp b/ParticleGenerator/src/Scene/Scenes/Path.hpp index 4105bdf..e6a85f2 100644 --- a/ParticleGenerator/src/Scene/Scenes/Path.hpp +++ b/ParticleGenerator/src/Scene/Scenes/Path.hpp @@ -19,7 +19,6 @@ namespace pg::scene { Trajectory _trajectory; Material _texture; PathParticleGenerator _generator; - std::vector<std::unique_ptr<Particle>> _particles; interface::Path _interface; diff --git a/ParticleGenerator/src/Scene/Scenes/Physic.cpp b/ParticleGenerator/src/Scene/Scenes/Physic.cpp index 68babd3..14248da 100644 --- a/ParticleGenerator/src/Scene/Scenes/Physic.cpp +++ b/ParticleGenerator/src/Scene/Scenes/Physic.cpp @@ -10,7 +10,6 @@ namespace pg::scene { _program(), _texture(), _generator(), - _particles(), _interface(this, &this->_generator) {} void Physic::initialize() { @@ -59,8 +58,7 @@ namespace pg::scene { if(duration_cast<std::chrono::milliseconds>(end - start).count() >= 500) { start = std::chrono::high_resolution_clock::now(); if((5 + this->_particles.size()) <= 1024 && true) { - std::vector<std::unique_ptr<pg::Particle>> newParticles = this->_generator.generate(5, static_cast<size_t>(current_time)); - this->_particles.insert(this->_particles.begin(), std::make_move_iterator(newParticles.begin()), std::make_move_iterator(newParticles.end())); + this->spawn(5, current_time); } } @@ -120,6 +118,7 @@ namespace pg::scene { } void Physic::spawn(size_t count, double current_time) { - + std::vector<std::unique_ptr<pg::Particle>> newParticles = this->_generator.generate(count, static_cast<size_t>(current_time)); + this->_particles.insert(this->_particles.begin(), std::make_move_iterator(newParticles.begin()), std::make_move_iterator(newParticles.end())); } } \ No newline at end of file diff --git a/ParticleGenerator/src/Scene/Scenes/Physic.hpp b/ParticleGenerator/src/Scene/Scenes/Physic.hpp index aaaac8f..6694086 100644 --- a/ParticleGenerator/src/Scene/Scenes/Physic.hpp +++ b/ParticleGenerator/src/Scene/Scenes/Physic.hpp @@ -17,7 +17,6 @@ namespace pg::scene { Material _texture; Billboard _billboards; PhysicsParticleGenerator _generator; - std::vector<std::unique_ptr<Particle>> _particles; interface::Physic _interface; -- GitLab