1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2025-02-15 09:05:52 +00:00

anim editor: only allow selecting bones from currently active sprite & keyframe

fixes crashing and weird behavior
This commit is contained in:
fgenesis 2025-02-01 05:06:51 +01:00
parent 51cf2f75f5
commit c9365a3266

View file

@ -1968,9 +1968,14 @@ void AnimationEditor::updateEditingBone()
SkeletalSprite *nearestSpr = NULL;
const Vector& p = core->mouse.position;
int page = -1, idx = -1;
for(size_t i = 0; i < NumPages; ++i)
// DON'T make this a loop going over all pages. Only use the current page.
// Causes problems when editing bones on a foreign sprite since we can't assign a keyframe cleanly.
// (Because that sprite may not have enough keyframes, or there is no keyframe at the time we're trying to edit.
// The former just crashes; the latter causes weirdness and accidental edits to unrelated/unintended keyframes)
//for(size_t i = 0; i < NumPages; ++i)
{
SkeletalSprite& spr = pages[i].editSprite;
//SkeletalSprite& spr = pages[i].editSprite;
SkeletalSprite& spr = *getCurrentPageSprite();
if(spr.isLoaded())
{
int k = spr.findSelectableBoneIdxClosestTo(p, true);
@ -1983,7 +1988,8 @@ void AnimationEditor::updateEditingBone()
mind = d;
nearest = b;
nearestSpr = &spr;
page = i;
//page = i;
page = curPage;
idx = k;
}
}