public MainWindow() { InitializeComponent(); trackingUser = false; trackingUserId = 0; stop = false; console = new Console(); console.Show(); console.Top = 10; console.Left = 10; prompt = new UserPrompt(); prompt.Show(); prompt.Top = 10; prompt.Left = 550; this.Top = 250; this.Left = 550; context = new Context(CONFIG_FILE); imageGenerator = new ImageGenerator(context); userGenerator = new UserGenerator(context); if (DRAW_SKELETON) { depthGenerator = new DepthGenerator(context); depthBitmap = new WriteableBitmap(640, 480, DPI_X, DPI_Y, PixelFormats.Rgb24, null); depthData = new DepthMetaData(); Histogram = new int[depthGenerator.DeviceMaxDepth]; skeletonDraw = new SkeletonDraw(); } poseDetectionCapability = userGenerator.PoseDetectionCapability; skeletonCapability = userGenerator.SkeletonCapability; imageBitmap = new WriteableBitmap(640, 480, DPI_X, DPI_Y, PixelFormats.Rgb24, null); imageData = new ImageMetaData(); Device.SetUp(); if (File.Exists(SpatialController.CALIBRATION_DATA_FILE)) { spatialController = new SpatialController(ControllerStartup.FromFile, userGenerator); } else { spatialController = new SpatialController(ControllerStartup.Calibrate, userGenerator); } spatialController.RecalibrateCommand += new RecalibrateEventHandler(RecalibrateCommand); userGenerator.NewUser += NewUser; userGenerator.LostUser += LostUser; skeletonCapability.CalibrationStart += CalibrationStart; skeletonCapability.CalibrationEnd += CalibrationEnd; skeletonCapability.SetSkeletonProfile(SkeletonProfile.All); poseDetectionCapability.PoseDetected += PoseDetected; poseDetectionCapability.PoseEnded += PoseEnded; kinectDataThread = new Thread(new ThreadStart(ReadKinectData)); kinectDataThread.IsBackground = true; checkGesturesThread = new Thread(new ThreadStart(CheckGestures)); checkGesturesThread.IsBackground = true; imageTimer = new DispatcherTimer(); imageTimer.Tick += new EventHandler(ImageTick); imageTimer.Interval = new TimeSpan(0, 0, 0, 0, 100); kinectDataThread.Start(); checkGesturesThread.Start(); imageTimer.Start(); UserPrompt.Write("Finished loading window."); Console.Write("Finished loading window"); UserPrompt.Write("Please assume the Psi pose and hold it until you see a skeleton overlaid" + " on the streaming video."); }