sim_ressorts/labo_physique/ParticleSimGLCanvas.h

52 lines
1.1 KiB
C
Raw Normal View History

2024-02-27 13:20:47 -05:00
#pragma once
/**
* @file ParticleSimGLCanvas.h
*
* @brief Classe Canvas pour l'affichage via OpenGL.
*
2024-03-12 21:19:55 -04:00
* Nom: William Nolin
* Code permanent : NOLW76060101
* Email : william.nolin.1@ens.etsmtl.ca
2024-02-27 13:20:47 -05:00
*
*/
#include <nanogui/canvas.h>
#include <nanogui/shader.h>
#include "ParticleSimApplication.h"
/**
* Classe canvas OpenGL pour afficher des points et des segments.
*/
class ParticleSimGLCanvas : public nanogui::Canvas
{
public:
ParticleSimGLCanvas(ParticleSimApplication* _app);
~ParticleSimGLCanvas();
virtual void draw_contents() override;
virtual bool mouse_button_event(const nanogui::Vector2i &p, int button, bool down, int modifiers) override;
virtual bool mouse_drag_event(const nanogui::Vector2i &p, const nanogui::Vector2i &rel, int button, int modifiers) override;
void applyMouseSpring();
private:
void convertAndStoreMousePos(const nanogui::Vector2i& mousePos);
nanogui::ref<nanogui::Shader> m_particleShader;
ParticleSimApplication* m_app;
gti320::Particle* m_selectedParticle;
double m_mouseStiffness;
gti320::Vector2f m_mousePos;
gti320::Vector<float> m_circle;
};