// Update is called once per frame void Update() { if (controller == null) { Debug.Log("Null Controller!"); return; } triggerPressed = controller.GetPress(triggerButton); if (controller.GetPressDown(menuButton)) { zoomMode = !zoomMode; if (zoomMode) { zoomModeMat.SetColor("_TintColor", Color.magenta); } else { zoomModeMat.SetColor("_TintColor", Color.blue); } } RaycastHit hit; if (controller.GetPressDown(triggerButton)) { //print("GotPress, Looking Forward: " + (transform.rotation * -Vector3.up)); if (fileMode) { if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, vFileLayer)) { ImageFilePanel ifp = hit.collider.gameObject.GetComponent <ImageFilePanel>(); ifp.Select(); iScript.GoToIndex(ifp.index); } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, vFileLayer)) { FolderPanel fp = hit.collider.gameObject.GetComponent <FolderPanel>(); fp.Select(); iScript.fScript.OpenDirectory(fp.filePath); } // Check for clicking Video Mode or Quit else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, modeLayer)) { UnityEngine.Application.LoadLevel(1); } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, quitLayer)) { UnityEngine.Application.Quit(); } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, proportionLayer)) { HighlightButton hb = hit.collider.gameObject.GetComponent <HighlightButton>(); hb.EngageModeCommand(); } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, arrangementLayer)) { HighlightButton hb = hit.collider.gameObject.GetComponent <HighlightButton>(); hb.EngageModeCommand(); } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, centerLayer)) { iScript.ResetPosition(); proximityFactor = 1.5f; otherController.proximityFactor = proximityFactor; } // Registers click on "Load Copied Directory" else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, loadLayer)) { castOffset = Vector3.zero; if (Clipboard.ContainsText()) { string text = Clipboard.GetText(); loadText.text = text; //print("Text: " + text); if (text.Length > 0) { dirScriptObject.SendMessage("LoadText", text); startupOverlay.SetActive(false); } } } // Registers click on folder else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, folderLayer)) { } // Registers click on scroll button - needs to manage movement afterward while held! else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, folderScrollLayer)) { if (!holdingFolderScroll) { oldPos = hit.point - scrollScript.transform.position; } else { scrollScript.Scroll((hit.point - scrollScript.transform.position - oldPos).x); oldPos = hit.point - scrollScript.transform.position; } holdingFolderScroll = true; } } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000)) { castOffset = hit.point - imageTransform.position; //print("Offset: " + castOffset); } else { castOffset = Vector3.zero; holdingFolderScroll = false; } } if (triggerPressed && castOffset.magnitude > 0 && !fileMode) { // Enables dragging of the image if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000)) { //castOffset = hit.point - imageTransform.position; //print("Offset: " + castOffset); imageTransform.position = hit.point - castOffset; iScript.UpdateActiveImage(); } } if (controller.GetPressDown(dButton)) { Vector2 padDir = controller.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0); if (padDir.x > 0.7f) { dirScriptObject.SendMessage("IndexUp"); } else if (padDir.x < -0.7f) { dirScriptObject.SendMessage("IndexDown"); } } if (controller.GetPress(dButton)) { Vector2 padDir = controller.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0); if (zoomMode) { if (padDir.y > 0.7f) { if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000)) { print("HitPoint: " + hit.collider.gameObject); // is triggered dirScriptObject.SendMessage("ZoomIn", hit.point); } else { dirScriptObject.SendMessage("ZoomIn", imageTransform.position); } } else if (padDir.y < -0.7f) { if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000)) { print("HitPoint: " + hit.collider.gameObject); // is triggered dirScriptObject.SendMessage("ZoomOut", hit.point); } else { dirScriptObject.SendMessage("ZoomOut", imageTransform.position); } } } else { // Next to player at -29 if (padDir.y > 0.7f) { proximityFactor += 1.25f * Time.deltaTime; otherController.proximityFactor = proximityFactor; //imageTransform.position = new Vector3(imageTransform.position.x, imageTransform.position.y, // imageTransform.position.z + 4 * Time.deltaTime); } else if (padDir.y < -0.7f) { proximityFactor -= 1.25f * Time.deltaTime; otherController.proximityFactor = proximityFactor; //imageTransform.position = new Vector3(imageTransform.position.x, imageTransform.position.y, // imageTransform.position.z - 4 * Time.deltaTime); } // default proximityFactor is 1.5 float zPos = 0.2963f * Mathf.Pow(proximityFactor, 3) - 29; imageTransform.localPosition = new Vector3(imageTransform.localPosition.x, imageTransform.localPosition.y, zPos); } } if (controller.GetPressDown(gripButton)) { //dirScriptObject.SendMessage("LoadText"); fileMode = !fileMode; loadManager.SetActive(fileMode); } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, modeLayer)) { HighlightPanel hp = hit.collider.gameObject.GetComponent <HighlightPanel>(); hp.isHighlighted = true; } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, quitLayer)) { HighlightPanel hp = hit.collider.gameObject.GetComponent <HighlightPanel>(); hp.isHighlighted = true; } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, loadLayer)) { HighlightPanel hp = hit.collider.gameObject.GetComponent <HighlightPanel>(); hp.isHighlighted = true; } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, vFileLayer)) { ImageFilePanel ifp = hit.collider.gameObject.GetComponent <ImageFilePanel>(); ifp.isHighlighted = true; ifp.text.color = Color.white; } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, proportionLayer)) { HighlightButton hb = hit.collider.gameObject.GetComponent <HighlightButton>(); hb.isHighlighted = true; } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, arrangementLayer)) { HighlightButton hb = hit.collider.gameObject.GetComponent <HighlightButton>(); hb.isHighlighted = true; } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, centerLayer)) { HighlightButton hb = hit.collider.gameObject.GetComponent <HighlightButton>(); hb.isHighlighted = true; } }
// Update is called once per frame void Update() { if (controller == null) { Debug.Log("Null Controller!"); return; } vScript.progHover = false; fileMode = vScript.fileMode; //print("Axis0: " + controller.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0)); // axis0 is 2D, has (x,y) on D-pad triggerPressed = controller.GetPress(triggerButton); // pos coordinates are local //print("RController Coords" + controller.transform.pos); // .6 to 1.4 vert(y), -.1 to .4 forward (z), -.3 to .7 sideways (x) // Both have multiple values change during tilting //print("RController Tilts" + controller.transform.rot.eulerAngles); //print("RController QTilts" + controller.transform.rot); //print("RController XTilts" + controller.transform.rot.eulerAngles.x); // Never seems to go beyond 270 to 50 //print("RController YTilts" + controller.transform.rot.eulerAngles.y); // Changed by motion on all 3 axes //print("RController ZTilts" + controller.transform.rot.eulerAngles.z); // Ranges from 270 to 90 on desired axis when normal // ranges from 90 to 270 when pulled back // Controller default rotation is laying flat //print("RController Angle:" + Quaternion.Angle(Quaternion.identity, controller.transform.rot)); //Quaternion rotFrame = Quaternion.AngleAxis(90, Vector3.right) * controller.transform.rot; //print("RController FrameAngle:" + Quaternion.Angle(Quaternion.identity, rotFrame)); // y ranges consitently from 270 to 90 for rotation on correct axis //print("RController FrameTilts" + rotFrame.eulerAngles); if (controller.GetPressDown(menuButton)) { zoomMode = !zoomMode; } if (fileMode) { zoomModeMat.SetColor("_TintColor", new Color(1, 0.4f, 0)); } else if (zoomMode) { zoomModeMat.SetColor("_TintColor", Color.magenta); } else { zoomModeMat.SetColor("_TintColor", Color.blue); } RaycastHit hit; // Need to replace "forward" with neg. "up" if (controller.GetPressDown(triggerButton)) { //print("GotPress, Looking Forward: " + (transform.rotation * -Vector3.up)); if (fileMode) { if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, vFileLayer)) { VideoFilePanel vfp = hit.collider.gameObject.GetComponent <VideoFilePanel>(); vfp.Select(); string fileDir = vfp.filePath; vScript.file = fileDir; vScript.LoadVideo(); startupOverlay.SetActive(false); } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, modeLayer)) { UnityEngine.Application.LoadLevel(0); } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, quitLayer)) { UnityEngine.Application.Quit(); } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, loopLayer)) { HighlightButton hb = hit.collider.gameObject.GetComponent <HighlightButton>(); hb.EngageModeCommand(); } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, centerLayer)) { vScript.ResetPosition(); proximityFactor = 2; otherController.proximityFactor = 2; } else { castOffset = Vector3.zero; if (Clipboard.ContainsText()) { string text = Clipboard.GetText(); loadText.text = text; print("Text: " + text); if (text.Length > 0) { vScript.text = text; vScript.LoadVideoDir(); } } } } else if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000)) { if (hit.collider.gameObject.layer == 5) // Plane is in UI layer { castOffset = hit.point - imageTransform.position; } else { castOffset = Vector3.zero; } //print("Offset: " + castOffset); } else { castOffset = Vector3.zero; } } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, progLayer)) { vScript.progHover = true; vScript.ProgBarHover(hit.point); } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, vFileLayer)) { VideoFilePanel vfp = hit.collider.gameObject.GetComponent <VideoFilePanel>(); vfp.isHighlighted = true; vfp.text.color = Color.white; } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, modeLayer)) { HighlightPanel hp = hit.collider.gameObject.GetComponent <HighlightPanel>(); hp.isHighlighted = true; } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, quitLayer)) { HighlightPanel hp = hit.collider.gameObject.GetComponent <HighlightPanel>(); hp.isHighlighted = true; } if (triggerPressed && castOffset.magnitude > 0) { if (!vScript.progHover && Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, uiLayer)) { //castOffset = hit.point - imageTransform.position; //print("Offset: " + castOffset); imageTransform.position = hit.point - castOffset; } } else if (triggerPressed && vScript.progHover) { vScript.ProgBarClick(hit.point); } if (controller.GetPressDown(dButton)) { // nothing } if (controller.GetPress(dButton)) { Vector2 padDir = controller.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0); if (padDir.x > 0.7f) { //vScriptObject.SendMessage("IndexUp"); vScript.timeShifting = 1; } else if (padDir.x < -0.7f) { //vScriptObject.SendMessage("IndexDown"); vScript.timeShifting = -1; } //Vector2 padDir = controller.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0); if (fileMode) { if (padDir.y > 0.7f) { volumeBar.fillAmount += 0.33f * Time.deltaTime; //vScript.vPlayer.SetDirectAudioVolume(0, volumeBar.fillAmount); // NO EFFECT vScript.umPlayer.Volume = 100 * volumeBar.fillAmount; } else if (padDir.y < -0.7f) { volumeBar.fillAmount -= 0.33f * Time.deltaTime; //vScript.vPlayer.SetDirectAudioVolume(0, volumeBar.fillAmount); // NO EFFECT vScript.umPlayer.Volume = 100 * volumeBar.fillAmount; } } else if (zoomMode) { Vector3 hitPass = imageTransform.position; if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000)) { hitPass = hit.point; } if (padDir.y > 0.7f) { vScript.Zoom(true, hitPass); } else if (padDir.y < -0.7f) { vScript.Zoom(false, hitPass); } } else { // Next to player at -29 if (padDir.y > 0.7f) { proximityFactor += 1.25f * Time.deltaTime; otherController.proximityFactor = proximityFactor; //imageTransform.position = new Vector3(imageTransform.position.x, imageTransform.position.y, // imageTransform.position.z + 4 * Time.deltaTime); } else if (padDir.y < -0.7f) { proximityFactor -= 1.25f * Time.deltaTime; otherController.proximityFactor = proximityFactor; //imageTransform.position = new Vector3(imageTransform.position.x, imageTransform.position.y, // imageTransform.position.z - 4 * Time.deltaTime); } // default proximityFactor is 1 float zPos = 0.5f * Mathf.Pow(proximityFactor, 3) + 0.5f; imageTransform.localPosition = new Vector3(imageTransform.localPosition.x, imageTransform.localPosition.y, zPos); } } if (controller.GetPressDown(gripButton)) { //vScript.LoadVideo(); fileMode = !fileMode; vScript.fileMode = fileMode; loadManager.SetActive(fileMode); if (fileMode) { vScript.umPlayer.Pause(); } else { if (!vScript.umPlayer.IsPlaying) { vScript.umPlayer.Play(); } vScript.overlayBlocker.SetActive(false); print("W: " + vScript.umPlayer.VideoWidth + ", H: " + vScript.umPlayer.VideoHeight); vScript.umPlayer.RenderingObjects[0].transform.localScale = new Vector3(1, (float)vScript.umPlayer.VideoHeight / vScript.umPlayer.VideoWidth, 1); vScript.LoadLengthString(); //vScript.umPlayer.RenderingObjects[0].transform.localScale = new Vector3(1, 0.1f, 4); } } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, loopLayer)) { HighlightButton hb = hit.collider.gameObject.GetComponent <HighlightButton>(); hb.isHighlighted = true; } if (Physics.Raycast(transform.position, transform.rotation * castDir, out hit, 10000, centerLayer)) { HighlightButton hb = hit.collider.gameObject.GetComponent <HighlightButton>(); hb.isHighlighted = true; } }