Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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;
                }
            }
        }
Beispiel #3
0
 public void AddConnection(ConcreteJoint start, ConcreteJoint finish)
 {
     Lines.Add(new Line(start, finish));
 }