IMHOTEP Framework
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Pages
SteamVR_Editor.cs
1 //======= Copyright (c) Valve Corporation, All rights reserved. ===============
2 //
3 // Purpose: Custom inspector display for SteamVR_Camera
4 //
5 //=============================================================================
6 
7 using UnityEngine;
8 using UnityEditor;
9 using System.IO;
10 
11 [CustomEditor(typeof(SteamVR_Camera)), CanEditMultipleObjects]
12 public class SteamVR_Editor : Editor
13 {
14  int bannerHeight = 150;
15  Texture logo;
16 
17  SerializedProperty script, wireframe;
18 
19  string GetResourcePath()
20  {
21  var ms = MonoScript.FromScriptableObject(this);
22  var path = AssetDatabase.GetAssetPath(ms);
23  path = Path.GetDirectoryName(path);
24  return path.Substring(0, path.Length - "Editor".Length) + "Textures/";
25  }
26 
27  void OnEnable()
28  {
29  var resourcePath = GetResourcePath();
30 
31  logo = AssetDatabase.LoadAssetAtPath<Texture2D>(resourcePath + "logo.png");
32 
33  script = serializedObject.FindProperty("m_Script");
34 
35  wireframe = serializedObject.FindProperty("wireframe");
36 
37  foreach (SteamVR_Camera target in targets)
38  target.ForceLast();
39  }
40 
41  public override void OnInspectorGUI()
42  {
43  serializedObject.Update();
44 
45  var rect = GUILayoutUtility.GetRect(Screen.width - 38, bannerHeight, GUI.skin.box);
46  if (logo)
47  GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit);
48 
49  if (!Application.isPlaying)
50  {
51  var expand = false;
52  var collapse = false;
53  foreach (SteamVR_Camera target in targets)
54  {
55  if (AssetDatabase.Contains(target))
56  continue;
57  if (target.isExpanded)
58  collapse = true;
59  else
60  expand = true;
61  }
62 
63  if (expand)
64  {
65  GUILayout.BeginHorizontal();
66  if (GUILayout.Button("Expand"))
67  {
68  foreach (SteamVR_Camera target in targets)
69  {
70  if (AssetDatabase.Contains(target))
71  continue;
72  if (!target.isExpanded)
73  {
74  target.Expand();
75  EditorUtility.SetDirty(target);
76  }
77  }
78  }
79  GUILayout.Space(18);
80  GUILayout.EndHorizontal();
81  }
82 
83  if (collapse)
84  {
85  GUILayout.BeginHorizontal();
86  if (GUILayout.Button("Collapse"))
87  {
88  foreach (SteamVR_Camera target in targets)
89  {
90  if (AssetDatabase.Contains(target))
91  continue;
92  if (target.isExpanded)
93  {
94  target.Collapse();
95  EditorUtility.SetDirty(target);
96  }
97  }
98  }
99  GUILayout.Space(18);
100  GUILayout.EndHorizontal();
101  }
102  }
103 
104  EditorGUILayout.PropertyField(script);
105  EditorGUILayout.PropertyField(wireframe);
106 
107  serializedObject.ApplyModifiedProperties();
108  }
109 
110  public static void ExportPackage()
111  {
112  AssetDatabase.ExportPackage(new string[] {
113  "Assets/SteamVR",
114  "Assets/Plugins/openvr_api.cs",
115  "Assets/Plugins/openvr_api.bundle",
116  "Assets/Plugins/x86/openvr_api.dll",
117  "Assets/Plugins/x86/steam_api.dll",
118  "Assets/Plugins/x86/libsteam_api.so",
119  "Assets/Plugins/x86_64/openvr_api.dll",
120  "Assets/Plugins/x86_64/steam_api.dll",
121  "Assets/Plugins/x86_64/libsteam_api.so",
122  "Assets/Plugins/x86_64/libopenvr_api.so",
123  }, "steamvr.unitypackage", ExportPackageOptions.Recurse);
124  EditorApplication.Exit(0);
125  }
126 }
127