3using UnityEngine.UIElements;
4using UnityEditor.SceneManagement;
5using UnityEngine.SceneManagement;
12 private VisualTreeAsset m_VisualTreeAsset =
default;
15 [MenuItem(
"CAVERN/CAVERN Tools",
false, 100)]
19 wnd.titleContent =
new GUIContent(
"CAVERN Tools");
25 VisualElement root = rootVisualElement;
28 VisualElement panelSetup = m_VisualTreeAsset.Instantiate();
31 VisualElement roundUI = root.Q(
"RoundUISetup");
34 Button cavernSetupButton = root.Q<Button>(
"CavernSetupButton");
35 cavernSetupButton.RegisterCallback<ClickEvent, VisualElement>(CavernSetup, roundUI);
37 Button roundUISetupButton = root.Q<Button>(
"RoundUISetupButton");
39 CavernRenderer cavernRenderer = FindFirstObjectByType<CavernRenderer>();
42 if (cavernRenderer ==
null)
44 roundUI.style.visibility = Visibility.Hidden;
46 roundUISetupButton.RegisterCallback<ClickEvent>(RoundUISetup);
49 private void CavernSetup(ClickEvent evt, VisualElement roundUI)
52 GameObject cavernSetupPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(
"Packages/com.spelunx.cavern.sdk/Prefabs/CavernSetup.prefab", typeof(GameObject));
53 GameObject cavernSetupInstance = (GameObject)PrefabUtility.InstantiatePrefab(cavernSetupPrefab as GameObject);
56 AudioConfiguration audioConfigs = AudioSettings.GetConfiguration();
57 audioConfigs.speakerMode = AudioSpeakerMode.Mode7point1;
58 AudioSettings.Reset(audioConfigs);
61 GameObject mainCamera = GameObject.FindGameObjectWithTag(
"MainCamera");
62 if (mainCamera !=
null)
64 Undo.DestroyObjectImmediate(GameObject.FindGameObjectWithTag(
"MainCamera"));
68 EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
71 roundUI.style.visibility = Visibility.Visible;
74 private void RoundUISetup(ClickEvent evt)
76 CavernRenderer cavernRenderer = FindFirstObjectByType<CavernRenderer>();
79 GameObject cavernUIPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(
"Packages/com.spelunx.cavern.sdk/Prefabs/CavernUI.prefab", typeof(GameObject));
80 GameObject cavernUIInstance = (GameObject)PrefabUtility.InstantiatePrefab(cavernUIPrefab as GameObject);
82 GameObject roundCavernMeshRendererPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(
"Packages/com.spelunx.cavern.sdk/Prefabs/RoundCavernMeshRenderer.prefab", typeof(GameObject));
83 GameObject roundCavernMeshRendererInstance = (GameObject)PrefabUtility.InstantiatePrefab(roundCavernMeshRendererPrefab as GameObject);
85 WorldSpaceMeshCanvas meshCanvas = roundCavernMeshRendererInstance.GetComponent<WorldSpaceMeshCanvas>();
86 meshCanvas.setCavernRenderer(cavernRenderer);
89 meshCanvas.transform.parent = cavernRenderer.transform;
90 meshCanvas.transform.localPosition = Vector3.zero;
91 meshCanvas.transform.localRotation = Quaternion.identity;
94 EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());