Пример #1
0
        private void UpdateRotationHandlePosition()
        {
            GraphicalUiElement singleSelectedObject = null;

            if (selectedObjects.Count == 1)
            {
                singleSelectedObject = selectedObjects[0];
            }

            if (singleSelectedObject == null)
            {
                // hide the rotation handles
                rotationHandle.Visible = false;
            }
            else
            {
                rotationHandle.Visible = true;

                // right side
                const float minimumOffset = 24;


                float xOffset = 0;

                if (singleSelectedObject.XOrigin == HorizontalAlignment.Left)
                {
                    xOffset = singleSelectedObject.GetAbsoluteWidth() + minimumOffset;
                }
                else if (singleSelectedObject.XOrigin == HorizontalAlignment.Center)
                {
                    xOffset = singleSelectedObject.GetAbsoluteWidth() / 2.0f + minimumOffset;
                }
                else if (singleSelectedObject.XOrigin == HorizontalAlignment.Right)
                {
                    xOffset = minimumOffset;
                }

                var offset = new Vector2(
                    xOffset,
                    0);

                MathFunctions.RotateVector(
                    ref offset, -MathHelper.ToRadians(singleSelectedObject.GetAbsoluteRotation()));

                rotationHandle.X = singleSelectedObject.AbsoluteX + offset.X;

                // consider the Y
                rotationHandle.Y = singleSelectedObject.AbsoluteY + offset.Y;

                rotationHandle.Radius = 8 / Renderer.Self.Camera.Zoom;
            }
        }
Пример #2
0
        private static void GetSelectedAbsoluteXAndY(GraphicalUiElement asGue, bool parentFlips, out float selectedObjectX, out float selectedObjectY)
        {
            selectedObjectX = asGue.AbsoluteX;
            selectedObjectY = asGue.AbsoluteY;

            if (parentFlips)
            {
                var     rotationMatrix = asGue.GetAbsoluteRotationMatrix();
                Vector3 offset         = new Vector3(asGue.GetAbsoluteWidth(), 0, 0);
                offset           = Vector3.Transform(offset, rotationMatrix);
                selectedObjectX += offset.X;
                selectedObjectY += offset.Y;
            }
        }