Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add scaling/position/rotation global offset #137

Open
wants to merge 14 commits into
base: main
Choose a base branch
from
2 changes: 2 additions & 0 deletions Brio/Capabilities/Posing/PosingCapability.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ public bool HasOverride
public bool HasUndoStack => _undoStack.Count > 1;
public bool HasRedoStack => _redoStack.Any();
public bool HasIKApplied => SkeletonPosing.PoseInfo.HasIKStacks;

public float AdjusterOffset = 0.01f;

private Stack<PoseStack> _undoStack = [];
private Stack<PoseStack> _redoStack = [];
Expand Down
20 changes: 13 additions & 7 deletions Brio/UI/Controls/Editors/PosingTransformEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ public void Draw(string id, PosingCapability posingCapability, bool compactMode
_ => DrawModelTransformEditor(posingCapability, compactMode)
);

ImBrio.Icon(FontAwesomeIcon.ArrowsLeftRightToLine);
ImGui.SameLine();
ImBrio.DragFloat($"##transformSpeed_1", ref posingCapability.AdjusterOffset, 0.01f, "Offset");

if(posingCapability.Actor.IsProp == false)
{
ImGui.Separator();
Expand Down Expand Up @@ -122,6 +126,7 @@ private void DrawBoneTransformEditor(PosingCapability posingCapability, BonePose
bool anyActive = false;

var bone = posingCapability.SkeletonPosing.GetBone(boneId);
var offset = posingCapability.AdjusterOffset;
var bonePose = bone is not null ? posingCapability.SkeletonPosing.GetBonePose(boneId) : null;

var propagate = bonePose?.DefaultPropagation ?? TransformComponents.None;
Expand All @@ -139,9 +144,9 @@ private void DrawBoneTransformEditor(PosingCapability posingCapability, BonePose
}
}

(var pdidChange, var panyActive) = ImBrio.DragFloat3($"###_transformPosition_0", ref realTransform.Position, 0.1f, FontAwesomeIcon.ArrowsUpDownLeftRight, "Position", enableExpanded: compactMode);
(var rdidChange, var ranyActive) = ImBrio.DragFloat3($"###_transformRotation_0", ref realEuler, 1f, FontAwesomeIcon.ArrowsSpin, "Rotation", enableExpanded: compactMode);
(var sdidChange, var sanyActive) = ImBrio.DragFloat3($"###_transformScale_0", ref realTransform.Scale, 0.1f, FontAwesomeIcon.ExpandAlt, "Scale", enableExpanded: compactMode);
(var pdidChange, var panyActive) = ImBrio.DragFloat3($"###_transformPosition_0", ref realTransform.Position, offset, FontAwesomeIcon.ArrowsUpDownLeftRight, "Position", enableExpanded: compactMode);
(var rdidChange, var ranyActive) = ImBrio.DragFloat3($"###_transformRotation_0", ref realEuler, offset, FontAwesomeIcon.ArrowsSpin, "Rotation", enableExpanded: compactMode);
(var sdidChange, var sanyActive) = ImBrio.DragFloat3($"###_transformScale_0", ref realTransform.Scale, offset, FontAwesomeIcon.ExpandAlt, "Scale", enableExpanded: compactMode);

didChange |= pdidChange |= rdidChange |= sdidChange;
anyActive |= panyActive |= ranyActive |= sanyActive;
Expand Down Expand Up @@ -176,14 +181,15 @@ private void DrawModelTransformEditor(PosingCapability posingCapability, bool co
{
var before = posingCapability.ModelPosing.Transform;
var isProp = posingCapability.Actor.IsProp;
var offset = posingCapability.AdjusterOffset;
var realTransform = _trackingTransform ?? before;
var realEuler = _trackingEuler ?? before.Rotation.ToEuler();

bool didChange = false;
bool anyActive = false;

(var pdidChange, var panyActive) = ImBrio.DragFloat3($"###_transformPosition_1", ref realTransform.Position, 0.1f, FontAwesomeIcon.ArrowsUpDownLeftRight, "Position", enableExpanded: compactMode);
(var rdidChange, var ranyActive) = ImBrio.DragFloat3($"###_transformRotation_1", ref realEuler, 5.0f, FontAwesomeIcon.ArrowsSpin, "Rotation", enableExpanded: compactMode);
(var pdidChange, var panyActive) = ImBrio.DragFloat3($"###_transformPosition_1", ref realTransform.Position, offset, FontAwesomeIcon.ArrowsUpDownLeftRight, "Position", enableExpanded: compactMode);
(var rdidChange, var ranyActive) = ImBrio.DragFloat3($"###_transformRotation_1", ref realEuler, offset, FontAwesomeIcon.ArrowsSpin, "Rotation", enableExpanded: compactMode);

bool sdidChange = false;
bool sanyActive = false;
Expand All @@ -201,10 +207,10 @@ private void DrawModelTransformEditor(PosingCapability posingCapability, bool co
float entryWidth = (size.X - (ImGui.GetStyle().ItemSpacing.X * 2));
ImGui.SetNextItemWidth(entryWidth);

(sanyActive, sdidChange) = ImBrio.DragFloat($"##transformScale", ref realTransform.Scale.X, 0.1f / 10);
(sanyActive, sdidChange) = ImBrio.DragFloat($"##transformScale", ref realTransform.Scale.X, offset / 10);
}
else
(sdidChange, sanyActive) = ImBrio.DragFloat3($"###_transformScale_1", ref realTransform.Scale, 0.1f, FontAwesomeIcon.ExpandAlt, "Scale", enableExpanded: compactMode);
(sdidChange, sanyActive) = ImBrio.DragFloat3($"###_transformScale_1", ref realTransform.Scale, offset, FontAwesomeIcon.ExpandAlt, "Scale", enableExpanded: compactMode);

didChange |= pdidChange |= rdidChange |= sdidChange;
anyActive |= panyActive |= ranyActive |= sanyActive;
Expand Down
Loading