public override Timeline Copy(AnimationClass.AnimationLayer ActiveLayer)
        {
            CollisionBoxTimeline NewSetMarkerEvent = new CollisionBoxTimeline(Owner);

            NewSetMarkerEvent.UpdateFrom(this, ActiveLayer);

            return(NewSetMarkerEvent);
        }
        public override List <VisibleTimeline> CreateNewEditorItem(AnimationClass ActiveAnimation, AnimationClass.AnimationLayer ActiveLayer, int KeyFrame, System.Drawing.Point MousePosition)
        {
            List <VisibleTimeline> ReturnValue = new List <VisibleTimeline>();

            Vector2[] LocalPoints = new Vector2[4]
            {
                new Vector2(MousePosition.X - 40, MousePosition.Y - 40),
                new Vector2(MousePosition.X - 40, MousePosition.Y + 40),
                new Vector2(MousePosition.X + 40, MousePosition.Y + 40),
                new Vector2(MousePosition.X + 40, MousePosition.Y - 40),
            };

            List <Polygon>       ListPolygon             = new List <Polygon>();
            CollisionBoxTimeline NewCollisionBoxTimeline = new CollisionBoxTimeline();
            PolygonCutterHelper  NewSpawner = new PolygonCutterHelper(ActiveLayer.renderTarget, ListPolygon, true);

            Polygon NewPolygon = new Polygon(LocalPoints, GameScreen.GraphicsDevice.Viewport.Width, GameScreen.GraphicsDevice.Viewport.Height);

            NewSpawner.PolygonCutterViewer.ListPolygon.Add(NewPolygon);

            if (NewSpawner.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                NewCollisionBoxTimeline.SpawnFrame = KeyFrame;
                NewCollisionBoxTimeline.DeathFrame = KeyFrame + 10;
                NewCollisionBoxTimeline.IsUsed     = true;//Disable the spawner as we spawn the Marker manually.

                Vector2[] NewArrayVertex = new Vector2[NewSpawner.PolygonCutterViewer.ListPolygon[0].ArrayVertex.Length];
                Array.Copy(NewSpawner.PolygonCutterViewer.ListPolygon[0].ArrayVertex, NewArrayVertex, NewSpawner.PolygonCutterViewer.ListPolygon[0].ArrayVertex.Length);

                VisibleAnimationObjectKeyFrame NewPolygonCutterKeyFrame = new VisibleAnimationObjectKeyFrame(NewCollisionBoxTimeline.Position,
                                                                                                             true, -1);

                Polygon NewKeyFramePolygon = new Polygon(NewArrayVertex, ActiveLayer.renderTarget.Width, ActiveLayer.renderTarget.Height);

                NewCollisionBoxTimeline.Add(KeyFrame, NewPolygonCutterKeyFrame);
                NewCollisionBoxTimeline.ListCollisionPolygon.Add(NewKeyFramePolygon);
                NewCollisionBoxTimeline.ListOriginalPolygon.Add(new Polygon(NewKeyFramePolygon));
                NewKeyFramePolygon.UpdateWorldPosition(Vector2.Zero, 0f);

                NewCollisionBoxTimeline.ComputeSourceRectangle();
                ReturnValue.Add(NewCollisionBoxTimeline);
            }

            return(ReturnValue);
        }