void OnEnable() { m_MultiArray = serializedObject.FindProperty(MultiMaterialData.materialArrayPub); m_Materials = m_MultiArray.FindPropertyRelative(MaterialArray.materialsPub); m_MaterialEditors = new MaterialEditor[] {}; MaterialArrayDrawers.UpdateShaderNames(); }
public void OnEnable() { m_MaterialEditors = new MaterialEditor[] {}; m_MultiMaterial = target as MultiMaterial; if (m_MultiMaterial.multiMaterialData != null) { m_MultiMaterialData = new SerializedObject(m_MultiMaterial.multiMaterialData); } m_Renderer = m_MultiMaterial.gameObject.GetComponent <Renderer>(); ValidateEditorData(); MaterialArrayDrawers.UpdateShaderNames(); }
public override void OnInspectorGUI() { var targetData = target as MultiMaterialData; EditorGUI.BeginChangeCheck(); serializedObject.Update(); var materialPropList = new List <SerializedProperty>(); m_Materials.arraySize = EditorGUILayout.DelayedIntField("Size", m_Materials.arraySize); serializedObject.ApplyModifiedProperties(); for (var i = 0; i < m_Materials.arraySize; ++i) { materialPropList.Add(m_Materials.GetArrayElementAtIndex(i)); } var materialProperties = materialPropList.ToArray(); serializedObject.ApplyModifiedProperties(); var changed = EditorGUI.EndChangeCheck(); MaterialArrayDrawers.OnInspectorGUI(serializedObject, targetData.materialArrayData, ref m_MaterialEditors, changed, materialProperties); var targetArray = targetData.materialArrayData; if (MaterialArrayDrawers.AddSelectedButtons(serializedObject, targetArray)) { } if (GUILayout.Button("Select Materials")) { if (targetArray != null && targetArray.materials != null && targetArray.materials.Length > 0) { Selection.objects = targetArray.materials; } } }
public override void OnInspectorGUI() { var changed = false; EditorGUI.BeginChangeCheck(); serializedObject.Update(); base.OnInspectorGUI(); serializedObject.ApplyModifiedProperties(); changed = EditorGUI.EndChangeCheck(); ValidateEditorData(); if (!useRenderer) { m_MultiMaterialData.Update(); EditorGUI.BeginChangeCheck(); m_Materials.arraySize = EditorGUILayout.DelayedIntField("Size", m_Materials.arraySize); m_MultiMaterialData.ApplyModifiedProperties(); if (EditorGUI.EndChangeCheck()) { if (m_MultiMaterial.multiMaterialData != null) { m_MultiMaterialData = new SerializedObject(m_MultiMaterial.multiMaterialData); } ValidateEditorData(); changed = true; } } else if (m_Renderer != null) { if (CreateMultiMaterialDataButton(false)) { if (m_MultiMaterial.multiMaterialData != null) { m_MultiMaterialData = new SerializedObject(m_MultiMaterial.multiMaterialData); } ValidateEditorData(); } } if (!useRenderer || m_Renderer != null) { MaterialArrayDrawers.OnInspectorGUI(m_MultiMaterialData, materialArray, ref m_MaterialEditors, changed, m_MaterialProperties); if (m_Renderer == null && MaterialArrayDrawers.AddSelectedButtons(m_MultiMaterialData, materialArray)) { MaterialArrayDrawers.RebuildMaterialEditors(ref m_MaterialEditors, materialArray); return; } if (GUILayout.Button("Select Materials")) { if (materialArray != null && materialArray.materials != null && materialArray.materials.Length > 0) { Selection.objects = materialArray.materials; } } } }