Example #1
0
            protected override bool OnTryBeginModify()
            {
                if (!Owner.IsAllowScale())
                {
                    return(false);
                }

                Axes axes = GetAxesByMousePosition();

                if (axes.TrueCount != 0)
                {
                    modifyPosition = Owner.GetPosition();
                    Vector2 screenPosition;
                    if (CameraSettings.ProjectToScreenCoordinates(modifyPosition, out screenPosition))
                    {
                        startMouseOffset   = Viewport.MousePosition - screenPosition;
                        startMousePosition = Viewport.MousePosition;
                        //modifyScale = new Vec3( 1, 1, 1 );
                        selectedAxes            = axes;
                        helpText                = "";
                        initialObjectsTransform = new TransformOfObject[Owner.Objects.Count];
                        for (int n = 0; n < Owner.Objects.Count; n++)
                        {
                            TransformToolObject obj = Owner.Objects[n];
                            initialObjectsTransform[n] = new TransformOfObject(obj.Position, obj.Rotation, obj.Scale);
                        }
                        return(true);
                    }
                }

                return(base.OnTryBeginModify());
            }
 public override void OnUpdateInitialObjectsTransform()
 {
     initialObjectsTransform = new TransformOfObject[Owner.Objects.Count];
     for (int n = 0; n < Owner.Objects.Count; n++)
     {
         TransformToolObject obj = Owner.Objects[n];
         initialObjectsTransform[n] = new TransformOfObject(obj.Position, obj.Rotation, obj.Scale);
     }
 }
Example #3
0
 protected virtual void OnPositionModeUpdateObjects(TransformOfObject[] initialObjectsTransform, Vector3 positionOffset)
 {
     for (int n = 0; n < Objects.Count; n++)
     {
         TransformOfObject initialTransform = initialObjectsTransform[n];
         Objects[n].Position = initialTransform.position + positionOffset;
         Objects[n].Rotation = initialTransform.rotation;
     }
 }
Example #4
0
 protected virtual void OnRotationModeUpdateObjects(TransformOfObject[] initialObjectsTransform, Vector3 modifyPosition, Quaternion rotationOffset)
 {
     for (int n = 0; n < Objects.Count; n++)
     {
         TransformOfObject initialTransform = initialObjectsTransform[n];
         if (TransformToolConfig.moveObjectsDuringRotation)
         {
             Vector3 offset = initialTransform.position - modifyPosition;
             Objects[n].Position = modifyPosition + offset * rotationOffset;
         }
         Objects[n].Rotation = rotationOffset * initialTransform.rotation;
     }
 }
Example #5
0
            protected override bool OnTryBeginModify()
            {
                if (!Owner.IsAllowRotate())
                {
                    return(false);
                }

                Vector2 screenLinePointInPixels;
                Radian  screenLineAngle;
                Axis    axis = GetAxisByMousePosition(out screenLinePointInPixels, out screenLineAngle);

                if (axis != Axis.None)
                {
                    modifyPosition = Owner.GetPosition();

                    Vector2 screenPosition;
                    if (CameraSettings.ProjectToScreenCoordinates(modifyPosition, out screenPosition))
                    {
                        Vector2 viewportSize = Owner.ViewportControl.Viewport.SizeInPixels.ToVector2();

                        selectedAxis = axis;
                        selectedScreenLinePointInPixels = screenLinePointInPixels;
                        selectedScreenLineAngle         = screenLineAngle;
                        mouseStartPosition = Viewport.MousePosition;
                        //mouseStartPositionInPixels = EngineApp.Instance.MousePosition * viewportSize;
                        helpText = "";
                        initialObjectsTransform = new TransformOfObject[Owner.Objects.Count];
                        for (int n = 0; n < Owner.Objects.Count; n++)
                        {
                            TransformToolObject obj = Owner.Objects[n];
                            initialObjectsTransform[n] = new TransformOfObject(obj.Position, obj.Rotation, obj.Scale);
                        }
                        return(true);
                    }
                }

                return(base.OnTryBeginModify());
            }