123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- using UnityEngine;
- using UnityEngine.Experimental.Rendering.Universal;
- namespace UnityEditor.Experimental.Rendering.Universal
- {
- [CustomEditor(typeof(Renderer2DData), true)]
- internal class Renderer2DDataEditor : Editor
- {
- class Styles
- {
- public static readonly GUIContent transparencySortMode = EditorGUIUtility.TrTextContent("Transparency Sort Mode", "Default sorting mode used for transparent objects");
- public static readonly GUIContent transparencySortAxis = EditorGUIUtility.TrTextContent("Transparency Sort Axis", "Axis used for custom axis sorting mode");
- public static readonly GUIContent hdrEmulationScale = EditorGUIUtility.TrTextContent("HDR Emulation Scale", "Describes the scaling used by lighting to remap dynamic range between LDR and HDR");
- public static readonly GUIContent lightBlendStyles = EditorGUIUtility.TrTextContent("Light Blend Styles", "A Light Blend Style is a collection of properties that describe a particular way of applying lighting.");
- public static readonly GUIContent defaultMaterialType = EditorGUIUtility.TrTextContent("Default Material Type", "Material to use when adding new objects to a scene");
- public static readonly GUIContent defaultCustomMaterial = EditorGUIUtility.TrTextContent("Default Custom Material", "Material to use when adding new objects to a scene");
- public static readonly GUIContent name = EditorGUIUtility.TrTextContent("Name");
- public static readonly GUIContent maskTextureChannel = EditorGUIUtility.TrTextContent("Mask Texture Channel", "Which channel of the mask texture will affect this Light Blend Style.");
- public static readonly GUIContent renderTextureScale = EditorGUIUtility.TrTextContent("Render Texture Scale", "The resolution of the lighting buffer relative to the screen resolution. 1.0 means full screen size.");
- public static readonly GUIContent blendMode = EditorGUIUtility.TrTextContent("Blend Mode", "How the lighting should be blended with the main color of the objects.");
- public static readonly GUIContent customBlendFactors = EditorGUIUtility.TrTextContent("Custom Blend Factors");
- public static readonly GUIContent blendFactorMultiplicative = EditorGUIUtility.TrTextContent("Multiplicative");
- public static readonly GUIContent blendFactorAdditive = EditorGUIUtility.TrTextContent("Additive");
- public static readonly GUIContent useDepthStencilBuffer = EditorGUIUtility.TrTextContent("Use Depth/Stencil Buffer", "Uncheck this when you are certain you don't use any feature that requires the depth/stencil buffer (e.g. Sprite Mask). Not using the depth/stencil buffer may improve performance, especially on mobile platforms.");
- public static readonly GUIContent postProcessData = EditorGUIUtility.TrTextContent("Post-processing Data", "Resources (textures, shaders, etc.) required by post-processing effects.");
- }
- struct LightBlendStyleProps
- {
- public SerializedProperty name;
- public SerializedProperty maskTextureChannel;
- public SerializedProperty renderTextureScale;
- public SerializedProperty blendMode;
- public SerializedProperty blendFactorMultiplicative;
- public SerializedProperty blendFactorAdditive;
- }
- SerializedProperty m_TransparencySortMode;
- SerializedProperty m_TransparencySortAxis;
- SerializedProperty m_HDREmulationScale;
- SerializedProperty m_LightBlendStyles;
- LightBlendStyleProps[] m_LightBlendStylePropsArray;
- SerializedProperty m_UseDepthStencilBuffer;
- SerializedProperty m_PostProcessData;
- SerializedProperty m_DefaultMaterialType;
- SerializedProperty m_DefaultCustomMaterial;
- Analytics.Renderer2DAnalytics m_Analytics = Analytics.Renderer2DAnalytics.instance;
- Renderer2DData m_Renderer2DData;
- bool m_WasModified;
- void SendModifiedAnalytics(Analytics.IAnalytics analytics)
- {
- if (m_WasModified)
- {
- Analytics.RendererAssetData modifiedData = new Analytics.RendererAssetData();
- modifiedData.instance_id = m_Renderer2DData.GetInstanceID();
- modifiedData.was_create_event = false;
- modifiedData.blending_layers_count = 0;
- modifiedData.blending_modes_used = 0;
- analytics.SendData(Analytics.AnalyticsDataTypes.k_Renderer2DDataString, modifiedData);
- }
- }
- void OnEnable()
- {
- m_WasModified = false;
- m_Renderer2DData = (Renderer2DData)serializedObject.targetObject;
- m_TransparencySortMode = serializedObject.FindProperty("m_TransparencySortMode");
- m_TransparencySortAxis = serializedObject.FindProperty("m_TransparencySortAxis");
- m_HDREmulationScale = serializedObject.FindProperty("m_HDREmulationScale");
- m_LightBlendStyles = serializedObject.FindProperty("m_LightBlendStyles");
- int numBlendStyles = m_LightBlendStyles.arraySize;
- m_LightBlendStylePropsArray = new LightBlendStyleProps[numBlendStyles];
- for (int i = 0; i < numBlendStyles; ++i)
- {
- SerializedProperty blendStyleProp = m_LightBlendStyles.GetArrayElementAtIndex(i);
- ref LightBlendStyleProps props = ref m_LightBlendStylePropsArray[i];
- props.name = blendStyleProp.FindPropertyRelative("name");
- props.maskTextureChannel = blendStyleProp.FindPropertyRelative("maskTextureChannel");
- props.renderTextureScale = blendStyleProp.FindPropertyRelative("renderTextureScale");
- props.blendMode = blendStyleProp.FindPropertyRelative("blendMode");
- props.blendFactorMultiplicative = blendStyleProp.FindPropertyRelative("customBlendFactors.multiplicative");
- props.blendFactorAdditive = blendStyleProp.FindPropertyRelative("customBlendFactors.additive");
- if (props.blendFactorMultiplicative == null)
- props.blendFactorMultiplicative = blendStyleProp.FindPropertyRelative("customBlendFactors.modulate");
- if (props.blendFactorAdditive == null)
- props.blendFactorAdditive = blendStyleProp.FindPropertyRelative("customBlendFactors.additve");
- }
- m_UseDepthStencilBuffer = serializedObject.FindProperty("m_UseDepthStencilBuffer");
- m_PostProcessData = serializedObject.FindProperty("m_PostProcessData");
- m_DefaultMaterialType = serializedObject.FindProperty("m_DefaultMaterialType");
- m_DefaultCustomMaterial = serializedObject.FindProperty("m_DefaultCustomMaterial");
- }
- private void OnDestroy()
- {
- SendModifiedAnalytics(m_Analytics);
- }
- public override void OnInspectorGUI()
- {
- serializedObject.Update();
- EditorGUI.BeginChangeCheck();
-
- EditorGUILayout.PropertyField(m_TransparencySortMode, Styles.transparencySortMode);
- if(m_TransparencySortMode.intValue == (int)TransparencySortMode.CustomAxis)
- EditorGUILayout.PropertyField(m_TransparencySortAxis, Styles.transparencySortAxis);
- EditorGUILayout.PropertyField(m_HDREmulationScale, Styles.hdrEmulationScale);
- if (EditorGUI.EndChangeCheck() && m_HDREmulationScale.floatValue < 1.0f)
- m_HDREmulationScale.floatValue = 1.0f;
- EditorGUILayout.LabelField(Styles.lightBlendStyles);
- EditorGUI.indentLevel++;
- EditorGUI.BeginChangeCheck();
- int numBlendStyles = m_LightBlendStyles.arraySize;
- for (int i = 0; i < numBlendStyles; ++i)
- {
- SerializedProperty blendStyleProp = m_LightBlendStyles.GetArrayElementAtIndex(i);
- ref LightBlendStyleProps props = ref m_LightBlendStylePropsArray[i];
-
- EditorGUILayout.BeginHorizontal();
- blendStyleProp.isExpanded = EditorGUILayout.Foldout(blendStyleProp.isExpanded, props.name.stringValue, true);
- EditorGUILayout.EndHorizontal();
- if (blendStyleProp.isExpanded)
- {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(props.name, Styles.name);
- EditorGUILayout.PropertyField(props.maskTextureChannel, Styles.maskTextureChannel);
- EditorGUILayout.PropertyField(props.renderTextureScale, Styles.renderTextureScale);
- EditorGUILayout.PropertyField(props.blendMode, Styles.blendMode);
- if (props.blendMode.intValue == (int)Light2DBlendStyle.BlendMode.Custom)
- {
- EditorGUILayout.BeginHorizontal();
- EditorGUI.indentLevel++;
- EditorGUILayout.LabelField(Styles.customBlendFactors, GUILayout.MaxWidth(200.0f));
- EditorGUI.indentLevel--;
- int oldIndentLevel = EditorGUI.indentLevel;
- EditorGUI.indentLevel = 0;
- EditorGUIUtility.labelWidth = 80.0f;
- EditorGUILayout.PropertyField(props.blendFactorMultiplicative, Styles.blendFactorMultiplicative, GUILayout.MinWidth(110.0f));
- GUILayout.Space(10.0f);
- EditorGUIUtility.labelWidth = 50.0f;
- EditorGUILayout.PropertyField(props.blendFactorAdditive, Styles.blendFactorAdditive, GUILayout.MinWidth(90.0f));
- EditorGUIUtility.labelWidth = 0.0f;
- EditorGUI.indentLevel = oldIndentLevel;
- EditorGUILayout.EndHorizontal();
- }
- EditorGUI.indentLevel--;
- }
- }
-
- EditorGUI.indentLevel--;
- EditorGUILayout.PropertyField(m_UseDepthStencilBuffer, Styles.useDepthStencilBuffer);
- EditorGUILayout.PropertyField(m_PostProcessData, Styles.postProcessData);
- EditorGUILayout.PropertyField(m_DefaultMaterialType, Styles.defaultMaterialType);
- if(m_DefaultMaterialType.intValue == (int)Renderer2DData.Renderer2DDefaultMaterialType.Custom)
- EditorGUILayout.PropertyField(m_DefaultCustomMaterial, Styles.defaultCustomMaterial);
- m_WasModified |= serializedObject.hasModifiedProperties;
- serializedObject.ApplyModifiedProperties();
- }
- }
- }
|