You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			127 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
//======= 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);
 | 
						|
    }
 | 
						|
} |