Skip to content

Commit e1ae601

Browse files
committed
Revert "Update orbit view to use expression builder"
This reverts commit 8fe880f.
1 parent c402640 commit e1ae601

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

Microsoft.Toolkit.Uwp.UI.Controls/OrbitView/OrbitView.cs

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -631,41 +631,48 @@ private Line CreateAnchor(UIElement element, double x, double y)
631631
var anchorVisual = ElementCompositionPreview.GetElementVisual(anchor);
632632
var elementVisual = ElementCompositionPreview.GetElementVisual(element);
633633
var centerVisual = ElementCompositionPreview.GetElementVisual(_centerContent);
634-
var elementNode = elementVisual.GetReference();
635-
var centerNode = centerVisual.GetReference();
636634

637-
ScalarNode expression;
638-
var elementY = elementNode.Offset.Y + (elementNode.Size.Y / 2);
639-
var centerY = centerNode.Offset.Y + (centerNode.Size.Y / 2);
640-
var elementX = elementNode.Offset.X + (elementNode.Size.X / 2);
641-
var centerX = centerNode.Offset.X + (centerNode.Size.X / 2);
635+
string expression = string.Empty;
636+
var elementY = "(elementVisual.Offset.Y + elementVisual.Size.Y / 2)";
637+
var centerY = "(centerVisual.Offset.Y + centerVisual.Size.Y / 2)";
638+
var elementX = "(elementVisual.Offset.X + elementVisual.Size.X / 2)";
639+
var centerX = "(centerVisual.Offset.X + centerVisual.Size.X / 2)";
642640

643641
var startingAngle = Math.Atan2(y, x);
644642

645643
if (startingAngle > Math.PI / 4 && startingAngle < 3 * Math.PI / 4)
646644
{
647-
expression = ExpressionFunctions.ATan((-1 * (elementX - centerX)) / (elementY - centerY)) - ((float)Math.PI / 2.0f);
645+
expression = $"Atan((-1 * ({elementX} - {centerX})) / ( {elementY} - {centerY})) - PI / 2";
648646
}
649647
else if (startingAngle >= 3 * Math.PI / 4 || startingAngle < -3 * Math.PI / 4)
650648
{
651-
expression = ExpressionFunctions.ATan((elementY - centerY) / (elementX - centerX)) + (float)Math.PI;
649+
expression = $"Atan(({elementY} - {centerY}) / ({elementX} - {centerX})) + PI";
652650
}
653651
else if (startingAngle >= -3 * Math.PI / 4 && startingAngle < Math.PI / -4)
654652
{
655-
expression = ExpressionFunctions.ATan((elementX - centerX) / (-1 * (elementY - centerY))) + ((float)Math.PI / 2.0f);
653+
expression = $"Atan(({elementX} - {centerX}) / (-1 * ({elementY} - {centerY}))) + PI / 2";
656654
}
657655
else
658656
{
659-
expression = ExpressionFunctions.ATan((elementY - centerY) / (elementX - centerX));
657+
expression = $"Atan(({elementY} - {centerY}) / ({elementX} - {centerX}))";
660658
}
661659

662660
anchorVisual.CenterPoint = new Vector3(0);
663-
anchorVisual.StartAnimation(nameof(anchorVisual.RotationAngle), expression);
664-
665-
var offsetExpression = ExpressionFunctions.Vector3(centerNode.Offset.X + (centerNode.Size.X / 2), centerNode.Offset.Y + (centerNode.Size.Y / 2), 0);
661+
var rotationExpression = _compositor.CreateExpressionAnimation();
662+
rotationExpression.Expression = expression;
663+
rotationExpression.SetReferenceParameter("centerVisual", centerVisual);
664+
rotationExpression.SetReferenceParameter("elementVisual", elementVisual);
665+
anchorVisual.StartAnimation(nameof(anchorVisual.RotationAngle), rotationExpression);
666+
667+
var offsetExpression = _compositor.CreateExpressionAnimation();
668+
offsetExpression.Expression = "Vector3(centerVisual.Offset.X + centerVisual.Size.X / 2, centerVisual.Offset.Y + centerVisual.Size.Y / 2, 0)";
669+
offsetExpression.SetReferenceParameter("centerVisual", centerVisual);
666670
anchorVisual.StartAnimation(nameof(anchorVisual.Offset), offsetExpression);
667671

668-
var scaleExpression = ExpressionFunctions.Vector3(ExpressionFunctions.Pow(ExpressionFunctions.Pow(elementX - centerX, 2) + ExpressionFunctions.Pow(elementY - centerY, 2), 0.5f) / 80, 1, 1);
672+
var scaleExpression = _compositor.CreateExpressionAnimation();
673+
scaleExpression.Expression = $"Vector3(Pow(Pow({elementX} - {centerX}, 2) + Pow({elementY} - {centerY}, 2), 0.5)/100, 1, 1)";
674+
scaleExpression.SetReferenceParameter("centerVisual", centerVisual);
675+
scaleExpression.SetReferenceParameter("elementVisual", elementVisual);
669676
anchorVisual.StartAnimation(nameof(anchorVisual.Scale), scaleExpression);
670677

671678
return anchor;

0 commit comments

Comments
 (0)