public void OpenDirectory(string dir) { curDir = dir; parentDir = Directory.GetDirectoryRoot(dir); /* * string[] dirLevels = dir.Split('/'); * parentDir = dirLevels[0]; * for (int i = 1; i < dirLevels.Length - 1; i++) * { * parentDir += "/" + dirLevels[i]; * } */ string[] newFolders = Directory.GetDirectories(dir); for (int i = 0; i < folders.Count; i++) { Destroy(folders[i].gameObject); } folders = new List <FolderPanel>(); int levelCounter = -1; for (int i = 0; i < newFolders.Length; i++) { if (i % 4 == 0) { levelCounter++; } GameObject folder = Instantiate(folderObj, Vector3.zero, Quaternion.identity); folder.transform.SetParent(folderContainer.transform); folder.transform.rotation = folderContainer.transform.rotation; folder.transform.position = new Vector3(folderContainer.transform.position.x + .5f * levelCounter - 0.7f, folderContainer.transform.position.y - 0.09f * i + 0.36f * levelCounter + 0.18f, folderContainer.transform.position.z); folder.transform.localScale = Vector3.one; FolderPanel folderP = folder.GetComponent <FolderPanel>(); folderP.fScript = this; folderP.filePath = newFolders[i]; string[] fileParts = newFolders[i].Split('\\'); folderP.text.text = fileParts[fileParts.Length - 1]; // sets the text to the actual file name } // Calculates width of container and sets up scrolling if (levelCounter > 4) { float containerWidth = 100 * levelCounter; // --- this is an estimate - revise!!! float ratio = 400 / containerWidth; scrollButton.sizeDelta = new Vector2(400 * ratio, 20); } else { scrollButton.sizeDelta = new Vector2(400, 20); } }
private void AddFolderBtn_Click(object sender, EventArgs e) { SetNativeEnabled(false); FolderPanel.Create(GetFullDir, folderName => { SetNativeEnabled(true); if (folderName != "" && Directory.CreateDirectory(GetFullDir + folderName).Exists) { AddPanel(new FolderPanel(ListPanel, folderName, GetFullDir), true); } ; }); }
// 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; } }