private void switchInstrument(MainWindow.Player player, instrumentList instrument, MainWindow.PlayerMode mode = MainWindow.PlayerMode.None) { if (player.instrument != instrument || player.mode != mode) { removeInstrumentVisuals(player); clearInstrumentRefs(player); //Hide all the instrument-specific overlays & set the new instrument if (MainWindow.activeSkeletons.ContainsKey(player.skeleton.TrackingId)) { switch (instrument) { case instrumentList.Drums: setupDrums(MainWindow.activeSkeletons[player.skeleton.TrackingId]); MainWindow.activeSkeletons[player.skeleton.TrackingId].mode = MainWindow.PlayerMode.None; break; case instrumentList.GuitarLeft: case instrumentList.GuitarRight: setupGuitar(MainWindow.activeSkeletons[player.skeleton.TrackingId]); MainWindow.activeSkeletons[player.skeleton.TrackingId].mode = mode; break; case instrumentList.Keyboard: setupKeyboard(MainWindow.activeSkeletons[player.skeleton.TrackingId]); MainWindow.activeSkeletons[player.skeleton.TrackingId].mode = MainWindow.PlayerMode.None; break; case instrumentList.Triangle: setupTriangle(MainWindow.activeSkeletons[player.skeleton.TrackingId]); MainWindow.activeSkeletons[player.skeleton.TrackingId].mode = MainWindow.PlayerMode.None; break; } manageInstrumentImage(MainWindow.activeSkeletons[player.skeleton.TrackingId], instrument); MainWindow.activeSkeletons[player.skeleton.TrackingId].instrument = instrument; } } }
//Instrument management code private void manageInstrumentImage(MainWindow.Player player, instrumentList instrument) { //Remove the old image MainCanvas.Children.Remove(MainWindow.activeSkeletons[player.skeleton.TrackingId].instrumentImage); Image image = new Image(); //image.Name = "image" + aSkeleton.TrackingId.ToString(); //Overlay player.instrumentOverlay.Clear(); switch (instrument) { case instrumentList.Drums: image.Source = new BitmapImage(new Uri("images/drums.png", UriKind.Relative)); break; case instrumentList.GuitarLeft: case instrumentList.GuitarRight: if (player.mode == MainWindow.PlayerMode.Acoustic) { image.Source = new BitmapImage(new Uri("images/guitar.png", UriKind.Relative)); } else { image.Source = new BitmapImage(new Uri("images/electric-guitar.png", UriKind.Relative)); } break; case instrumentList.Keyboard: image.Source = new BitmapImage(new Uri("images/keyboard.png", UriKind.Relative)); break; case instrumentList.Triangle: image.Source = new BitmapImage(new Uri("images/triangle.png", UriKind.Relative)); break; } MainCanvas.Children.Add(image); player.instrumentImage = image; if (currentFocus != playerFocus.None && currentFocus != playerFocus.Picture) { MainWindow.hidePlayerOverlays(); } if (instrument == instrumentList.GuitarLeft || instrument == instrumentList.GuitarRight) { if (!player.instrumentOverlay.ContainsKey(0)) { player.instrumentOverlay.Add(0, new Image()); } else { player.instrumentOverlay[0] = new Image(); } MainCanvas.Children.Add(player.instrumentOverlay[0]); } }
private double scaledWidth(SkeletonPoint point, instrumentList instrument) { //Player distance (Converted to centimetres) double distance = point.Z * 100; double width = 0; switch (instrument) { case instrumentList.Drums: width = 1112.5 * Math.Pow(Math.E, -0.006 * distance); break; case instrumentList.GuitarRight: case instrumentList.GuitarLeft: width = 680.35 * Math.Pow(Math.E, -0.004 * distance); break; case instrumentList.Keyboard: width = 968.62 * Math.Pow(Math.E, -0.006 * distance); break; case instrumentList.Triangle: width = 178.74 * Math.Pow(Math.E, -0.006 * distance); break; } return width; }