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?()); }
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); }
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?()); } }
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); }
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?()); }
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?()); } }