//------------------------------------------------------------------------------------------------------------------------ //Function: RobotSimulator (constructor) //Sets up the simulation, setting up the framerate, web service communication (between robot and simulation), and simulation //UI. //------------------------------------------------------------------------------------------------------------------------ public RobotSimulator() { InitializeComponent(); // Set the framerate to 30 FPS. Application.Current.Host.Settings.MaxFrameRate = 30; // Connect to and set up the web service. robotService = new ServiceClient(); robotService.getMotionCompleted += new EventHandler<getMotionCompletedEventArgs>(robotService_getMotionCompleted); robotService.getMotionAsync(); /*broker = new brokerService.Service1SoapClient(); broker.GetAddressCompleted += new EventHandler<GetAddressCompletedEventArgs>(broker_getAddressCompleted); broker.GetAddressAsync(0);*/ // Create a box around the entire boundary of the simulator area Rectangle worldBoundary = new Rectangle(); worldBoundary.Width = simWorld.getWorldSize() - 2; worldBoundary.Height = simWorld.getWorldSize() - 2; SolidColorBrush lightGray = new SolidColorBrush(Colors.LightGray); worldBoundary.Fill = lightGray; worldBoundary.Margin = new Thickness(0, 0, 0, 0); worldBoundary.HorizontalAlignment = HorizontalAlignment.Left; worldBoundary.VerticalAlignment = VerticalAlignment.Top; objectInWorld worldBoundaryObject = new objectInWorld(worldBoundary, 0.0); worldObjects.Add(worldBoundaryObject); // Calculate all of the physics-related variables for the entire simulated world. simWorld.populateWorld(LayoutRoot, worldObjects); // Now just for the world boundary // Start a thread that checks for updates from the web service and sends updates (from the sensors) to the web service. runner = new Thread(robotUpdater); runner.Start(); // This function initializes the contents of the maze and other pieces in the simulator. simWorld.defaultTestSetup(LayoutRoot, theRobot, ref robotRotation); // Populate the list of the combobox. populateComboBox(defaultActionComboBox, defaultOptions); defaultActionComboBox.SelectedIndex = 0; // By default, the default action is to move forward. }