Skip to content

Commit

Permalink
Fix bug #265 (#268)
Browse files Browse the repository at this point in the history
When "Set from mirror" is called for all bindings, function assumes all srcBindings should be copied, and generate bindings automatically if no paired binding exists in parameter.
When "Set from mirror" is called for certain bindings, function assumed target binding is fixed, and searches source binding instead.
  • Loading branch information
seagetch committed May 3, 2023
1 parent bbec7a7 commit 315151a
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions source/creator/panels/parameters.d
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,8 @@ private {
incActionPush(action);
}

void keypointActions(Parameter param, ParameterBinding[] bindings) {
void keypointActions(Parameter param, ParameterBinding[] srcBindings, ParameterBinding[] targetBindings) {
ParameterBinding[] bindings = (targetBindings !is null)? targetBindings: srcBindings;
if (igMenuItem(__("Unset"), "", false, true)) {
auto action = new ParameterChangeBindingsValueAction("unset", param, bindings, cParamPoint.x, cParamPoint.y);
foreach(binding; bindings) {
Expand Down Expand Up @@ -456,8 +457,11 @@ private {
foreach(binding; bindings) {
Node target = binding.getTarget().node;
auto pair = incGetFlipPairFor(target);
auto targetBinding = getPairBindingFor(param, target, pair, binding.getName(), true);
autoFlipBinding(targetBinding, binding, cParamPoint, 0);
auto targetBinding = getPairBindingFor(param, target, pair, binding.getName(), targetBindings is null);
if (targetBindings !is null)
autoFlipBinding(binding, targetBinding, cParamPoint, 0);
else
autoFlipBinding(targetBinding, binding, cParamPoint, 0);
}
action.updateNewState();
incActionPush(action);
Expand All @@ -470,8 +474,11 @@ private {
foreach(binding; bindings) {
Node target = binding.getTarget().node;
auto pair = incGetFlipPairFor(target);
auto targetBinding = getPairBindingFor(param, target, pair, binding.getName(), true);
autoFlipBinding(targetBinding, binding, cParamPoint, 1);
auto targetBinding = getPairBindingFor(param, target, pair, binding.getName(), targetBindings is null);
if (targetBindings !is null)
autoFlipBinding(binding, targetBinding, cParamPoint, 1);
else
autoFlipBinding(targetBinding, binding, cParamPoint, 1);
}
action.updateNewState();
incActionPush(action);
Expand All @@ -484,8 +491,11 @@ private {
foreach(binding; bindings) {
Node target = binding.getTarget().node;
auto pair = incGetFlipPairFor(target);
auto targetBinding = getPairBindingFor(param, target, pair, binding.getName(), true);
autoFlipBinding(targetBinding, binding, cParamPoint, -1);
auto targetBinding = getPairBindingFor(param, target, pair, binding.getName(), targetBindings is null);
if (targetBindings !is null)
autoFlipBinding(binding, targetBinding, cParamPoint, -1);
else
autoFlipBinding(targetBinding, binding, cParamPoint, -1);
}
action.updateNewState();
incActionPush(action);
Expand All @@ -501,8 +511,11 @@ private {
foreach(binding; bindings) {
Node target = binding.getTarget().node;
auto pair = incGetFlipPairFor(target);
auto targetBinding = getPairBindingFor(param, target, pair, binding.getName(), true);
autoFlipBinding(targetBinding, binding, cParamPoint, 0);
auto targetBinding = getPairBindingFor(param, target, pair, binding.getName(), targetBindings is null);
if (targetBindings !is null)
autoFlipBinding(binding, targetBinding, cParamPoint, 0);
else
autoFlipBinding(targetBinding, binding, cParamPoint, 0);
}
action.updateNewState();
incActionPush(action);
Expand Down Expand Up @@ -599,7 +612,7 @@ private {
incViewportNodeDeformNotifyParamValueChanged();
}

keypointActions(param, cSelectedBindings.values);
keypointActions(param, null, cSelectedBindings.values);

if (igBeginMenu(__("Interpolation Mode"), true)) {
if (igMenuItem(__("Nearest"), "", false, true)) {
Expand Down Expand Up @@ -884,7 +897,7 @@ void incParameterView(bool armedParam=false)(size_t idx, Parameter param, string
// Popup for rightclicking the controller
if (igBeginPopup("###ControlPopup")) {
if (incArmedParameter() == param) {
keypointActions(param, param.bindings);
keypointActions(param, param.bindings, null);
}
igEndPopup();
}
Expand Down

0 comments on commit 315151a

Please sign in to comment.