/// <summary> /// /// </summary> /// <param name="sensor"></param> /// <param name="GraphicsDevice"></param> /// <param name="position"></param> public KinectView(KinectSensor sensor, GraphicsDevice GraphicsDevice, Vector2 position) { this.GraphicsDevice = GraphicsDevice; this.sensor = sensor; this.positionRect = new Rectangle((int)position.X, (int)position.Y, 640, 480); this.trackedArea = new Quadrilateral(position, position, position, position, 0, Color.Red, this.GraphicsDevice); }
public override void LoadContent() { point = Vector2.Zero; calibratedPoint = Vector2.Zero; Vector2 viewLocation = new Vector2((ScreenManager.GraphicsDevice.Viewport.Width / 2.0f) - 320, (ScreenManager.GraphicsDevice.Viewport.Height / 2.0f) - 240); view = new KinectView(ScreenManager.Input.Sensor, ScreenManager.GraphicsDevice, viewLocation); UR = UL = LR = LL = Vector2.Zero; trackedArea = new Quadrilateral(UL, UR, LL, LR, 3, Color.Red, ScreenManager.GraphicsDevice); trackedLimb = new KinectTrackedObject(UL, UR, LL, LR); Content = new ContentManager(ScreenManager.Game.Services, "Content"); SpriteBatch = ScreenManager.SpriteBatch; if (((Manager)ScreenManager).Hand == "Left") { cursor = Content.Load<Texture2D>("Sprites/Left Hand"); } else { cursor = Content.Load<Texture2D>("Sprites/Right Hand"); } Texture2D textUR = Content.Load<Texture2D>("GUI/URButton"); Texture2D textUL = Content.Load<Texture2D>("GUI/ULButton"); Texture2D textLR = Content.Load<Texture2D>("GUI/LRButton"); Texture2D textLL = Content.Load<Texture2D>("GUI/LLButton"); Texture2D textSelect = Content.Load<Texture2D>("GUI/SelectButton"); float xOffset = ScreenManager.ScaleXPosition(ScreenManager.GraphicsDevice.Viewport.Width - textUR.Width); float yOffset = ScreenManager.ScaleYPosition(ScreenManager.GraphicsDevice.Viewport.Height - textUR.Height); float middle = ScreenManager.ScaleXPosition((ScreenManager.GraphicsDevice.Viewport.Width / 2.0f) - (textUR.Width / 2.0f)); Rectangle rectUL = new Rectangle(0, 0, textUR.Width, textUL.Height); Rectangle rectUR = new Rectangle((int)xOffset, 0, textUR.Width, textUR.Height); Rectangle rectLL = new Rectangle(0, (int)yOffset, textLR.Width, textLR.Height); Rectangle rectLR = new Rectangle((int)xOffset, (int)yOffset, textLL.Width, textLL.Height); Rectangle rectSelect = new Rectangle((int)middle, (int)yOffset, textSelect.Width, textSelect.Height); buttonUR = new GameLibrary.UI.Button(textUR, rectUR); buttonUL = new GameLibrary.UI.Button(textUL, rectUL); buttonLR = new GameLibrary.UI.Button(textLR, rectLR); buttonLL = new GameLibrary.UI.Button(textLL, rectLL); selectButton = new GameLibrary.UI.Button(textSelect, rectSelect); }
public override void Update(GameTime gameTime) { view.Update(); buttonUR.Update(state); buttonUL.Update(state); buttonLR.Update(state); buttonLL.Update(state); selectButton.Update(state); if (ScreenManager.Input.SkeletonData != null) { foreach (Skeleton skeleton in ScreenManager.Input.SkeletonData) { if (skeleton.TrackingState == SkeletonTrackingState.Tracked) { if (((Manager)ScreenManager).Hand == "Left") { point = ScreenManager.Input.SkeletonToColorMap(skeleton.Joints[JointType.HandLeft].Position); } else { point = ScreenManager.Input.SkeletonToColorMap(skeleton.Joints[JointType.HandRight].Position); } calibratedPoint = trackedLimb.TranslatePoint(point); break; } } if (buttonUR.IsClicked()) { UR = point; trackedArea = new Quadrilateral(UL, UR, LL, LR, 3, Color.Red, ScreenManager.GraphicsDevice); view.UpdateTrackedArea(trackedArea); trackedLimb = new KinectTrackedObject(UL, UR, LL, LR); } if (buttonUL.IsClicked()) { UL = point; trackedArea = new Quadrilateral(UL, UR, LL, LR, 3, Color.Red, ScreenManager.GraphicsDevice); view.UpdateTrackedArea(trackedArea); trackedLimb = new KinectTrackedObject(UL, UR, LL, LR); } if (buttonLR.IsClicked()) { LR = point; trackedArea = new Quadrilateral(UL, UR, LL, LR, 3, Color.Red, ScreenManager.GraphicsDevice); view.UpdateTrackedArea(trackedArea); trackedLimb = new KinectTrackedObject(UL, UR, LL, LR); } if (buttonLL.IsClicked()) { LL = point; trackedArea = new Quadrilateral(UL, UR, LL, LR, 3, Color.Red, ScreenManager.GraphicsDevice); view.UpdateTrackedArea(trackedArea); trackedLimb = new KinectTrackedObject(UL, UR, LL, LR); } if (selectButton.IsClicked()) { ((Manager)ScreenManager).kTrackedObj = trackedLimb; GameScreen gs = new GameScreen(); ScreenManager.AddScreen(gs, false); ScreenManager.RemoveScreen(this); } } }
/// <summary> /// /// </summary> /// <param name="trackedArea"></param> public void UpdateTrackedArea(Quadrilateral trackedArea) { this.trackedArea.UpperLeft = new Vector2(trackedArea.UpperLeft.X + positionRect.X, trackedArea.UpperLeft.Y + positionRect.Y); this.trackedArea.UpperRight = new Vector2(trackedArea.UpperRight.X + positionRect.X, trackedArea.UpperRight.Y + positionRect.Y); this.trackedArea.LowerLeft = new Vector2(trackedArea.LowerLeft.X + positionRect.X, trackedArea.LowerLeft.Y + positionRect.Y); this.trackedArea.LowerRight = new Vector2(trackedArea.LowerRight.X + positionRect.X, trackedArea.LowerRight.Y + positionRect.Y); this.trackedArea.Color = trackedArea.Color; this.trackedArea.LineWidth = trackedArea.LineWidth; }