protected override void Awake() { info = new WatchInteractionInformation(); allCoroutines = new Coroutine[12]; base.Awake(); }
protected void UpdateDisplay(ControllerInformation controller) { LightInteractionInformation info = (LightInteractionInformation)controller.GetFunctionalityInfoByType(typeof(LightInteractionInformation)); WatchInteractionInformation watchInfo = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); if (watchInfo.watch.activeSelf && vrInteraction.interactingWith == this) { GameObject correctPart = null; if (info.isOnTime) { if ((watchInfo.isWatchOnFront && interactingLight.StartTime < 13) || (!watchInfo.isWatchOnFront && interactingLight.StartTime > 12)) { correctPart = ((VRWatchInteraction)vrInteraction).getCorrectPart(interactingLight.StartTime, controller); } } else { if ((watchInfo.isWatchOnFront && interactingLight.EndTime < 13) || (!watchInfo.isWatchOnFront && interactingLight.EndTime > 12)) { correctPart = ((VRWatchInteraction)vrInteraction).getCorrectPart(interactingLight.EndTime, controller); } } foreach (var item in watchInfo.allParts) { if (item != correctPart) { ((VRWatchInteraction)vrInteraction).SetPartToNormal(item, controller); } } if (correctPart != null) { ((VRWatchInteraction)vrInteraction).SetPartToSelected(correctPart, controller); } } }
private void UpdateTime(ControllerInformation controller) { LightInteractionInformation info = (LightInteractionInformation)controller.GetFunctionalityInfoByType(typeof(LightInteractionInformation)); WatchInteractionInformation watchInfo = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); Vector2 touchpadValue = controllerManager.GetController(controller.trackedObj).GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad); int time = ((VRWatchInteraction)vrInteraction).getTimeByVector(touchpadValue); if (time != 0) { if (!watchInfo.isWatchOnFront) { time += 12; } if (info.isOnTime && Mathf.Floor(time) != Mathf.Floor(interactingLight.StartTime)) { interactingLight.StartTime = time; controllerManager.GetController(controller.trackedObj).TriggerHapticPulse(3000); UpdateDisplay(controller); if (interactingLight.taskCompleted[2] != null) { interactingLight.taskCompleted[2].Invoke(); } } else if (Mathf.Floor(time) != Mathf.Floor(interactingLight.EndTime)) { interactingLight.EndTime = time; controllerManager.GetController(controller.trackedObj).TriggerHapticPulse(3000); UpdateDisplay(controller); if (interactingLight.taskCompleted[2] != null) { interactingLight.taskCompleted[2].Invoke(); } } } }
public void ShowWatch(ControllerInformation controller) { WatchInteractionInformation info = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); info.watch.SetActive(true); updateDisplay(controller); //foreach (var item in controllerManager.controllerInfos) //{ // Debug.Log(item.functionalityInformations.Count); //} }
private GameObject[] GetOrderedParts(ControllerInformation controller) { WatchInteractionInformation info = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); GameObject[] parts = new GameObject[12]; for (int i = 0; i < parts.Length; i++) { parts[i] = info.watch.transform.GetChild(0).Find("Part" + (i + 1)).gameObject; } return(parts); }
protected override void AnyControllerUpdate(ControllerInformation controller) { base.AnyControllerUpdate(controller); WatchInteractionInformation info = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); if (interactingWith) { if (controllerManager.GetController(controller.trackedObj).GetPressDown(gripButton)) { StartCoroutine(SwitchSide(controller)); } } info.watch.transform.LookAt(head); }
protected override void OnControllerInitialized() { base.OnControllerInitialized(); foreach (var item in controllerManager.controllerInfos) { WatchInteractionInformation info = (WatchInteractionInformation)item.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); info.watch = Instantiate(watchPrefab, item.trackedObj.transform); info.watch.SetActive(false); info.allParts = GetOrderedParts(item); } }
protected override void AfterControllerIntialized() { var controllers = controllerManager.controllerInfos; for (int i = 0; i < controllers.Length; i++) { LightInteractionInformation info = (LightInteractionInformation)controllers[i].GetFunctionalityInfoByType(typeof(LightInteractionInformation)); WatchInteractionInformation watchInfo = (WatchInteractionInformation)controllers[i].GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); info.isOnTime = (i == 0 ? true : false); info.OnOffTimeObject = (GameObject)Instantiate(accordingTimePrefab[i], watchInfo.watch.transform, false); info.OnOffTimeObject.SetActive(false); } }
public GameObject getCorrectPart(int time, ControllerInformation controller) { WatchInteractionInformation info = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); int newTime = time; if (newTime > 12) { newTime -= 12; } if (info.isWatchOnFront) { return(info.allParts[newTime - 1]); } else { return(info.allParts[12 - newTime]); } }
public void SetTime(int newTime, ControllerInformation controller) { WatchInteractionInformation info = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); if (timeScript.Time != newTime) { float f = timeScript.Time - Mathf.Floor(timeScript.Time); timeScript.Time = newTime + f; timeScript.isNight = !info.isWatchOnFront; OnTimeChanged(timeScript.Time); //notification for tutorial if (interactingClock.taskCompleted[2] != null) { interactingClock.taskCompleted[2].Invoke(); } } }
protected void UpdateDisplay(ControllerInformation controller) { WatchInteractionInformation info = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); if (info != null) { if (info.watch.activeSelf && vrInteraction.interactingWith == this) { foreach (var item in info.allParts) { ((VRWatchInteraction)vrInteraction).SetPartToNormal(item, controller); } if (info.isWatchOnFront != timeScript.isNight) { if (Mathf.FloorToInt(timeScript.Time) - 1 >= 0 && Mathf.FloorToInt(timeScript.Time) - 1 < info.allParts.Length) { ((VRWatchInteraction)vrInteraction).SetPartToSelected(((VRWatchInteraction)vrInteraction).getCorrectPart(Mathf.FloorToInt(timeScript.Time), controller), controller); } } } } }
public IEnumerator SwitchSide(ControllerInformation controller) { WatchInteractionInformation info = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); if (info.isSwitchingSide) { yield break; } updateDisplay(controller); info.isWatchOnFront = !info.isWatchOnFront; info.isSwitchingSide = true; Transform child = info.watch.transform.GetChild(0); Vector3 oldRot = child.localRotation.eulerAngles; Vector3 targetRot = oldRot; targetRot.z += 180; while (child.transform.localRotation != Quaternion.Euler(targetRot)) { child.transform.localRotation = Quaternion.RotateTowards(child.transform.localRotation, Quaternion.Euler(targetRot), TurnSpeed); yield return(0); } info.isSwitchingSide = false; }
public void HideWatch(ControllerInformation controller) { WatchInteractionInformation info = (WatchInteractionInformation)controller.GetFunctionalityInfoByType(typeof(WatchInteractionInformation)); info.watch.SetActive(false); }