Fix animation break

This commit is contained in:
NaiJi ✨ 2022-02-17 22:20:30 +03:00
parent ed3330cb97
commit 98273d3a39
5 changed files with 17 additions and 6 deletions

View File

@ -2,7 +2,7 @@
int main() 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); ApplicationSFML app(&window);
if (app.init()) if (app.init())
app.run(); app.run();

View File

@ -163,6 +163,7 @@ void ClassicEditor::update(kku::UpdateData&& updatedata)
void ClassicEditor::display() const void ClassicEditor::display() const
{ {
_graphics_manager->display(); _graphics_manager->display();
_selection_manager->display();
} }
void ClassicEditor::recalculate(const kku::microsec& timestamp) void ClassicEditor::recalculate(const kku::microsec& timestamp)

View File

@ -51,3 +51,13 @@ bool SelectionManager::isMultiselectionEnabled() const
{ {
return _multiselection_enabled; 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();
}
}

View File

@ -19,6 +19,8 @@ public:
void enableMultiselection(bool enable = true); void enableMultiselection(bool enable = true);
bool isMultiselectionEnabled() const; bool isMultiselectionEnabled() const;
void display() const;
private: private:
std::vector<ClassicMockNote*> _selected_notes; std::vector<ClassicMockNote*> _selected_notes;
bool _multiselection_enabled; bool _multiselection_enabled;

View File

@ -118,8 +118,6 @@ void ClassicSceneGraphicsManager::display(const std::vector<MockElement>& elemen
} }
sprite->display(); 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()) if (offset < (*_first)->getPerfectOffset())
{ {
Iterator note_iterator = _first; Iterator note_iterator = _first;
while (note_iterator != _timeline->begin() && !isVisiblyClose(note_iterator, offset)) while (note_iterator != _timeline->begin() && isVisiblyClose(note_iterator, offset))
{ {
--note_iterator; --note_iterator;
} }
@ -194,7 +192,7 @@ void ClassicSceneGraphicsManager::fetchFirstNote(const kku::microsec& offset)
&& offset <= note->getPerfectOffset()) && offset <= note->getPerfectOffset())
{ {
note->setState(ClassicNote::State::FLYING); 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 else
@ -229,7 +227,7 @@ void ClassicSceneGraphicsManager::fetchLastNote(const kku::microsec& offset)
&& offset <= note->getPerfectOffset()) && offset <= note->getPerfectOffset())
{ {
note->setState(ClassicNote::State::FLYING); 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; ++note_iterator;