//using System.Collections.Generic; //using System.Windows; //using AIStudio.Wpf.DiagramDesigner.Geometrys; //namespace AIStudio.Wpf.DiagramDesigner.Layout //{ // internal interface IState // { // VectorBase GetNodePosition(DesignerItemViewModelBase node); // void SetNodePosition(DesignerItemViewModelBase node, VectorBase pos); // VectorBase GetEndpointPosition(ConnectorInfoBase endpoint); // VectorBase GetNodeSpeed(DesignerItemViewModelBase node); // void SetNodeSpeed(DesignerItemViewModelBase node, VectorBase speed); // } // internal class BufferedState : IState // { // private readonly Dictionary _nodePositions = new Dictionary(); // private readonly Dictionary _endpointRelativePositions = new Dictionary(); // public IEnumerable> NodePositions => _nodePositions; // private readonly Dictionary _nodeSpeeds = new Dictionary(); // public VectorBase GetNodePosition(DesignerItemViewModelBase node) // { // if (!_nodePositions.TryGetValue(node, out VectorBase result)) // { // result = new VectorBase(node.Position.X, node.Position.Y); // } // return result; // } // public void SetNodePosition(DesignerItemViewModelBase node, VectorBase pos) // { // _nodePositions[node] = pos; // } // public VectorBase GetEndpointPosition(ConnectorInfoBase endpoint) // { // if (!_endpointRelativePositions.TryGetValue(endpoint, out VectorBase result)) // { // result = new VectorBase(endpoint.MiddlePosition.X, endpoint.MiddlePosition.Y) - GetNodePosition(endpoint.Parent); // _endpointRelativePositions[endpoint] = result; // } // return result + GetNodePosition(endpoint.Parent as DesignerItemViewModelBase); // } // public VectorBase GetNodeSpeed(DesignerItemViewModelBase node) // { // if (!_nodeSpeeds.TryGetValue(node, out VectorBase result)) // { // result = new VectorBase(0, 0); // } // return result; // } // public void SetNodeSpeed(DesignerItemViewModelBase node, VectorBase speed) // { // _nodeSpeeds[node] = speed; // } // } // internal class LiveState : IState // { // private readonly Dictionary _nodeSpeeds = new Dictionary(); // public VectorBase GetNodePosition(DesignerItemViewModelBase node) // { // return new VectorBase(node.Position.X, node.Position.Y); // } // public void SetNodePosition(DesignerItemViewModelBase node, VectorBase pos) // { // node.Position = new Point(pos.X, pos.Y); // } // public VectorBase GetEndpointPosition(ConnectorInfoBase endpoint) // { // return new VectorBase(endpoint.MiddlePosition.X, endpoint.MiddlePosition.Y); // } // public VectorBase GetNodeSpeed(DesignerItemViewModelBase node) // { // if (!_nodeSpeeds.TryGetValue(node, out VectorBase result)) // { // result = new VectorBase(0, 0); // } // return result; // } // public void SetNodeSpeed(DesignerItemViewModelBase node, VectorBase speed) // { // _nodeSpeeds[node] = speed; // } // } //}