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()
{
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();

View File

@ -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)

View File

@ -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();
}
}

View File

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

View File

@ -118,8 +118,6 @@ void ClassicSceneGraphicsManager::display(const std::vector<MockElement>& 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;