Пример #1
0
        private void ApplyTransform(AbstractTransformAction transformAction, ref TransformChangeInfos transformChangeInfos)
        {
            if (!Selected)
            {
                return;
            }

            Vector3 pp = Position, pr = Rotation, ps = Scale;

            GlobalPosition = transformAction.NewPos(GlobalPosition, out bool posHasChanged);

            Matrix3 rotMtx = GlobalRotation;

            GlobalRotation = transformAction.NewRot(GlobalRotation, out bool rotHasChanged);
            GlobalScale    = transformAction.NewScale(GlobalScale, rotMtx, out bool scaleHasChanged);

            Mesh.Transform.Position = GlobalPosition;
            Mesh.Transform.Scale    = GlobalScale;
            Mesh.Transform.Rotation = GlobalRotation.ExtractRotation();

            transformChangeInfos.Add(this, 0,
                                     posHasChanged ? new Vector3?(pp) : new Vector3?(),
                                     rotHasChanged ? new Vector3?(pr) : new Vector3?(),
                                     scaleHasChanged ? new Vector3?(ps) : new Vector3?());
        }
Пример #2
0
        public override void ApplyTransformActionToSelection(AbstractTransformAction transformAction, ref TransformChangeInfos infos)
        {
            if (!Selected)
            {
                return;
            }

            Vector3 pp = Position, pr = Rotation;

            var newPos = transformAction.NewPos(GlobalPosition, out bool posHasChanged);

            var newRot = transformAction.NewRot(Rotation, out bool rotHasChanged);

            if (posHasChanged)
            {
                GlobalPosition = newPos;
            }
            if (rotHasChanged)
            {
                Rotation = newRot;
            }

            infos.Add(this, 0,
                      posHasChanged ? new Vector3?(pp) : null,
                      rotHasChanged ? new Vector3?(pr) : null,
                      null);
        }
Пример #3
0
 public override void ApplyTransformActionToSelection(EditorSceneBase scene, AbstractTransformAction transformAction, ref TransformChangeInfos transformChangeInfos)
 {
     foreach (RenderablePathPoint point in GetSelectedPoints())
     {
         point.ApplyTransformActionToSelection(scene, transformAction, ref transformChangeInfos);
     }
 }
        public override void ApplyTransformActionToSelection(EditorSceneBase scene, AbstractTransformAction transformAction, ref TransformChangeInfos infos)
        {
            if (PickingSelection == PickingMode.Mesh)
            {
                foreach (GenericPickableMesh point in PickableMeshes)
                {
                    point.ApplyTransformActionToSelection(scene, transformAction, ref infos);
                }
            }
            else if (Selected)
            {
                Vector3 pp = Position, pr = Rotation, ps = Scale;

                GlobalPosition = OnPositionChanged(transformAction.NewPos(GlobalPosition, out bool posHasChanged));

                Matrix3 rotMtx = GlobalRotation;

                GlobalRotation = transformAction.NewRot(GlobalRotation, out bool rotHasChanged);
                GlobalScale    = transformAction.NewScale(GlobalScale, rotMtx, out bool scaleHasChanged);

                infos.Add(this, 0,
                          posHasChanged ? new Vector3?(pp) : new Vector3?(),
                          rotHasChanged ? new Vector3?(pr) : new Vector3?(),
                          scaleHasChanged ? new Vector3?(ps) : new Vector3?());
            }
        }
Пример #5
0
        public override void ApplyTransformActionToSelection(AbstractTransformAction transformAction, ref TransformChangeInfos infos)
        {
            Vector3?   prevPos;
            Quaternion?prevRot;
            Vector3?   prevScale;

            Position = transformAction.NewPos(Position, out prevPos);
            rotation = transformAction.NewRot(rotation, out prevRot);
            scale    = transformAction.NewScale(scale, out prevScale);
            infos.Add(this, 0, prevPos, prevRot, prevScale);
        }
Пример #6
0
 public override void ApplyTransformActionToPart(EditorSceneBase scene, AbstractTransformAction transformAction, int _part, ref TransformChangeInfos transformChangeInfos)
 {
     foreach (RenderablePathPoint point in PathPoints)
     {
         int span = point.GetPickableSpan();
         if (_part >= 0 && _part < span)
         {
             point.ApplyTransformActionToPart(scene, transformAction, _part, ref transformChangeInfos);
             return;
         }
         _part -= span;
     }
     throw new Exception("Invalid partIndex");
 }
 public override void ApplyTransformActionToPart(EditorSceneBase scene, AbstractTransformAction transformAction, int _part, ref TransformChangeInfos transformChangeInfos)
 {
     if (PickingSelection == PickingMode.Mesh)
     {
         foreach (GenericPickableMesh mesh in PickableMeshes)
         {
             int span = mesh.GetPickableSpan();
             if (_part >= 0 && _part < span)
             {
                 mesh.ApplyTransformActionToPart(scene, transformAction, _part, ref transformChangeInfos);
                 return;
             }
             _part -= span;
         }
     }
 }
        public override void ApplyTransformActionToSelection(EditorSceneBase scene, AbstractTransformAction transformAction, ref TransformChangeInfos infos)
        {
            if (!Selected)
            {
                return;
            }

            Vector3 pp = Position, pr = Rotation, ps = Scale;

            GlobalPosition = OnPositionChanged(transformAction.NewPos(GlobalPosition, out bool posHasChanged));

            Matrix3 rotMtx = GlobalRotation;

            GlobalRotation = transformAction.NewRot(GlobalRotation, out bool rotHasChanged);

            GlobalScale = transformAction.NewScale(GlobalScale, rotMtx, out bool scaleHasChanged);

            infos.Add(this, 0,
                      posHasChanged ? new Vector3?(pp) : new Vector3?(),
                      rotHasChanged ? new Vector3?(pr) : new Vector3?(),
                      scaleHasChanged ? new Vector3?(ps) : new Vector3?());
        }
Пример #9
0
 public override void ApplyTransformActionToSelection(EditorSceneBase scene, AbstractTransformAction transformAction, ref TransformChangeInfos transformChangeInfos)
 {
     ApplyTransform(transformAction, ref transformChangeInfos);
 }
        private void ApplyTransform(AbstractTransformAction transformAction, ref TransformChangeInfos transformChangeInfos)
        {
            if (Selected)
            {
                Vector3 pp = Position, pr = Rotation, ps = Scale;

                Vector3 newPos        = Vector3.Zero;
                bool    posHasChanged = false;

                //Go through all points first to see if any point is over the applyed transform one
                ///This will move it to the original location and connect
                foreach (var point in ParentPath.PathPoints)
                {
                    if (point.IsPointOver)
                    {
                        posHasChanged = true;
                        newPos        = point.GlobalPosition;
                    }
                }

                if (!posHasChanged)
                {
                    newPos = OnPositionChanged(transformAction.NewPos(GlobalPosition, out posHasChanged));
                    Console.WriteLine($"newPos {newPos}");
                }

                if (posHasChanged)
                {
                    List <RenderablePathPoint> pointsConnected = new List <RenderablePathPoint>();
                    foreach (var point in ParentPath.PathPoints)
                    {
                        if (point.IsPointOver)
                        {
                            Console.WriteLine($"pointsConnected {pointsConnected.Count}");
                            pointsConnected.Add(point);
                        }
                    }

                    foreach (var point in ParentPath.PathPoints)
                    {
                        point.IsPointOver = false;
                    }

                    foreach (var point in pointsConnected)
                    {
                        ConnectToPoint(point);
                    }
                }

                GlobalPosition = newPos;
                Matrix3 rotMtx = GlobalRotation;

                GlobalRotation = transformAction.NewRot(GlobalRotation, out bool rotHasChanged);
                GlobalScale    = transformAction.NewScale(GlobalScale, rotMtx, out bool scaleHasChanged);

                transformChangeInfos.Add(this, 0,
                                         posHasChanged ? new Vector3?(pp) : new Vector3?(),
                                         rotHasChanged ? new Vector3?(pr) : new Vector3?(),
                                         scaleHasChanged ? new Vector3?(ps) : new Vector3?());
            }
        }