From 98273d3a39caf5678820e7f562afe2525da22bd8 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Thu, 17 Feb 2022 22:20:30 +0300 Subject: [PATCH] Fix animation break --- src/main.cpp | 2 +- src/modes/classicmode/editor/classiceditor.cpp | 1 + src/modes/classicmode/editor/selectionmanager.cpp | 10 ++++++++++ src/modes/classicmode/editor/selectionmanager.h | 2 ++ .../graphics/classicscenegraphicsmanager.cpp | 8 +++----- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e4d0c35..40a076a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,7 +2,7 @@ int main() { - sf::RenderWindow window(sf::VideoMode{1280, 720}, "Test", sf::Style::Default); + sf::RenderWindow window(sf::VideoMode{1280, 720}, "Test", sf::Style::Fullscreen); ApplicationSFML app(&window); if (app.init()) app.run(); diff --git a/src/modes/classicmode/editor/classiceditor.cpp b/src/modes/classicmode/editor/classiceditor.cpp index 99c7cd5..49ecaf9 100644 --- a/src/modes/classicmode/editor/classiceditor.cpp +++ b/src/modes/classicmode/editor/classiceditor.cpp @@ -163,6 +163,7 @@ void ClassicEditor::update(kku::UpdateData&& updatedata) void ClassicEditor::display() const { _graphics_manager->display(); + _selection_manager->display(); } void ClassicEditor::recalculate(const kku::microsec& timestamp) diff --git a/src/modes/classicmode/editor/selectionmanager.cpp b/src/modes/classicmode/editor/selectionmanager.cpp index 835a165..ec7330d 100644 --- a/src/modes/classicmode/editor/selectionmanager.cpp +++ b/src/modes/classicmode/editor/selectionmanager.cpp @@ -51,3 +51,13 @@ bool SelectionManager::isMultiselectionEnabled() const { return _multiselection_enabled; } + +void SelectionManager::display() const +{ + for (const auto& note : _selected_notes) + for (const auto& element : note->getElements()) + if (element.selected) + { + element.selection->display(); + } +} diff --git a/src/modes/classicmode/editor/selectionmanager.h b/src/modes/classicmode/editor/selectionmanager.h index 8238fca..5ff3bbe 100644 --- a/src/modes/classicmode/editor/selectionmanager.h +++ b/src/modes/classicmode/editor/selectionmanager.h @@ -19,6 +19,8 @@ public: void enableMultiselection(bool enable = true); bool isMultiselectionEnabled() const; + void display() const; + private: std::vector _selected_notes; bool _multiselection_enabled; diff --git a/src/modes/classicmode/graphics/classicscenegraphicsmanager.cpp b/src/modes/classicmode/graphics/classicscenegraphicsmanager.cpp index 26c0803..2a2f110 100644 --- a/src/modes/classicmode/graphics/classicscenegraphicsmanager.cpp +++ b/src/modes/classicmode/graphics/classicscenegraphicsmanager.cpp @@ -118,8 +118,6 @@ void ClassicSceneGraphicsManager::display(const std::vector& elemen } sprite->display(); - if (elements[i].selected) - elements[i].selection->display(); } } @@ -181,7 +179,7 @@ void ClassicSceneGraphicsManager::fetchFirstNote(const kku::microsec& offset) if (offset < (*_first)->getPerfectOffset()) { Iterator note_iterator = _first; - while (note_iterator != _timeline->begin() && !isVisiblyClose(note_iterator, offset)) + while (note_iterator != _timeline->begin() && isVisiblyClose(note_iterator, offset)) { --note_iterator; } @@ -194,7 +192,7 @@ void ClassicSceneGraphicsManager::fetchFirstNote(const kku::microsec& offset) && offset <= note->getPerfectOffset()) { note->setState(ClassicNote::State::FLYING); - note->setGraphics(this, kku::TimeRange{offset, note->getPerfectOffset()}); + note->setGraphics(this, kku::TimeRange{note->getPerfectOffset() - _visibility_offset, note->getPerfectOffset()}); } } else @@ -229,7 +227,7 @@ void ClassicSceneGraphicsManager::fetchLastNote(const kku::microsec& offset) && offset <= note->getPerfectOffset()) { note->setState(ClassicNote::State::FLYING); - note->setGraphics(this, kku::TimeRange{offset, note->getPerfectOffset()}); + note->setGraphics(this, kku::TimeRange{note->getPerfectOffset() - _visibility_offset, note->getPerfectOffset()}); } ++note_iterator;