private void NuitrackManager_onHandsTrackerUpdate(nuitrack.HandTrackerData handTrackerData) { active = false; nuitrack.UserHands userHands = handTrackerData.GetUserHandsByID(CurrentUserTracker.CurrentUser); if (userHands != null) { nuitrack.HandContent?handContent = currentHand == Hands.right ? userHands.RightHand : userHands.LeftHand; if (handContent != null) { Vector2 pageSize = parentRectTransform.rect.size; Vector3 lastPosition = baseRect.position; baseRect.anchoredPosition = new Vector2(handContent.Value.X * pageSize.x, -handContent.Value.Y * pageSize.y); float velocity = (baseRect.position - lastPosition).magnitude / (Time.time - lastTime); if (velocity < minVelocityInteractivePoint) { Press = handContent.Value.Click; } active = true; } } Press = Press && active; lastTime = Time.time; background.enabled = active; background.sprite = active && Press ? pressSprite : defaultSprite; }
private void NuitrackManager_onHandsTrackerUpdate(nuitrack.HandTrackerData handTrackerData) { active = false; press = false; if (handTrackerData != null) { nuitrack.UserHands userHands = handTrackerData.GetUserHandsByID(CurrentUserTracker.CurrentUser); if (userHands != null) { if (userHands.RightHand != null) { Vector2 curpos = new Vector2(userHands.RightHand.Value.X * Screen.currentResolution.width, userHands.RightHand.Value.Y * Screen.currentResolution.height); MouseOperations.SetCursorPosition((int)(curpos.x), (int)(curpos.y)); active = true; press = userHands.RightHand.Value.Click; /*if (pressed != press) * { * pressed = press; * * if (pressed) * { * MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.LeftUp | MouseOperations.MouseEventFlags.LeftDown); * } * }*/ } } } }
void HandleOnHandsUpdateEvent(nuitrack.HandTrackerData _handTrackerData) { if (handTrackerData != null) { handTrackerData.Dispose(); } handTrackerData = (nuitrack.HandTrackerData)_handTrackerData.Clone(); try { onHandsTrackerUpdate?.Invoke(handTrackerData); } catch (Exception ex) { Debug.LogException(ex); } if (handTrackerData == null) { return; } if (Users.CurrentUserID != 0) { currentHands = handTrackerData.GetUserHandsByID(Users.CurrentUserID); } else { currentHands = null; } }
public void CloseUserGen() { try { if (DepthSensor != null) { DepthSensor.OnUpdateEvent -= HandleOnDepthSensorUpdateEvent; } if (ColorSensor != null) { ColorSensor.OnUpdateEvent -= HandleOnColorSensorUpdateEvent; } if (UserTracker != null) { UserTracker.OnUpdateEvent -= HandleOnUserTrackerUpdateEvent; } if (SkeletonTracker != null) { SkeletonTracker.OnSkeletonUpdateEvent -= HandleOnSkeletonUpdateEvent; } if (GestureRecognizer != null) { GestureRecognizer.OnNewGesturesEvent -= OnNewGestures; } if (HandTracker != null) { HandTracker.OnUpdateEvent -= HandleOnHandsUpdateEvent; } DepthFrame = null; ColorFrame = null; UserFrame = null; skeletonData = null; handTrackerData = null; DepthSensor = null; ColorSensor = null; UserTracker = null; SkeletonTracker = null; GestureRecognizer = null; HandTracker = null; nuitrack.Nuitrack.Release(); Debug.Log("Nuitrack Stop OK"); nuitrackInitialized = false; } catch (System.Exception ex) { Debug.LogError(ex.ToString()); } }
void Update() { if (NuitrackManager.HandTrackerData != null) { handTrackerData = NuitrackManager.HandTrackerData; ProcessHands(handTrackerData); } else { HideHands(); } }
public void CloseUserGen() { try { if (depthSensor != null) { depthSensor.OnUpdateEvent -= HandleOnDepthSensorUpdateEvent; } if (colorSensor != null) { colorSensor.OnUpdateEvent -= HandleOnColorSensorUpdateEvent; } if (userTracker != null) { userTracker.OnUpdateEvent -= HandleOnUserTrackerUpdateEvent; } if (skeletonTracker != null) { skeletonTracker.OnSkeletonUpdateEvent -= HandleOnSkeletonUpdateEvent; } if (gestureRecognizer != null) { gestureRecognizer.OnNewGesturesEvent -= OnNewGestures; } if (handTracker != null) { handTracker.OnUpdateEvent -= HandleOnHandsUpdateEvent; } depthFrame = null; colorFrame = null; userFrame = null; skeletonData = null; handTrackerData = null; depthSensor = null; colorSensor = null; userTracker = null; skeletonTracker = null; gestureRecognizer = null; handTracker = null; nuitrack.Nuitrack.Release(); Debug.Log("CloseUserGen"); nuitrackInitialized = false; } catch (System.Exception ex) { Debug.LogError(ex.ToString()); } }
void Update() { if (nuitrackModules.HandTrackerData != null) { if (handTrackerData != nuitrackModules.HandTrackerData) { handTrackerData = nuitrackModules.HandTrackerData; ProcessHands(handTrackerData); } } else { HideHands(); } }
public void CloseUserGen() { if (depthSensor != null) { depthSensor.OnUpdateEvent -= HandleOnDepthSensorUpdateEvent; } if (colorSensor != null) { colorSensor.OnUpdateEvent -= HandleOnColorSensorUpdateEvent; } if (userTracker != null) { userTracker.OnUpdateEvent -= HandleOnUserTrackerUpdateEvent; } if (skeletonTracker != null) { skeletonTracker.OnSkeletonUpdateEvent -= HandleOnSkeletonUpdateEvent; } if (gestureRecognizer != null) { gestureRecognizer.OnNewGesturesEvent -= OnNewGestures; } if (handTracker != null) { handTracker.OnUpdateEvent -= HandleOnHandsUpdateEvent; } // Debug.Log ("preRelease"); nuitrack.Nuitrack.Release(); // Debug.Log ("postRelease"); depthSensor = null; colorSensor = null; userTracker = null; skeletonTracker = null; gestureRecognizer = null; handTracker = null; depthFrame = null; colorFrame = null; userFrame = null; skeletonData = null; handTrackerData = null; }
private void NuitrackManager_onHandsTrackerUpdate(nuitrack.HandTrackerData handTrackerData) { active = false; press = false; ItemDragHandler drag = GetComponent <ItemDragHandler>(); if (handTrackerData != null) { nuitrack.UserHands userHands = handTrackerData.GetUserHandsByID(CurrentUserTracker.CurrentUser); if (userHands != null) { if (userHands.RightHand != null) { Vector2 curpos = new Vector2(userHands.RightHand.Value.X * Screen.currentResolution.width, userHands.RightHand.Value.Y * Screen.currentResolution.height); MouseOperations.SetCursorPosition((int)(curpos.x), (int)(curpos.y)); active = true; press = userHands.RightHand.Value.Pressure == 1.0f; if (press) { objectToDrag = drag.GetDraggableTransformUnderMouse(); drag.dragObj(objectToDrag); dragging = true; } if (dragging) { drag.dragObj(objectToDrag); } else { drag.endDrag(objectToDrag); dragging = false; } } } } }
void HandleOnHandsUpdateEvent(nuitrack.HandTrackerData _handTrackerData) { handTrackerData = _handTrackerData; if (onHandsTrackerUpdate != null) { onHandsTrackerUpdate(handTrackerData); } //Debug.Log ("Grabbed hands"); if (handTrackerData == null) { return; } if (CurrentUserTracker.CurrentUser != 0) { currentHands = handTrackerData.GetUserHandsByID(CurrentUserTracker.CurrentUser); } else { currentHands = null; } }
void HandleOnHandsUpdateEvent(nuitrack.HandTrackerData _handTrackerData) { if (handTrackerData != null) { handTrackerData.Dispose(); } handTrackerData = (nuitrack.HandTrackerData)_handTrackerData.Clone(); onHandsTrackerUpdate?.Invoke(handTrackerData); //Debug.Log ("Grabbed hands"); if (handTrackerData == null) { return; } if (CurrentUserTracker.CurrentUser != 0) { currentHands = handTrackerData.GetUserHandsByID(CurrentUserTracker.CurrentUser); } else { currentHands = null; } }
private void NuitrackManager_onHandsTrackerUpdate(nuitrack.HandTrackerData handTrackerData) { active = false; if (handTrackerData != null) { nuitrack.UserHands userHands = handTrackerData.GetUserHandsByID(CurrentUserTracker.CurrentUser); if (userHands != null) { // Right hand if (userHands.RightHand != null) { //baseRect.anchoredPosition = new Vector2(userHands.RightHand.Value.X * Screen.width, -userHands.RightHand.Value.Y * Screen.height); rightHandPos = new Vector3(userHands.RightHand.Value.X * Screen.width, -userHands.RightHand.Value.Y * Screen.height, ZPosition); //Debug.Log("Right: " + rightHandPos); rightHandPic.transform.position = rightHandPos; active = true; } // Left hand if (userHands.LeftHand != null) { //baseRect.anchoredPosition = new Vector2(userHands.LeftHand.Value.X * Screen.width, -userHands.LeftHand.Value.Y * Screen.height); leftHandPos = new Vector3(userHands.LeftHand.Value.X * Screen.width, -userHands.LeftHand.Value.Y * Screen.height, ZPosition); leftHandPic.transform.position = leftHandPos; //Debug.Log("Left: " + leftHandPos); active = true; } } } }
private void NuitrackManager_onHandsTrackerUpdate(nuitrack.HandTrackerData handTrackerData) { active = false; press = false; if (handTrackerData != null) { nuitrack.UserHands userHands = handTrackerData.GetUserHandsByID(CurrentUserTracker.CurrentUser); if (userHands != null) { if (currentHand == Hands.right && userHands.RightHand != null) { baseRect.anchoredPosition = new Vector2(userHands.RightHand.Value.X * Screen.width, -userHands.RightHand.Value.Y * Screen.height); active = true; press = userHands.RightHand.Value.Click; } else if (currentHand == Hands.left && userHands.LeftHand != null) { baseRect.anchoredPosition = new Vector2(userHands.LeftHand.Value.X * Screen.width, -userHands.LeftHand.Value.Y * Screen.height); active = true; press = userHands.LeftHand.Value.Click; } } } background.enabled = active; background.sprite = active && press ? pressSprite : defaultSprite; if (!active) { return; } Vector2 pointOnScreenPosition = cam.WorldToScreenPoint(transform.position); eventData.delta = pointOnScreenPosition - eventData.position; eventData.position = pointOnScreenPosition; raycastResults.Clear(); EventSystem.current.RaycastAll(eventData, raycastResults); ImageItem newButton = null; for (int i = 0; i < raycastResults.Count && newButton == null; i++) { newButton = raycastResults[i].gameObject.GetComponent <ImageItem>(); } if (newButton != selectedButton) { if (selectedButton != null) { selectedButton.OnPointerExit(eventData); } selectedButton = newButton; if (selectedButton != null) { selectedButton.OnPointerEnter(eventData); } } else if (selectedButton != null) { if (press) { if (eventData.delta.sqrMagnitude < dragSensitivity && !eventData.dragging) { eventData.dragging = true; selectedButton.OnPointerDown(eventData); } } else if (eventData.dragging) { eventData.dragging = false; selectedButton.OnPointerUp(eventData); } if (press) { selectedButton.OnDrag(eventData); } } }
public void ChangeModules(bool depthOn, bool colorOn, bool userOn, bool skeletonOn, bool handsOn, bool gesturesOn) { try { // if (depthSensor != null) depthSensor.OnUpdateEvent -= DepthUpdate; // if (userTracker != null) userTracker.OnUpdateEvent -= UserUpdate; // if (skeletonTracker != null) skeletonTracker.OnSkeletonUpdateEvent -= SkeletonsUpdate; // if (handTracker != null) handTracker.OnUpdateEvent -= HandTrackerUpdate; // if (gestureRecognizer != null) gestureRecognizer.OnNewGesturesEvent -= GesturesUpdate; //* if (!nuitrackInitialized) { #if UNITY_IOS nuitrack.Nuitrack.Init("", nuitrack.Nuitrack.NuitrackMode.DEBUG); #else nuitrack.Nuitrack.Init(); #endif Debug.Log("init ok"); depthSensorInit = nuitrack.DepthSensor.Create(); colorSensorInit = nuitrack.ColorSensor.Create(); userTrackerInit = nuitrack.UserTracker.Create(); skeletonTrackerInit = nuitrack.SkeletonTracker.Create(); handTrackerInit = nuitrack.HandTracker.Create(); gestureRecognizerInit = nuitrack.GestureRecognizer.Create(); nuitrack.Nuitrack.Run(); Debug.Log("run ok"); nuitrackInitialized = true; } // */ depthFrame = null; colorFrame = null; userFrame = null; skeletonData = null; handTrackerData = null; gesturesData = null; // // depthSensor = null; // userTracker = null; // skeletonTracker = null; // handTracker = null; // gestureRecognizer = null; //if (issuesProcessor != null) Destroy(issuesProcessor); if (prevDepth != depthOn) { prevDepth = depthOn; if (depthOn) { depthSensor = depthSensorInit; depthSensorInit.OnUpdateEvent += DepthUpdate; } else { depthSensorInit.OnUpdateEvent -= DepthUpdate; depthSensor = null; } } if (prevColor != colorOn) { prevColor = colorOn; if (colorOn) { colorSensor = colorSensorInit; colorSensorInit.OnUpdateEvent += ColorUpdate; } else { colorSensorInit.OnUpdateEvent -= ColorUpdate; colorSensor = null; } } if (prevUser != userOn) { prevUser = userOn; if (userOn) { userTracker = userTrackerInit; userTrackerInit.OnUpdateEvent += UserUpdate; } else { userTrackerInit.OnUpdateEvent -= UserUpdate; userTracker = null; } } if (skeletonOn != prevSkel) { prevSkel = skeletonOn; if (skeletonOn) { skeletonTracker = skeletonTrackerInit; skeletonTrackerInit.OnSkeletonUpdateEvent += SkeletonsUpdate; } else { skeletonTrackerInit.OnSkeletonUpdateEvent -= SkeletonsUpdate; skeletonTracker = null; } } if (prevHand != handsOn) { prevHand = handsOn; if (handsOn) { handTracker = handTrackerInit; handTrackerInit.OnUpdateEvent += HandTrackerUpdate; } else { handTrackerInit.OnUpdateEvent -= HandTrackerUpdate; handTracker = null; } } if (prevGesture != gesturesOn) { prevGesture = gesturesOn; if (gesturesOn) { gestureRecognizer = gestureRecognizerInit; gestureRecognizerInit.OnNewGesturesEvent += GesturesUpdate; } else { gestureRecognizerInit.OnNewGesturesEvent -= GesturesUpdate; gestureRecognizer = null; } } //issuesProcessor = (GameObject)Instantiate(issuesProcessorPrefab); } catch (Exception ex) { exceptionsLogger.AddEntry(ex.ToString()); } }
public void CloseSensor(KinectInterop.SensorData sensorData) { if (colorWebCam) { colorWebCam.Stop(); colorWebCam = null; } if (coordMapper != null) { coordMapper.CleanUp(); coordMapper = null; } if (colorSensor != null) { colorSensor.OnUpdateEvent -= HandleOnColorSensorUpdateEvent; colorSensor = null; colorFrame = null; } if (depthSensor != null) { depthSensor.OnUpdateEvent -= HandleOnDepthSensorUpdateEvent; depthSensor = null; depthFrame = null; } if (userTracker != null) { userTracker.OnUpdateEvent -= HandleOnUserTrackerUpdateEvent; userTracker = null; userFrame = null; } if (skeletonTracker != null) { skeletonTracker.OnSkeletonUpdateEvent -= HandleOnSkeletonUpdateEvent; skeletonTracker = null; skeletonData = null; } if (handTracker != null) { handTracker.OnUpdateEvent -= HandleOnHandsUpdateEvent; handTracker = null; handTrackerData = null; } if (gestureRecognizer != null) { gestureRecognizer.OnNewGesturesEvent -= OnNewGestures; gestureRecognizer = null; } if (bNuitrackInited) { bNuitrackInited = false; nuitrack.Nuitrack.onIssueUpdateEvent -= OnIssuesUpdate; NuitrackTerm(); } Debug.Log("Nuitrack sensor closed"); }
void ChangeModulsState(bool skel, bool hand, bool depth, bool color, bool gest, bool user) { // Debug.Log ("" + skel + hand + depth + gest + user); if (skeletonTracker == null) { return; } if (prevSkel != skel) { skeletonData = null; prevSkel = skel; if (skel) { skeletonTracker.OnSkeletonUpdateEvent += HandleOnSkeletonUpdateEvent; } else { skeletonTracker.OnSkeletonUpdateEvent -= HandleOnSkeletonUpdateEvent; } } if (prevHand != hand) { handTrackerData = null; prevHand = hand; if (hand) { handTracker.OnUpdateEvent += HandleOnHandsUpdateEvent; } else { handTracker.OnUpdateEvent -= HandleOnHandsUpdateEvent; } } if (prevGest != gest) { prevGest = gest; if (gest) { gestureRecognizer.OnNewGesturesEvent += OnNewGestures; } else { gestureRecognizer.OnNewGesturesEvent -= OnNewGestures; } } if (prevDepth != depth) { depthFrame = null; prevDepth = depth; if (depth) { depthSensor.OnUpdateEvent += HandleOnDepthSensorUpdateEvent; } else { depthSensor.OnUpdateEvent -= HandleOnDepthSensorUpdateEvent; } } if (prevColor != color) { colorFrame = null; prevColor = color; if (color) { colorSensor.OnUpdateEvent += HandleOnColorSensorUpdateEvent; } else { colorSensor.OnUpdateEvent -= HandleOnColorSensorUpdateEvent; } } if (prevUser != user) { userFrame = null; prevUser = user; if (user) { userTracker.OnUpdateEvent += HandleOnUserTrackerUpdateEvent; } else { userTracker.OnUpdateEvent -= HandleOnUserTrackerUpdateEvent; } } }
private void HandleOnHandsUpdateEvent(nuitrack.HandTrackerData _handTrackerData) { handTrackerData = _handTrackerData; //handDataTimestamp = DateTime.Now.Ticks / 10000; }
private void InitTrackers(bool depthOn, bool colorOn, bool userOn, bool skeletonOn, bool handsOn, bool gesturesOn) { if (!nuitrackInitialized) { nuitrack.Nuitrack.Init(); Debug.Log("init ok"); depthSensorInit = nuitrack.DepthSensor.Create(); colorSensorInit = nuitrack.ColorSensor.Create(); userTrackerInit = nuitrack.UserTracker.Create(); skeletonTrackerInit = nuitrack.SkeletonTracker.Create(); handTrackerInit = nuitrack.HandTracker.Create(); gestureRecognizerInit = nuitrack.GestureRecognizer.Create(); nuitrack.Nuitrack.Run(); Debug.Log("run ok"); nuitrackInitialized = true; } depthFrame = null; colorFrame = null; userFrame = null; skeletonData = null; handTrackerData = null; gesturesData = null; // // depthSensor = null; // userTracker = null; // skeletonTracker = null; // handTracker = null; // gestureRecognizer = null; //if (issuesProcessor != null) Destroy(issuesProcessor); if (prevDepth != depthOn) { prevDepth = depthOn; if (depthOn) { depthSensor = depthSensorInit; depthSensorInit.OnUpdateEvent += DepthUpdate; } else { depthSensorInit.OnUpdateEvent -= DepthUpdate; depthSensor = null; } } if (prevColor != colorOn) { prevColor = colorOn; if (colorOn) { colorSensor = colorSensorInit; colorSensorInit.OnUpdateEvent += ColorUpdate; } else { colorSensorInit.OnUpdateEvent -= ColorUpdate; colorSensor = null; } } if (prevUser != userOn) { prevUser = userOn; if (userOn) { userTracker = userTrackerInit; userTrackerInit.OnUpdateEvent += UserUpdate; } else { userTrackerInit.OnUpdateEvent -= UserUpdate; userTracker = null; } } if (skeletonOn != prevSkel) { prevSkel = skeletonOn; if (skeletonOn) { skeletonTracker = skeletonTrackerInit; skeletonTrackerInit.OnSkeletonUpdateEvent += SkeletonsUpdate; } else { skeletonTrackerInit.OnSkeletonUpdateEvent -= SkeletonsUpdate; skeletonTracker = null; } } if (prevHand != handsOn) { prevHand = handsOn; if (handsOn) { handTracker = handTrackerInit; handTrackerInit.OnUpdateEvent += HandTrackerUpdate; } else { handTrackerInit.OnUpdateEvent -= HandTrackerUpdate; handTracker = null; } } if (prevGesture != gesturesOn) { prevGesture = gesturesOn; if (gesturesOn) { gestureRecognizer = gestureRecognizerInit; gestureRecognizerInit.OnNewGesturesEvent += GesturesUpdate; } else { gestureRecognizerInit.OnNewGesturesEvent -= GesturesUpdate; gestureRecognizer = null; } } StopThread(); }
private void NuitrackManager_onHandsTrackerUpdate(nuitrack.HandTrackerData handTrackerData) { active = false; press = false; if (handTrackerData != null) { nuitrack.UserHands userHands = handTrackerData.GetUserHandsByID(CurrentUserTracker.CurrentUser); if (userHands != null) { if (currentHand == Hands.right && userHands.RightHand != null) { baseRect.anchoredPosition = new Vector2(userHands.RightHand.Value.X * Screen.width, -userHands.RightHand.Value.Y * Screen.height); active = true; press = userHands.RightHand.Value.Click; } else if (currentHand == Hands.left && userHands.LeftHand != null) { baseRect.anchoredPosition = new Vector2(userHands.LeftHand.Value.X * Screen.width, -userHands.LeftHand.Value.Y * Screen.height); active = true; press = userHands.LeftHand.Value.Click; } } } background.enabled = active; background.sprite = active && press ? pressSprite : defaultSprite; if (!active) { return; } Vector2 pointOnScreenPosition = cam.WorldToScreenPoint(transform.position); eventData.delta = pointOnScreenPosition - eventData.position; eventData.position = pointOnScreenPosition; raycastResults.Clear(); EventSystem.current.RaycastAll(eventData, raycastResults); //ImageItem newButton = null; //for (int i = 0; i < raycastResults.Count && newButton == null; i++) // newButton = raycastResults[i].gameObject.GetComponent<ImageItem>(); Button newButton = null; for (int i = 0; i < raycastResults.Count && newButton == null; i++) { newButton = raycastResults[i].gameObject.GetComponent <Button>(); } if (newButton != selectedButton) { if (selectedButton != null) { selectedButton.OnPointerExit(eventData); elapsedTime = 0; timerImage.fillAmount = 0f; timerImage2.gameObject.SetActive(false); angle = -(timerImage.fillAmount * 360f + 90f) * Mathf.Deg2Rad; var offset = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * radius; timerImage2.transform.localPosition = new Vector3(offset.x, offset.y, 0f); } selectedButton = newButton; if (selectedButton != null) { selectedButton.OnPointerEnter(eventData); } } else if (selectedButton != null) { elapsedTime += Time.deltaTime; // Reduce fillAmount of Timer Filler Image(visual feedback) over waitTiming timerImage.fillAmount += (1f / endTime) * Time.deltaTime; timerImage2.gameObject.SetActive(true); angle = -(timerImage.fillAmount * 360f + 90f) * Mathf.Deg2Rad; var offset = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * radius; timerImage2.transform.localPosition = new Vector3(offset.x, offset.y, 0f); //Debug.Log("Fill: " + timerImage.fillAmount + " Angle: " + angle + " Center: " + center + " Offset: " + offset + " Result: " + result + " pos: " + timerImage2.transform.position); if (elapsedTime >= endTime) { elapsedTime = 0; timerImage.fillAmount = 0f; timerImage2.gameObject.SetActive(false); angle = -(timerImage.fillAmount * 360f + 90f) * Mathf.Deg2Rad; var offset1 = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * radius; timerImage2.transform.localPosition = new Vector3(offset1.x, offset1.y, 0f); selectedButton.OnPointerClick(eventData); //Go to Start game from the button check if (selectedButton.name == "Start") { Menu_Manager.Instance.Tutorial_Mode = false; Menu_Manager.Instance.In_Game(); } //Return to main menu else if (selectedButton.name == "Return_MainMenu") { Menu_Manager.Instance.OnGameMenu(); } //Go to Tutorial Scene else if (selectedButton.name == "Tutorial") { Menu_Manager.Instance.Tutorial_Mode = true; Menu_Manager.Instance.In_Game(); } //Go to Options Scene else if (selectedButton.name == "Options") { Menu_Manager.Instance.OnOptions(); } //Go back to previous gameplay/selections else if (selectedButton.name == "Back") { Menu_Manager.Instance.Resume(); } //Close applications else if (selectedButton.name == "Exit") { Menu_Manager.Instance.Exit(); } //Go to HighScore Scene else if (selectedButton.name == "HighScore") { Menu_Manager.Instance.HighScore(); } //Go to Credits Scene else if (selectedButton.name == "Credits") { Menu_Manager.Instance.Credits(); } //Open Play section of canvas else if (selectedButton.name == "Play") { MainMenuSections.SetActive(false); ExtraSections.SetActive(false); PlaySections.SetActive(true); } //Open MenuSelect section of canvas else if (selectedButton.name == "Back_MenuSelect") { MainMenuSections.SetActive(true); ExtraSections.SetActive(false); PlaySections.SetActive(false); } //Open Extras section of canvas else if (selectedButton.name == "Extra") { MainMenuSections.SetActive(false); ExtraSections.SetActive(true); PlaySections.SetActive(false); } //Option Menu to check if SFX if mute or unmute else if (selectedButton.name == "SFX_Check") { //elapsedTime += Time.deltaTime; //if (elapsedTime > endTime) //{ if (selectedButton.GetComponentInParent <Toggle>().isOn == true) { selectedButton.GetComponentInParent <Toggle>().isOn = false; if (TemptSFX == 0.0f) { TemptSFX = 0.5f; Audio_Manager.Instance.SFXMaxAudio(TemptSFX); } else { Audio_Manager.Instance.SFXMaxAudio(TemptSFX); } elapsedTime = 0; Debug.Log("Off"); } else { selectedButton.GetComponentInParent <Toggle>().isOn = true; Audio_Manager.Instance.SFXMinAudio(); elapsedTime = 0; Debug.Log("On"); } //} //selectedButton.OnDrag(eventData); } //Option Menu to check if BGM if mute or unmute else if (selectedButton.name == "BGM_Check") { //elapsedTime += Time.deltaTime; //if (elapsedTime > endTime) //{ if (selectedButton.GetComponentInParent <Toggle>().isOn == true) { selectedButton.GetComponentInParent <Toggle>().isOn = false; if (TemptBGM == 0.0f) { TemptBGM = 0.5f; Audio_Manager.Instance.BGMMaxAudio(TemptBGM); } else { Audio_Manager.Instance.BGMMaxAudio(TemptBGM); } elapsedTime = 0; Debug.Log("Off"); } else { selectedButton.GetComponentInParent <Toggle>().isOn = true; Audio_Manager.Instance.BGMMinAudio(); elapsedTime = 0; Debug.Log("On"); } // } } } //Option Menu to increase sounds if (selectedButton.name == "Increase_SFX" || selectedButton.name == "Increase_BGM") { if (selectedButton.name == "Increase_BGM") { TemptBGM = selectedButton.GetComponentInParent <Slider>().value; Audio_Manager.Instance.SetBgmLvl(selectedButton.GetComponentInParent <Slider>().value); } if (selectedButton.name == "Increase_SFX") { TemptSFX = selectedButton.GetComponentInParent <Slider>().value; Audio_Manager.Instance.SetSfxLvl(selectedButton.GetComponentInParent <Slider>().value); } selectedButton.GetComponentInParent <Slider>().value += 40 * Time.deltaTime; if (selectedButton.GetComponentInParent <Slider>().value >= 0) { selectedButton.GetComponentInParent <Slider>().value = 0; } } //Option Menu to decrease sounds else if (selectedButton.name == "Decrease_SFX" || selectedButton.name == "Decrease_BGM") { if (selectedButton.name == "Decrease_BGM") { TemptBGM = selectedButton.GetComponentInParent <Slider>().value; Audio_Manager.Instance.SetBgmLvl(selectedButton.GetComponentInParent <Slider>().value); } if (selectedButton.name == "Decrease_SFX") { TemptSFX = selectedButton.GetComponentInParent <Slider>().value; Audio_Manager.Instance.SetSfxLvl(selectedButton.GetComponentInParent <Slider>().value); } selectedButton.GetComponentInParent <Slider>().value -= 40 * Time.deltaTime; if (selectedButton.GetComponentInParent <Slider>().value <= -80) { selectedButton.GetComponentInParent <Slider>().value = -80; } } } }
void HandTrackerUpdate(nuitrack.HandTrackerData _handTrackerData) { handTrackerData = _handTrackerData; }
private void NuitrackManager_onHandsTrackerUpdate(nuitrack.HandTrackerData handTrackerData) { active = false; press = false; // Set Hand Pointer Data if can detect hand if (handTrackerData != null) { nuitrack.UserHands userHands = handTrackerData.GetUserHandsByID(CurrentUserTracker.CurrentUser); if (userHands != null) { if (currentHand == Hands.right && userHands.RightHand != null) { baseRect.anchoredPosition = new Vector2(userHands.RightHand.Value.X * Screen.width, -userHands.RightHand.Value.Y * Screen.height); active = true; press = userHands.RightHand.Value.Click; } else if (currentHand == Hands.left && userHands.LeftHand != null) { baseRect.anchoredPosition = new Vector2(userHands.LeftHand.Value.X * Screen.width, -userHands.LeftHand.Value.Y * Screen.height); active = true; press = userHands.LeftHand.Value.Click; } } } // Show Image background.enabled = active; if (active) { // Change back to Hand Sprite if not holding food if (!foodSO) { background.sprite = defaultSprite; } } else { // Do not do anything if not active return; } // Raycast from Screen Space to World Space var pointOnScreenPosition = (Vector2)cam.WorldToScreenPoint(transform.position); eventData.delta = pointOnScreenPosition - eventData.position; eventData.position = pointOnScreenPosition; raycastResults.Clear(); EventSystem.current.RaycastAll(eventData, raycastResults); Button newButton = null; for (int i = 0; i < raycastResults.Count && newButton == null; i++) { newButton = raycastResults[i].gameObject.GetComponent <Button>(); } if (newButton != selectedButton) { // When current selected button is not previous sselected button if (selectedButton != null) { selectedButton.OnPointerExit(eventData); // Reset Hand Timer, Frame and Flower handElapsedTime = 0f; timerImage.fillAmount = 0f; timerImage2.gameObject.SetActive(false); angle = -(timerImage.fillAmount * 360f + 90f) * Mathf.Deg2Rad; var offset = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * radius; timerImage2.transform.localPosition = new Vector3(offset.x, offset.y, 0f); // If previous selected button is Ingredient Panel, stop zooming if (selectedButton.GetComponent <IngredientPanel>()) { selectedButton.GetComponent <IngredientPanel>().Zoomasaurus(false); } // If any of the cooking appliance's hover hint is active, close it if (LevelManager.Instance.cookingAppliances.Any(x => x.hoverHint.activeSelf)) { foreach (var app in LevelManager.Instance.cookingAppliances) { if (app.hoverHint.activeSelf) { app.OpenCloseHint(false); app.OpenCloseCanvas(false); } } } } // Updates selected buttpon selectedButton = newButton; if (selectedButton != null) { selectedButton.OnPointerEnter(eventData); // If selected button is Ingredient Panel, start zooming if (selectedButton.GetComponent <IngredientPanel>()) { selectedButton.GetComponent <IngredientPanel>().Zoomasaurus(true); } } } else if (selectedButton != null) { // Runs timer handElapsedTime += Time.deltaTime; // Reduce fillAmount of Timer Filler Image(visual feedback) over waitTiming timerImage.fillAmount += (1f / handTimer) * Time.deltaTime; // Shows Flower Image and Move it in a circle timerImage2.gameObject.SetActive(true); angle = -(timerImage.fillAmount * 360f + 90f) * Mathf.Deg2Rad; var offset = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * radius; timerImage2.transform.localPosition = new Vector3(offset.x, offset.y, 0f); #region Highlight Code // If previously got hit other object if (hitTransform) { // Disable highlight for hit object and its children var o = hitTransform.GetComponentsInChildren <Outline>(); foreach (var oL in o) { if (!oL.selected) { oL.enabled = false; } } } // When the game is not paused, menus not active and selected button is not pause nor guide image if (PauseManager.Instance != null && !PauseManager.Instance.isPaused && !foodListPanel.activeSelf && !ingredientListPanel.activeSelf && selectedButton.name != "Pause" && selectedButton.name != "GuideImage") { // If selecting Cooking Appliance(Frying Pan, Pot 1, Pot 2) if (LevelManager.Instance.cookingAppliances.Any(x => x.gameObject.GetInstanceID() == selectedButton.transform.parent.parent.gameObject.GetInstanceID())) { var something = LevelManager.Instance.cookingAppliances.Where(x => x.gameObject.GetInstanceID() == selectedButton.transform.parent.parent.gameObject.GetInstanceID()).ToList(); if (something.Count != 1) { return; } var app = something[0].GetComponent <CookingAppliance>(); app.OpenCloseHint(true); app.OpenCloseCanvas(true); } // When Carrying food else if (foodSO) { // If selecting customer if (CustomerSpawner.Instance.customerDic.Any(x => x.Value.gameObject.GetInstanceID() == selectedButton.transform.parent.parent.gameObject.GetInstanceID())) { var something = CustomerSpawner.Instance.customerDic.Where(x => x.Value.gameObject.GetInstanceID() == selectedButton.transform.parent.parent.gameObject.GetInstanceID()).ToList(); if (something.Count != 1) { return; } var customer = something[0].Value.GetComponent <Customer>(); hitTransform = customer.transform; ShowOutline(customer.gameObject); } } } #endregion Highlight Code // When hand timer reach limit if (handElapsedTime >= handTimer) { // Reset Hand Timer, Frame, and Flower image handElapsedTime = 0f; timerImage.fillAmount = 0f; timerImage2.gameObject.SetActive(false); angle = -(timerImage.fillAmount * 360f + 90f) * Mathf.Deg2Rad; var offset1 = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * radius; timerImage2.transform.localPosition = new Vector3(offset1.x, offset1.y, 0f); selectedButton.OnPointerClick(eventData); // When the game is not paused, menus not active and selected button is not pause if (PauseManager.Instance != null && !PauseManager.Instance.isPaused && !foodListPanel.activeSelf && !ingredientListPanel.activeSelf && selectedButton.name != "Pause") { // Do not do anything if haven't finish guiding about intro and order if (selectedButton.name == "GuideImage") { if (!selectedButton.GetComponent <Guide>().finishedIntro || !selectedButton.GetComponent <Guide>().finishedOrder) { return; } } // If selecting Cooking Appliance(Frying Pan, Pot 1, Pot 2) else if (LevelManager.Instance.cookingAppliances.Any(x => x.gameObject.GetInstanceID() == selectedButton.transform.parent.parent.gameObject.GetInstanceID())) { var something = LevelManager.Instance.cookingAppliances.Where(x => x.gameObject.GetInstanceID() == selectedButton.transform.parent.parent.gameObject.GetInstanceID()).ToList(); if (something.Count != 1) { return; } var app = something[0].GetComponent <CookingAppliance>(); // Haven't done cooking food if (!app.isDone) { // Open up Food list to choose "food to cook" app.OpenCloseFoodMenu(true); // If the game is in Tutorial Scene and Guide Image is not active if (Menu_Manager.Instance.Tutorial_Mode && !Guide.Instance.gameObject.activeSelf) { // If haven't guide cook, start guiding if (!Guide.Instance.CheckIfGuidedCook()) { Guide.Instance.Show(); } } } // Done cooking food else { // If previously selected another cooking Appliance if (cookingAppliance) { DropItem(cookingAppliance); } // Select food and store it for serving customer cookingAppliance = app.gameObject; foodSO = app.TakeFood(); // Allow interactions with customer when holding food foreach (var pair in CustomerSpawner.Instance.customerDic) { pair.Value.AllowHover(true); } // Change Hand Sprite to Food Sprite background.sprite = foodSO.sprite; } } // When Carrying food else if (foodSO) { // If selecting customer if (CustomerSpawner.Instance.customerDic.Any(x => x.Value.gameObject.GetInstanceID() == selectedButton.transform.parent.parent.gameObject.GetInstanceID())) { var something = CustomerSpawner.Instance.customerDic.Where(x => x.Value.gameObject.GetInstanceID() == selectedButton.transform.parent.parent.gameObject.GetInstanceID()).ToList(); if (something.Count != 1) { return; } var customer = something[0].Value.GetComponent <Customer>(); // When customer is not fighting if (!customer.fighting) { // Serve Correct if (foodSO == customer.foodOrdered) { // Set customer's animations and sound effect customer.SetAnim(customer.idle, false); customer.SetAnim(customer.happy, true); customer.SetClip(Audio_Manager.Instance.audioDictionary["Coin Drop"]); // Served correct food, Add Score Score.Instance.Profit(customer.foodOrdered, customer.timerImage.fillAmount); // Customer leaves customer.Leave(); } // Serve Wrong else { // Set customer's animations customer.SetAnim(customer.idle, false); customer.SetAnim(customer.angry, true); // Served wrong food, Decrease Rate Score.Instance.rate -= 0.1f; customer.fighting = true; foreach (CookingAppliance appliance in LevelManager.Instance.cookingAppliances) { if (!appliance.isDone) { appliance.NewFood(); } } customer.player = Player.Instance.transform; // If the game is in Tutorial Scene if (Guide.Instance != null) { Guide.Instance.gameObject.SetActive(true); } } // Disable interactions with customer foreach (var pair in CustomerSpawner.Instance.customerDic) { pair.Value.AllowHover(false); } // Reset cooking Appliance status CookingAppliance app = cookingAppliance.GetComponent <CookingAppliance>(); app.NewFood(); // Drop food DropItem(cookingAppliance); } } } } } } else { // Disable highlight for every objects that have outline var ol = FindObjectsOfType <Outline>(); foreach (var oL in ol) { if (!oL.selected) { oL.enabled = false; } } } // If any customer is fighting with player if (CustomerSpawner.Instance.customerDic.Any(x => x.Value.fighting == true)) { // If the game is in Pause Status, do not do anything if (PauseManager.Instance != null && PauseManager.Instance.isPaused) { return; } var something = CustomerSpawner.Instance.customerDic.Where(x => x.Value.fighting == true).ToList(); foreach (var pair in something) { var customer = pair.Value.GetComponent <Customer>(); // Set player transform for customer to have a target to shoot at if (!customer.player) { customer.player = Player.Instance.transform; } } // If menus are inactive and player is performing Grab Gesture if (!foodListPanel.activeSelf && !ingredientListPanel.activeSelf && press) { // Runs timer shootingElapsedTime += Time.deltaTime; // When timer reach limit if (shootingElapsedTime >= shootingTimer) { // Reset timer shootingElapsedTime = 0f; // Shoot bullet towards hand icon GameObject Projectile = ObjectPool.Instance.GetPooledObject(ProjectilePrefab); // If projectile is not Null if (!Projectile) { return; } // Initialise position and direction of projectile Projectile.transform.position = transform.position; Projectile.GetComponent <Projectile>().dir = (transform.position - cam.transform.position).normalized; } } } }
void ProcessHands(nuitrack.HandTrackerData data) { if (data.NumUsers > 0) { for (int i = 0; i < data.UsersHands.Length; i++) { int userId = data.UsersHands[i].UserId; if (!hands.ContainsKey(userId)) { hands.Add(userId, new Image[2]); GameObject leftHand = (GameObject)Instantiate(handUIPrefab); GameObject rightHand = (GameObject)Instantiate(handUIPrefab); leftHand.transform.SetParent(handsContainer, false); rightHand.transform.SetParent(handsContainer, false); hands[userId][0] = leftHand.GetComponent <Image>(); hands[userId][1] = rightHand.GetComponent <Image>(); hands[userId][0].enabled = false; hands[userId][1].enabled = false; hands[userId][0].color = leftColor; hands[userId][1].color = rightColor; } } foreach (KeyValuePair <int, Image[]> kvp in hands) { nuitrack.UserHands userHands = data.GetUserHandsByID(kvp.Key); if (userHands == null) { hands[kvp.Key][0].enabled = false; hands[kvp.Key][1].enabled = false; } else { if ((userHands.LeftHand == null) || (userHands.LeftHand.Value.X == -1f)) { hands[kvp.Key][0].enabled = false; } else { hands[kvp.Key][0].enabled = true; Vector2 pos = new Vector2(userHands.LeftHand.Value.X, 1f - userHands.LeftHand.Value.Y); hands[kvp.Key][0].rectTransform.anchorMin = pos; hands[kvp.Key][0].rectTransform.anchorMax = pos; hands[kvp.Key][0].rectTransform.sizeDelta = userHands.LeftHand.Value.Click ? new Vector2(sizeClick, sizeClick) : new Vector2(sizeNormal, sizeNormal); } if ((userHands.RightHand == null) || (userHands.RightHand.Value.X == -1f)) { hands[kvp.Key][1].enabled = false; } else { hands[kvp.Key][1].enabled = true; Vector2 pos = new Vector2(userHands.RightHand.Value.X, 1f - userHands.RightHand.Value.Y); hands[kvp.Key][1].rectTransform.anchorMin = pos; hands[kvp.Key][1].rectTransform.anchorMax = pos; hands[kvp.Key][1].rectTransform.sizeDelta = userHands.RightHand.Value.Click ? new Vector2(sizeClick, sizeClick) : new Vector2(sizeNormal, sizeNormal); } } } } else { foreach (KeyValuePair <int, Image[]> kvp in hands) { kvp.Value[0].enabled = false; kvp.Value[1].enabled = false; } } }
public void ChangeModulesState(bool skel, bool hand, bool depth, bool color, bool gest, bool user) { skeletonTrackerModuleOn = skel; handsTrackerModuleOn = hand; depthModuleOn = depth; colorModuleOn = color; gesturesRecognizerModuleOn = gest; userTrackerModuleOn = user; if (SkeletonTracker == null) { return; } if (prevSkel != skel) { skeletonData = null; prevSkel = skel; if (skel) { SkeletonTracker.OnSkeletonUpdateEvent += HandleOnSkeletonUpdateEvent; } else { SkeletonTracker.OnSkeletonUpdateEvent -= HandleOnSkeletonUpdateEvent; } } if (prevHand != hand) { handTrackerData = null; prevHand = hand; if (hand) { HandTracker.OnUpdateEvent += HandleOnHandsUpdateEvent; } else { HandTracker.OnUpdateEvent -= HandleOnHandsUpdateEvent; } } if (prevGest != gest) { prevGest = gest; if (gest) { GestureRecognizer.OnNewGesturesEvent += OnNewGestures; } else { GestureRecognizer.OnNewGesturesEvent -= OnNewGestures; } } if (prevDepth != depth) { DepthFrame = null; prevDepth = depth; if (depth) { DepthSensor.OnUpdateEvent += HandleOnDepthSensorUpdateEvent; } else { DepthSensor.OnUpdateEvent -= HandleOnDepthSensorUpdateEvent; } } if (prevColor != color) { ColorFrame = null; prevColor = color; if (color) { ColorSensor.OnUpdateEvent += HandleOnColorSensorUpdateEvent; } else { ColorSensor.OnUpdateEvent -= HandleOnColorSensorUpdateEvent; } } if (prevUser != user) { UserFrame = null; prevUser = user; if (user) { UserTracker.OnUpdateEvent += HandleOnUserTrackerUpdateEvent; } else { UserTracker.OnUpdateEvent -= HandleOnUserTrackerUpdateEvent; } } }