1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2025-02-04 19:04:08 +00:00

anim edit: slightly more useful border modes

This commit is contained in:
fgenesis 2022-09-24 05:25:54 +02:00
parent cf70cfe48d
commit e35dfb9f68
2 changed files with 44 additions and 19 deletions

View file

@ -220,7 +220,7 @@ void AnimationEditor::applyState()
selectedStripPoint = 0; selectedStripPoint = 0;
mouseSelection = true; mouseSelection = true;
editingFile = "Naija"; editingFile = "Naija";
renderBorders = false; renderBorderMode = RENDER_BORDER_MINIMAL;
ae = this; ae = this;
StateObject::applyState(); StateObject::applyState();
boneEdit = 0; boneEdit = 0;
@ -1454,7 +1454,9 @@ void AnimationEditor::toggleRenderBorders()
{ {
if (dsq->isNested()) return; if (dsq->isNested()) return;
renderBorders = !renderBorders; renderBorderMode = (RenderBorderMode)(renderBorderMode + 1);
if(renderBorderMode > RENDER_BORDER_ALL)
renderBorderMode = RENDER_BORDER_NONE;
updateRenderBorders(); updateRenderBorders();
} }
@ -1463,14 +1465,44 @@ void AnimationEditor::updateRenderBorders()
if (!editSprite) if (!editSprite)
return; return;
// reset
for (size_t i = 0; i < editSprite->bones.size(); ++i) for (size_t i = 0; i < editSprite->bones.size(); ++i)
{ {
Bone *b = editSprite->bones[i]; Bone *b = editSprite->bones[i];
b->renderBorder = renderBorders; b->renderBorder = false;
b->renderCenter = renderBorders; b->renderCenter = false;
b->borderAlpha = 0.8f; b->borderAlpha = 0.8f;
b->renderBorderColor = Vector(1,1,1); b->renderBorderColor = Vector(1,1,1);
} }
if(renderBorderMode == RENDER_BORDER_NONE)
return;
else
{
Animation *a = editSprite->getCurrentAnimation();
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);
}
}
}
if(renderBorderMode == RENDER_BORDER_ALL)
{
for (size_t i = 0; i < editSprite->bones.size(); ++i)
{
Bone *b = editSprite->bones[i];
b->renderBorder = true;
b->renderCenter = true;
}
}
} }
void AnimationEditor::updateEditingBone() void AnimationEditor::updateEditingBone()
@ -1541,21 +1573,7 @@ void AnimationEditor::onKeyframeChanged()
{ {
applyBoneToSplineGrid(); applyBoneToSplineGrid();
Animation *a = editSprite->getCurrentAnimation();
updateRenderBorders(); // restore default state 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()

View file

@ -138,7 +138,14 @@ public:
void toggleRenderBorders(); void toggleRenderBorders();
void updateRenderBorders(); void updateRenderBorders();
bool renderBorders;
enum RenderBorderMode
{
RENDER_BORDER_NONE,
RENDER_BORDER_MINIMAL,
RENDER_BORDER_ALL, // must be last
};
RenderBorderMode renderBorderMode;
void updateEditingBone(); void updateEditingBone();
void showAllBones(); void showAllBones();
void incrTimelineUnit(); void incrTimelineUnit();