private static void InBetweenGeneration(int from, int to) { var file1 = Globals.Files[from]; var file2 = Globals.Files[to]; if (file2.IsLast) { file2 = Globals.Files[1]; } for (int fileNumber = from + 1; fileNumber < to; fileNumber++) { var newJoints = new List <ConcreteJoint>(); foreach (var concreteJoint1 in file1.ConcreteJoints) { var concreteJoint2 = file2.ConcreteJoints.FirstOrDefault(cj => cj.Id == concreteJoint1.Id); if (concreteJoint2 == null) { newJoints.Add(concreteJoint1); } else { newJoints.Add(ConcreteJoint.CreateInBetweenJoint(concreteJoint1, concreteJoint2, fileNumber - from, to - from)); } } var newFile = new JointFile { ConcreteJoints = newJoints, Lines = file1.Lines }; FileManager.Save(FileManager.GetFileName(fileNumber, Globals.CurrentFolder), newFile); } }
public void Update(GameTime gameTime) { if (MouseExtended.Current.CurrentState.LeftButton == ButtonState.Pressed) { if (_draggingJoint == null) { _draggingJoint = GetFirstTouching(_mouseCursor); } if (_draggingJoint != null) { _draggingJoint.Position = _mouseCursor.Position; } return; } var templateJoint = _draggingJoint as TemplateJoint; var concreteJoint = _draggingJoint as ConcreteJoint; if (concreteJoint != null) { if (!IsWithinDrawArea(_mouseCursor)) { _concreteJoints.Remove(concreteJoint); _lineManager.DeleteJoint(concreteJoint); } _draggingJoint = null; } else if (templateJoint != null) { if (IsWithinDrawArea(_mouseCursor)) { _concreteJoints.Add(new ConcreteJoint(templateJoint)); } templateJoint.Position = templateJoint.OriginalPosition; _draggingJoint = null; } if (MouseExtended.Current.CurrentState.RightButton == ButtonState.Pressed) { if (!_draggingLine) { _lineStartJoint = GetFirstTouching(_mouseCursor) as ConcreteJoint; if (_lineStartJoint != null) { _draggingLine = true; } } } else { if (_draggingLine) { var lineEndJoint = GetFirstTouching(_mouseCursor) as ConcreteJoint; if (lineEndJoint != null) { _lineManager.AddConnection(_lineStartJoint, lineEndJoint); } _draggingLine = false; _lineStartJoint = null; } } }
public void AddConnection(ConcreteJoint start, ConcreteJoint finish) { Lines.Add(new Line(start, finish)); }