1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2025-07-04 15:04:36 +00:00

anim editor: highlight bspline'd bones

This commit is contained in:
fgenesis 2022-09-24 04:58:14 +02:00
parent cfa5d45932
commit cf70cfe48d
2 changed files with 33 additions and 8 deletions

View file

@ -858,10 +858,10 @@ void AnimationEditor::nextKey()
editSprite->setTime(k->t); editSprite->setTime(k->t);
else else
currentKey --; currentKey --;
}
}
applyBoneToSplineGrid(); onKeyframeChanged();
}
}
} }
void AnimationEditor::prevKey() void AnimationEditor::prevKey()
@ -891,11 +891,11 @@ void AnimationEditor::prevKey()
SkeletalKeyframe *k = editSprite->getCurrentAnimation()->getKeyframe(currentKey); SkeletalKeyframe *k = editSprite->getCurrentAnimation()->getKeyframe(currentKey);
if (k) if (k)
editSprite->setTime(k->t); editSprite->setTime(k->t);
}
}
}
applyBoneToSplineGrid(); onKeyframeChanged();
}
}
}
} }
@ -1350,7 +1350,7 @@ void AnimationEditor::loadFile()
if (editingStrip) if (editingStrip)
editStripKey(); editStripKey();
applyBoneToSplineGrid(); onKeyframeChanged();
} }
void AnimationEditor::goToTitle() void AnimationEditor::goToTitle()
@ -1465,9 +1465,11 @@ void AnimationEditor::updateRenderBorders()
for (size_t i = 0; i < editSprite->bones.size(); ++i) for (size_t i = 0; i < editSprite->bones.size(); ++i)
{ {
editSprite->bones[i]->renderBorder = renderBorders; Bone *b = editSprite->bones[i];
editSprite->bones[i]->renderCenter = renderBorders; b->renderBorder = renderBorders;
editSprite->bones[i]->borderAlpha = 0.8f; b->renderCenter = renderBorders;
b->borderAlpha = 0.8f;
b->renderBorderColor = Vector(1,1,1);
} }
} }
@ -1535,6 +1537,27 @@ void AnimationEditor::updateTimelineGrid()
gridsize->setText(os.str()); gridsize->setText(os.str());
} }
void AnimationEditor::onKeyframeChanged()
{
applyBoneToSplineGrid();
Animation *a = editSprite->getCurrentAnimation();
updateRenderBorders(); // restore default state
for(size_t i = 0; i < a->interpolators.size(); ++i)
{
const BoneGridInterpolator& bgip = a->interpolators[i];
if(Bone *b = editSprite->getBoneByIdx(bgip.idx))
{
b->renderBorder = true;
b->renderCenter = true;
b->borderAlpha = 0.4f;
b->renderBorderColor = Vector(0.2f, 0.9f, 0.2f);
}
}
}
void AnimationEditor::applyBoneToSplineGrid() void AnimationEditor::applyBoneToSplineGrid()
{ {
if(splinegrid && editingBone) if(splinegrid && editingBone)

View file

@ -149,6 +149,8 @@ public:
void updateTimelineGrid(); void updateTimelineGrid();
DebugFont *gridsize, *unitsize; DebugFont *gridsize, *unitsize;
void onKeyframeChanged();
SplineGrid *splinegrid; SplineGrid *splinegrid;
void applySplineGridToBone(); void applySplineGridToBone();
void applyBoneToSplineGrid(); void applyBoneToSplineGrid();