public override void OnInspectorGUI() { base.OnInspectorGUI(); if (m_ShadowRegistry == null) { return; } AdditionalLightData ald = (AdditionalLightData)target; if (ald == null) { return; } UnityEditor.EditorGUI.BeginChangeCheck(); m_ShadowRegistry.Draw(ald.gameObject.GetComponent <Light>()); serializedObject.Update(); if (UnityEditor.EditorGUI.EndChangeCheck()) { UnityEditor.EditorUtility.SetDirty(ald); UnityEditor.SceneManagement.EditorSceneManager.MarkAllScenesDirty(); UnityEditor.SceneView.RepaintAll(); } serializedObject.ApplyModifiedProperties(); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); if (m_ShadowRegistry == null) { return; } AdditionalShadowData asd = (AdditionalShadowData)target; if (asd == null) { return; } UnityEditor.EditorGUI.BeginChangeCheck(); m_ShadowRegistry.Draw(asd.gameObject.GetComponent <Light>()); serializedObject.Update(); // cascade code if (asd.gameObject.GetComponent <Light>().type == LightType.Directional) { UnityEditor.EditorGUI.BeginChangeCheck(); UnityEditor.EditorGUILayout.PropertyField(m_ShadowCascadeCount); if (UnityEditor.EditorGUI.EndChangeCheck()) { const int kMaxCascades = (int)ShadowAtlas.k_MaxCascadesInShader; // depending on where you look this is either 32 or 4, so we're limiting it to 4 for now int newcnt = m_ShadowCascadeCount.intValue <= 0 ? 1 : (m_ShadowCascadeCount.intValue > kMaxCascades ? kMaxCascades : m_ShadowCascadeCount.intValue); m_ShadowCascadeCount.intValue = newcnt; m_ShadowCascadeRatios.arraySize = newcnt - 1; m_ShadowCascadeBorders.arraySize = newcnt; } UnityEditor.EditorGUI.indentLevel++; for (int i = 0; i < m_ShadowCascadeRatios.arraySize; i++) { UnityEditor.EditorGUILayout.Slider(m_ShadowCascadeRatios.GetArrayElementAtIndex(i), 0.0f, 1.0f, new GUIContent("Cascade " + i)); } for (int i = 0; i < m_ShadowCascadeBorders.arraySize; i++) { UnityEditor.EditorGUILayout.Slider(m_ShadowCascadeBorders.GetArrayElementAtIndex(i), 0.0f, 1.0f, new GUIContent("Transition " + i)); } UnityEditor.EditorGUI.indentLevel--; } if (UnityEditor.EditorGUI.EndChangeCheck()) { UnityEditor.EditorUtility.SetDirty(asd); UnityEditor.SceneManagement.EditorSceneManager.MarkAllScenesDirty(); UnityEditor.SceneView.RepaintAll(); } serializedObject.ApplyModifiedProperties(); }