diff options
author | Adrian Kummerlaender | 2019-02-24 12:25:08 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2019-02-24 12:25:08 +0100 |
commit | 1ab5f3db018a3169ad6074fc2b75d44c3a45dd16 (patch) | |
tree | d3229fb41d119db2a19810d4f625e0e7d3421e24 /src/main.cc | |
parent | 389da8159978571e8156ff7692bc595d957e846e (diff) | |
download | compustream-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.cc | 15 |
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); } |