|
|
|
|
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
|
|
|
|
|
//
|
|
|
|
|
// Purpose: Custom inspector display for SteamVR_Camera
|
|
|
|
|
//
|
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEditor;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using Valve.VR;
|
|
|
|
|
|
|
|
|
|
[CustomEditor(typeof(SteamVR_Camera)), CanEditMultipleObjects]
|
|
|
|
|
public class SteamVR_Editor : Editor
|
|
|
|
|
{
|
|
|
|
|
int bannerHeight = 150;
|
|
|
|
|
Texture logo;
|
|
|
|
|
|
|
|
|
|
SerializedProperty script, wireframe;
|
|
|
|
|
|
|
|
|
|
string GetResourcePath()
|
|
|
|
|
{
|
|
|
|
|
var ms = MonoScript.FromScriptableObject(this);
|
|
|
|
|
var path = AssetDatabase.GetAssetPath(ms);
|
|
|
|
|
path = Path.GetDirectoryName(path);
|
|
|
|
|
return path.Substring(0, path.Length - "Editor".Length) + "Textures/";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OnEnable()
|
|
|
|
|
{
|
|
|
|
|
var resourcePath = GetResourcePath();
|
|
|
|
|
|
|
|
|
|
logo = AssetDatabase.LoadAssetAtPath<Texture2D>(resourcePath + "logo.png");
|
|
|
|
|
|
|
|
|
|
script = serializedObject.FindProperty("m_Script");
|
|
|
|
|
|
|
|
|
|
wireframe = serializedObject.FindProperty("wireframe");
|
|
|
|
|
|
|
|
|
|
foreach (SteamVR_Camera target in targets)
|
|
|
|
|
target.ForceLast();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void OnInspectorGUI()
|
|
|
|
|
{
|
|
|
|
|
serializedObject.Update();
|
|
|
|
|
|
|
|
|
|
var rect = GUILayoutUtility.GetRect(Screen.width - 38, bannerHeight, GUI.skin.box);
|
|
|
|
|
if (logo)
|
|
|
|
|
GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit);
|
|
|
|
|
|
|
|
|
|
if (!Application.isPlaying)
|
|
|
|
|
{
|
|
|
|
|
var expand = false;
|
|
|
|
|
var collapse = false;
|
|
|
|
|
foreach (SteamVR_Camera target in targets)
|
|
|
|
|
{
|
|
|
|
|
if (AssetDatabase.Contains(target))
|
|
|
|
|
continue;
|
|
|
|
|
if (target.isExpanded)
|
|
|
|
|
collapse = true;
|
|
|
|
|
else
|
|
|
|
|
expand = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (expand)
|
|
|
|
|
{
|
|
|
|
|
GUILayout.BeginHorizontal();
|
|
|
|
|
if (GUILayout.Button("Expand"))
|
|
|
|
|
{
|
|
|
|
|
foreach (SteamVR_Camera target in targets)
|
|
|
|
|
{
|
|
|
|
|
if (AssetDatabase.Contains(target))
|
|
|
|
|
continue;
|
|
|
|
|
if (!target.isExpanded)
|
|
|
|
|
{
|
|
|
|
|
target.Expand();
|
|
|
|
|
EditorUtility.SetDirty(target);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
GUILayout.Space(18);
|
|
|
|
|
GUILayout.EndHorizontal();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (collapse)
|
|
|
|
|
{
|
|
|
|
|
GUILayout.BeginHorizontal();
|
|
|
|
|
if (GUILayout.Button("Collapse"))
|
|
|
|
|
{
|
|
|
|
|
foreach (SteamVR_Camera target in targets)
|
|
|
|
|
{
|
|
|
|
|
if (AssetDatabase.Contains(target))
|
|
|
|
|
continue;
|
|
|
|
|
if (target.isExpanded)
|
|
|
|
|
{
|
|
|
|
|
target.Collapse();
|
|
|
|
|
EditorUtility.SetDirty(target);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
GUILayout.Space(18);
|
|
|
|
|
GUILayout.EndHorizontal();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EditorGUILayout.PropertyField(script);
|
|
|
|
|
EditorGUILayout.PropertyField(wireframe);
|
|
|
|
|
|
|
|
|
|
serializedObject.ApplyModifiedProperties();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void ExportPackage()
|
|
|
|
|
{
|
|
|
|
|
AssetDatabase.ExportPackage(new string[] {
|
|
|
|
|
"Assets/SteamVR",
|
|
|
|
|
"Assets/Plugins/openvr_api.cs",
|
|
|
|
|
"Assets/Plugins/openvr_api.bundle",
|
|
|
|
|
"Assets/Plugins/x86/openvr_api.dll",
|
|
|
|
|
"Assets/Plugins/x86/steam_api.dll",
|
|
|
|
|
"Assets/Plugins/x86/libsteam_api.so",
|
|
|
|
|
"Assets/Plugins/x86_64/openvr_api.dll",
|
|
|
|
|
"Assets/Plugins/x86_64/steam_api.dll",
|
|
|
|
|
"Assets/Plugins/x86_64/libsteam_api.so",
|
|
|
|
|
"Assets/Plugins/x86_64/libopenvr_api.so",
|
|
|
|
|
}, "steamvr.unitypackage", ExportPackageOptions.Recurse);
|
|
|
|
|
EditorApplication.Exit(0);
|
|
|
|
|
}
|
|
|
|
|
}
|