// MainModelView Constructor
        public MainModelView()
        {
            Random rand = new Random();

            numAsteroids = NUM_ROCKS;

            // Initialize a Ship pointing up, no velocity in middle of the board
            Player1Ship = new SpaceObject('S', 600, 400, 25, 0, -90);
            Player2Ship = new SpaceObject('E', 800, 400, 25, 0, -90);

            // Make a list of space objects and add player1 and player 2
            listOfSpaceObjects = new ObservableCollection <SpaceObject>();
            ListOfSpaceObjects.Add(Player1Ship);
            ListOfSpaceObjects.Add(Player2Ship);

            // Variables to initialize the array of asteroids
            double startX, startY, angle;

            // initialize the asteroids position and direction
            for (int i = 0; i < numAsteroids; i++)
            {
                startX = WINDOWWIDTH * (rand.NextDouble());
                startY = WINDOWHEIGHT * (rand.NextDouble());
                angle  = 360 * (rand.NextDouble());
                var rock = new SpaceObject('R', startX, startY, HEIGHT, VELOCITY / 2, angle);
                listOfSpaceObjects.Add(rock);
            }
            EstablishConnections();
            SetTimer();
        }
 public void RemoveSpaceObject(SpaceObject so)
 {
     Application.Current.Dispatcher.Invoke(new Action(() =>
     {
         ListOfSpaceObjects.Remove(so);
         // If the rock is not at its smallest size....
         if (so.Type == 'R' && so.NumberOfHits < 2)
         {
             var rock = new SpaceObject('R', so.XCoordinate, so.YCoordinate, so.Height / 2, so.Velocity * 1.5, so.Theta + 30);
             rock.CollisionBoxSize = (int)so.Height / 2;
             rock.NumberOfHits     = so.NumberOfHits + 1;
             listOfSpaceObjects.Add(rock);
             rock = new SpaceObject('R', so.XCoordinate, so.YCoordinate, so.Height / 2, so.Velocity * 1.5, so.Theta - 30);
             rock.CollisionBoxSize = (int)so.Height / 2;
             rock.NumberOfHits     = so.NumberOfHits + 1;
             listOfSpaceObjects.Add(rock);
         }
     }));
 }