diff --git a/ParticleGenerator/res/config/imgui.ini b/ParticleGenerator/res/config/imgui.ini index d77fdd2fdb04df3ca2151c685f2be3249fbb6f12..1e77131901dcf5b7e126f8d05fb0515ea7ed300a 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 a1f43e23b26f3c0f46933331cb3083426ffb2a65..68d169e8035ae8f23cc5522291a4f3507b93676c 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 360ca05036ce17e13fccafced61911c8df35d790..71bc6d607df055bc56d561079b9c91fcd0bd12a9 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 c53003d824e854174c85b9c2144a6057591bd01d..298501b87377a2c1f85f945fdcd21e323099ed5c 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 787d4e345baa6947a3422cd5efb89ae957b17c1e..48bd6ee1480ac77fb189b6a94d2d527fef7a6254 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 4105bdf6494eccbe030f152d9a8a5d4cce736bff..e6a85f291fce1f92f0ba01824b2a7e20c551ac8e 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 68babd395d38c1fcf41102256670bdf47459d8e1..14248da54cc39763c7d90a3504ca3ae377d12fcb 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 aaaac8fd11bea1510a4c31bd5e742b3e2cc95899..6694086238e5bfcb9fdc39005d96db85860b26a9 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;