aboutsummaryrefslogtreecommitdiff
path: root/src/main.cc
diff options
context:
space:
mode:
authorAdrian Kummerlaender2019-02-24 12:25:08 +0100
committerAdrian Kummerlaender2019-02-24 12:25:08 +0100
commit1ab5f3db018a3169ad6074fc2b75d44c3a45dd16 (patch)
treed3229fb41d119db2a19810d4f625e0e7d3421e24 /src/main.cc
parent389da8159978571e8156ff7692bc595d957e846e (diff)
downloadcompustream-1ab5f3db018a3169ad6074fc2b75d44c3a45dd16.tar
compustream-1ab5f3db018a3169ad6074fc2b75d44c3a45dd16.tar.gz
compustream-1ab5f3db018a3169ad6074fc2b75d44c3a45dd16.tar.bz2
compustream-1ab5f3db018a3169ad6074fc2b75d44c3a45dd16.tar.lz
compustream-1ab5f3db018a3169ad6074fc2b75d44c3a45dd16.tar.xz
compustream-1ab5f3db018a3169ad6074fc2b75d44c3a45dd16.tar.zst
compustream-1ab5f3db018a3169ad6074fc2b75d44c3a45dd16.zip
Smoothen mouse interaction
Diffstat (limited to 'src/main.cc')
-rw-r--r--src/main.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main.cc b/src/main.cc
index c9fb347..4621d30 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -106,6 +106,10 @@ int renderWindow() {
auto tick_buffers = { lattice_a->getBuffer(), lattice_b->getBuffer(), fluid->getBuffer() };
auto tock_buffers = { lattice_b->getBuffer(), lattice_a->getBuffer(), fluid->getBuffer() };
+ int prevLatticeMouseState = 0;
+ int prevLatticeMouseX = 0;
+ int prevLatticeMouseY = 0;
+
window.render([&](bool window_size_changed) {
if ( pause_key.wasClicked() ) {
update_lattice = !update_lattice;
@@ -131,12 +135,19 @@ int renderWindow() {
{
auto guard = collide_shader->use();
+ collide_shader->setUniform("prevMouseState", prevLatticeMouseState);
+ collide_shader->setUniform("prevMousePos", prevLatticeMouseX, prevLatticeMouseY);
+
const auto m = window.getMouse();
const float latticeMouseX = float(std::get<1>(m)) / window.getWidth() * world_width + nX/2;
const float latticeMouseY = float(std::get<2>(m)) / window.getHeight() * world_height + nY/2;
- collide_shader->setUniform("mouseState", std::get<0>(m));
- collide_shader->setUniform("mousePos", latticeMouseX, latticeMouseY);
+ collide_shader->setUniform("currMouseState", std::get<0>(m));
+ collide_shader->setUniform("currMousePos", latticeMouseX, latticeMouseY);
+
+ prevLatticeMouseState = std::get<0>(m);
+ prevLatticeMouseX = latticeMouseX;
+ prevLatticeMouseY = latticeMouseY;
collide_shader->dispatch(nX, nY);
}