10 using System.Collections.Generic;
15 SerializedProperty script, index, modelOverride, shader, verbose, createComponents, updateDynamically;
17 static string[] renderModelNames;
22 script = serializedObject.FindProperty(
"m_Script");
23 index = serializedObject.FindProperty(
"index");
24 modelOverride = serializedObject.FindProperty(
"modelOverride");
25 shader = serializedObject.FindProperty(
"shader");
26 verbose = serializedObject.FindProperty(
"verbose");
27 createComponents = serializedObject.FindProperty(
"createComponents");
28 updateDynamically = serializedObject.FindProperty(
"updateDynamically");
31 if (renderModelNames == null)
33 renderModelNames = LoadRenderModelNames();
37 if (modelOverride.stringValue !=
"")
39 for (
int i = 0; i < renderModelNames.Length; i++)
41 if (modelOverride.stringValue == renderModelNames[i])
50 static string[] LoadRenderModelNames()
52 var results =
new List<string>();
57 var renderModels = holder.instance;
58 if (renderModels != null)
60 uint count = renderModels.GetRenderModelCount();
61 for (uint i = 0; i < count; i++)
63 var buffer =
new StringBuilder();
64 var requiredSize = renderModels.GetRenderModelName(i, buffer, 0);
65 if (requiredSize == 0)
68 buffer.EnsureCapacity((int)requiredSize);
69 renderModels.GetRenderModelName(i, buffer, requiredSize);
70 results.Add(buffer.ToString());
75 return results.ToArray();
78 public override void OnInspectorGUI()
80 serializedObject.Update();
82 EditorGUILayout.PropertyField(script);
83 EditorGUILayout.PropertyField(index);
86 GUILayout.BeginHorizontal();
87 GUILayout.Label(
new GUIContent(
"Model Override",
SteamVR_RenderModel.modelOverrideWarning));
88 var selected = EditorGUILayout.Popup(renderModelIndex, renderModelNames);
89 if (selected != renderModelIndex)
91 renderModelIndex = selected;
92 modelOverride.stringValue = (selected > 0) ? renderModelNames[selected] :
"";
94 GUILayout.EndHorizontal();
96 EditorGUILayout.PropertyField(shader);
97 EditorGUILayout.PropertyField(verbose);
98 EditorGUILayout.PropertyField(createComponents);
99 EditorGUILayout.PropertyField(updateDynamically);
101 serializedObject.ApplyModifiedProperties();