public void SetCurrentPreviewObject(GameObject go, LookDevEditionContext context) { DestroyCurrentPreviewObject(context); if (go != null) { int index = (int)context; if (m_LookDevView == null || m_LookDevView.previewUtilityContexts == null || m_LookDevView.previewUtilityContexts[index] == null) { return; } m_OriginalGameObject[index] = go; for (var i = 0; i < m_PreviewObjects[index].Length; ++i) { m_PreviewObjects[index][i] = m_LookDevView.previewUtilityContexts[index].m_PreviewUtility[i].InstantiatePrefabInScene(m_OriginalGameObject[index]); m_PreviewObjects[index][i].transform.position = new Vector3(0.0f, 0.0f, 0.0f); m_PreviewObjects[index][i].transform.rotation = Quaternion.identity; EditorUtility.InitInstantiatedPreviewRecursive(m_PreviewObjects[index][i]); DisableRendererProperties(m_PreviewObjects[index][i]); // Avoid light probe influence from the main scene (but still have the default probe lighting) PreviewRenderUtility.SetEnabledRecursive(m_PreviewObjects[index][i], false); } UpdateCurrentObjectArray(); } }
private void DestroytCurrentPreviewObject(LookDevEditionContext context) { if (this.m_PreviewObjects[(int)context] != null) { UnityEngine.Object.DestroyImmediate(this.m_PreviewObjects[(int)context]); this.m_PreviewObjects[(int)context] = null; } }
public void UpdateFocus(LookDevEditionContext context) { if (context != LookDevEditionContext.None) { this.m_CurrentContextEdition = context; this.m_CurrentEditionContextIndex = (int)this.m_CurrentContextEdition; this.m_LookDevView.Repaint(); } }
private void DestroyCurrentPreviewObject(LookDevEditionContext context) { for (int i = 0; i < this.m_PreviewObjects[(int)context].Length; i++) { if (this.m_PreviewObjects[(int)context][i] != null) { UnityEngine.Object.DestroyImmediate(this.m_PreviewObjects[(int)context][i]); this.m_PreviewObjects[(int)context][i] = null; } } }
public void UpdateFocus(LookDevEditionContext context) { // Caution: m_CurrentContextEditionMode should never be set to ContextEditionMode.kNone it is used only for drag context. Debug.Assert(context != LookDevEditionContext.None); if (context != LookDevEditionContext.None) { m_CurrentContextEdition = context; m_CurrentEditionContextIndex = (int)m_CurrentContextEdition; m_LookDevView.Repaint(); } }
public int GetObjectLoDCount(LookDevEditionContext context) { if (this.m_CurrentObject[(int)context] != null) { LODGroup component = this.m_CurrentObject[(int)context].GetComponent(typeof(LODGroup)) as LODGroup; if (component != null) { return(component.lodCount); } } return(1); }
public int GetObjectLoDCount(LookDevEditionContext context) { if (m_CurrentObjectInstances[(int)context][0] != null) { LODGroup lodGroup = m_CurrentObjectInstances[(int)context][0].GetComponent(typeof(LODGroup)) as LODGroup; if (lodGroup != null) { return(lodGroup.lodCount); } } return(1); }
public void SetCurrentPreviewObject(GameObject go, LookDevEditionContext context) { this.DestroytCurrentPreviewObject(context); if (go != null) { this.m_OriginalGameObject[(int)context] = go; this.m_PreviewObjects[(int)context] = UnityEngine.Object.Instantiate <GameObject>(this.m_OriginalGameObject[(int)context], Vector3.zero, Quaternion.identity); EditorUtility.InitInstantiatedPreviewRecursive(this.m_PreviewObjects[(int)context]); this.SetEnabledRecursive(this.m_PreviewObjects[(int)context], false); this.DisableLightProbes(this.m_PreviewObjects[(int)context]); this.UpdateCurrentObjectArray(); } }
private void DestroyCurrentPreviewObject(LookDevEditionContext context) { var index = (int)context; for (var j = 0; j < m_PreviewObjects[index].Length; j++) { if (m_PreviewObjects[index][j] != null) { DestroyImmediate(m_PreviewObjects[index][j]); m_PreviewObjects[index][j] = null; } } }
public int GetObjectLoDCount(LookDevEditionContext context) { int result; if (this.m_CurrentObjectInstances[(int)context][0] != null) { LODGroup lODGroup = this.m_CurrentObjectInstances[(int)context][0].GetComponent(typeof(LODGroup)) as LODGroup; if (lODGroup != null) { result = lODGroup.lodCount; return(result); } } result = 1; return(result); }
public void SetCurrentPreviewObject(GameObject go, LookDevEditionContext context) { this.DestroyCurrentPreviewObject(context); if (go != null) { if (!(this.m_LookDevView == null) && this.m_LookDevView.previewUtilityContexts != null && this.m_LookDevView.previewUtilityContexts[(int)context] != null) { this.m_OriginalGameObject[(int)context] = go; for (int i = 0; i < this.m_PreviewObjects[(int)context].Length; i++) { this.m_PreviewObjects[(int)context][i] = this.m_LookDevView.previewUtilityContexts[(int)context].m_PreviewUtility[i].InstantiatePrefabInScene(this.m_OriginalGameObject[(int)context]); this.m_PreviewObjects[(int)context][i].transform.position = new Vector3(0f, 0f, 0f); this.m_PreviewObjects[(int)context][i].transform.rotation = Quaternion.identity; EditorUtility.InitInstantiatedPreviewRecursive(this.m_PreviewObjects[(int)context][i]); LookDevConfig.DisableRendererProperties(this.m_PreviewObjects[(int)context][i]); PreviewRenderUtility.SetEnabledRecursive(this.m_PreviewObjects[(int)context][i], false); } this.UpdateCurrentObjectArray(); } } }
public int GetIntProperty(LookDevProperty property, LookDevEditionContext context) { return(m_LookDevContexts[(int)context].GetProperty(property).intValue); }
public float GetFloatProperty(LookDevProperty property, LookDevEditionContext context) { return(m_LookDevContexts[(int)context].GetProperty(property).floatValue); }
private void DrawOneView(Rect drawPos, LookDevEditionContext context) { int index = (int)context; bool flag = ((this.m_LookDevView.config.lookDevMode != LookDevMode.Single1) && (context == LookDevEditionContext.Left)) || ((this.m_LookDevView.config.lookDevMode != LookDevMode.Single2) && (context == LookDevEditionContext.Right)); GUILayout.BeginArea(drawPos); GUILayout.Label(styles.sViewTitle[index], styles.sViewTitleStyles[index], new GUILayoutOption[0]); GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.Width(this.m_WindowWidth) }; GUILayout.BeginVertical(options); GUILayoutOption[] optionArray2 = new GUILayoutOption[] { GUILayout.Height(kLineHeight) }; GUILayout.BeginHorizontal(optionArray2); GUILayoutOption[] optionArray3 = new GUILayoutOption[] { GUILayout.Width(kLabelWidth) }; GUILayout.Label(styles.sExposure, styles.sMenuItem, optionArray3); float floatProperty = this.m_LookDevView.config.GetFloatProperty(LookDevProperty.ExposureValue, context); EditorGUI.BeginChangeCheck(); float max = Mathf.Round(this.m_LookDevView.config.exposureRange); GUILayoutOption[] optionArray4 = new GUILayoutOption[] { GUILayout.Width(kSliderWidth) }; floatProperty = Mathf.Clamp(GUILayout.HorizontalSlider(floatProperty, -max, max, optionArray4), -max, max); GUILayoutOption[] optionArray5 = new GUILayoutOption[] { GUILayout.Width(kSliderFieldWidth) }; floatProperty = Mathf.Clamp(EditorGUILayout.FloatField((float)Math.Round((double)floatProperty, (floatProperty >= 0f) ? 2 : 1), optionArray5), -max, max); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateFloatProperty(LookDevProperty.ExposureValue, floatProperty); } GUILayout.EndHorizontal(); GUILayoutOption[] optionArray6 = new GUILayoutOption[] { GUILayout.Height(kLineHeight) }; GUILayout.BeginHorizontal(optionArray6); int num4 = -1; int hdriCount = this.m_LookDevView.envLibrary.hdriCount; using (new EditorGUI.DisabledScope(hdriCount <= 1)) { GUILayoutOption[] optionArray7 = new GUILayoutOption[] { GUILayout.Width(kLabelWidth) }; GUILayout.Label(styles.sEnvironment, styles.sMenuItem, optionArray7); if (hdriCount > 1) { int num6 = hdriCount - 1; num4 = this.m_LookDevView.config.GetIntProperty(LookDevProperty.HDRI, context); EditorGUI.BeginChangeCheck(); GUILayoutOption[] optionArray8 = new GUILayoutOption[] { GUILayout.Width(kSliderWidth) }; num4 = (int)GUILayout.HorizontalSlider((float)num4, 0f, (float)num6, optionArray8); GUILayoutOption[] optionArray9 = new GUILayoutOption[] { GUILayout.Width(kSliderFieldWidth) }; num4 = Mathf.Clamp(EditorGUILayout.IntField(num4, optionArray9), 0, num6); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateIntProperty(LookDevProperty.HDRI, num4); } } else { GUILayoutOption[] optionArray10 = new GUILayoutOption[] { GUILayout.Width(kSliderWidth) }; GUILayout.HorizontalSlider(0f, 0f, 0f, optionArray10); GUILayout.Label(styles.sZero, styles.sMenuItem, new GUILayoutOption[0]); } } GUILayout.EndHorizontal(); GUILayoutOption[] optionArray11 = new GUILayoutOption[] { GUILayout.Height(kLineHeight) }; GUILayout.BeginHorizontal(optionArray11); GUILayoutOption[] optionArray12 = new GUILayoutOption[] { GUILayout.Width(kLabelWidth) }; GUILayout.Label(styles.sShadingMode, styles.sMenuItem, optionArray12); int intProperty = this.m_LookDevView.config.GetIntProperty(LookDevProperty.ShadingMode, context); EditorGUI.BeginChangeCheck(); GUILayoutOption[] optionArray13 = new GUILayoutOption[] { GUILayout.Width((kSliderFieldWidth + kSliderWidth) + 4f) }; intProperty = EditorGUILayout.IntPopup("", intProperty, styles.sShadingModeStrings, styles.sShadingModeValues, optionArray13); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateIntProperty(LookDevProperty.ShadingMode, intProperty); } GUILayout.EndHorizontal(); GUILayoutOption[] optionArray14 = new GUILayoutOption[] { GUILayout.Height(kLineHeight) }; GUILayout.BeginHorizontal(optionArray14); GUILayoutOption[] optionArray15 = new GUILayoutOption[] { GUILayout.Width(kLabelWidth) }; GUILayout.Label(styles.sRotation, styles.sMenuItem, optionArray15); float num8 = this.m_LookDevView.config.GetFloatProperty(LookDevProperty.EnvRotation, context); EditorGUI.BeginChangeCheck(); GUILayoutOption[] optionArray16 = new GUILayoutOption[] { GUILayout.Width(kSliderWidth) }; GUILayoutOption[] optionArray17 = new GUILayoutOption[] { GUILayout.Width(kSliderFieldWidth) }; num8 = Mathf.Clamp(EditorGUILayout.FloatField((float)Math.Round((double)GUILayout.HorizontalSlider(num8, 0f, 720f, optionArray16), 0), optionArray17), 0f, 720f); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateFloatProperty(LookDevProperty.EnvRotation, num8); } GUILayout.EndHorizontal(); if (this.NeedLoD()) { GUILayoutOption[] optionArray18 = new GUILayoutOption[] { GUILayout.Height(kLineHeight) }; GUILayout.BeginHorizontal(optionArray18); if (this.m_LookDevView.config.GetObjectLoDCount(context) > 1) { int num9 = this.m_LookDevView.config.GetIntProperty(LookDevProperty.LoDIndex, context); GUILayoutOption[] optionArray19 = new GUILayoutOption[] { GUILayout.Width(kLabelWidth) }; GUILayout.Label((num9 != -1) ? styles.sLoD : styles.sLoDAuto, styles.sMenuItem, optionArray19); EditorGUI.BeginChangeCheck(); int num10 = this.m_LookDevView.config.GetObjectLoDCount(context) - 1; if (((this.m_LookDevView.config.lookDevMode != LookDevMode.Single1) && (this.m_LookDevView.config.lookDevMode != LookDevMode.Single2)) && this.m_LookDevView.config.IsPropertyLinked(LookDevProperty.LoDIndex)) { num10 = Math.Min(this.m_LookDevView.config.GetObjectLoDCount(LookDevEditionContext.Left), this.m_LookDevView.config.GetObjectLoDCount(LookDevEditionContext.Right)) - 1; } GUILayoutOption[] optionArray20 = new GUILayoutOption[] { GUILayout.Width(kSliderWidth) }; num9 = (int)GUILayout.HorizontalSlider((float)Mathf.Clamp(num9, -1, num10), -1f, (float)num10, optionArray20); GUILayoutOption[] optionArray21 = new GUILayoutOption[] { GUILayout.Width(kSliderFieldWidth) }; num9 = EditorGUILayout.IntField(num9, optionArray21); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateIntProperty(LookDevProperty.LoDIndex, num9); } } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); if (flag) { GUILayoutOption[] optionArray22 = new GUILayoutOption[] { GUILayout.Width(kIconSize) }; GUILayout.BeginVertical(optionArray22); LookDevProperty[] propertyArray = new LookDevProperty[] { LookDevProperty.ExposureValue }; int num11 = 4 + (!this.NeedLoD() ? 0 : 1); for (int i = 0; i < num11; i++) { bool flag2 = false; EditorGUI.BeginChangeCheck(); bool flag3 = this.m_LookDevView.config.IsPropertyLinked(propertyArray[i]); GUILayoutOption[] optionArray23 = new GUILayoutOption[] { GUILayout.Height(kLineHeight) }; flag2 = GUILayout.Toggle(flag3, this.GetGUIContentLink(flag3), styles.sToolBarButton, optionArray23); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdatePropertyLink(propertyArray[i], flag2); } } GUILayout.EndVertical(); } GUILayout.EndHorizontal(); GUILayout.EndArea(); }
private void DrawOneView(Rect drawPos, LookDevEditionContext context) { bool flag = (this.m_LookDevView.config.lookDevMode != LookDevMode.Single1 && context == LookDevEditionContext.Left) || (this.m_LookDevView.config.lookDevMode != LookDevMode.Single2 && context == LookDevEditionContext.Right); GUILayout.BeginArea(drawPos); GUILayout.Label(LookDevViewsWindow.styles.sViewTitle[(int)context], LookDevViewsWindow.styles.sViewTitleStyles[(int)context], new GUILayoutOption[0]); GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayout.BeginVertical(new GUILayoutOption[] { GUILayout.Width(this.m_WindowWidth) }); GUILayout.BeginHorizontal(new GUILayoutOption[] { GUILayout.Height(LookDevViewsWindow.kLineHeight) }); GUILayout.Label(LookDevViewsWindow.styles.sExposure, LookDevViewsWindow.styles.sMenuItem, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kLabelWidth) }); float num = this.m_LookDevView.config.GetFloatProperty(LookDevProperty.ExposureValue, context); EditorGUI.BeginChangeCheck(); float num2 = Mathf.Round(this.m_LookDevView.config.exposureRange); num = Mathf.Clamp(GUILayout.HorizontalSlider(num, -num2, num2, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderWidth) }), -num2, num2); num = Mathf.Clamp(EditorGUILayout.FloatField((float)Math.Round((double)num, (num >= 0f) ? 2 : 1), new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderFieldWidth) }), -num2, num2); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateFloatProperty(LookDevProperty.ExposureValue, num); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(new GUILayoutOption[] { GUILayout.Height(LookDevViewsWindow.kLineHeight) }); int hdriCount = this.m_LookDevView.envLibrary.hdriCount; using (new EditorGUI.DisabledScope(hdriCount <= 1)) { GUILayout.Label(LookDevViewsWindow.styles.sEnvironment, LookDevViewsWindow.styles.sMenuItem, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kLabelWidth) }); if (hdriCount > 1) { int num3 = hdriCount - 1; int num4 = this.m_LookDevView.config.GetIntProperty(LookDevProperty.HDRI, context); EditorGUI.BeginChangeCheck(); num4 = (int)GUILayout.HorizontalSlider((float)num4, 0f, (float)num3, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderWidth) }); num4 = Mathf.Clamp(EditorGUILayout.IntField(num4, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderFieldWidth) }), 0, num3); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateIntProperty(LookDevProperty.HDRI, num4); } } else { GUILayout.HorizontalSlider(0f, 0f, 0f, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderWidth) }); GUILayout.Label(LookDevViewsWindow.styles.sZero, LookDevViewsWindow.styles.sMenuItem, new GUILayoutOption[0]); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(new GUILayoutOption[] { GUILayout.Height(LookDevViewsWindow.kLineHeight) }); GUILayout.Label(LookDevViewsWindow.styles.sShadingMode, LookDevViewsWindow.styles.sMenuItem, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kLabelWidth) }); int num5 = this.m_LookDevView.config.GetIntProperty(LookDevProperty.ShadingMode, context); EditorGUI.BeginChangeCheck(); num5 = EditorGUILayout.IntPopup("", num5, LookDevViewsWindow.styles.sShadingModeStrings, LookDevViewsWindow.styles.sShadingModeValues, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderFieldWidth + LookDevViewsWindow.kSliderWidth + 4f) }); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateIntProperty(LookDevProperty.ShadingMode, num5); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(new GUILayoutOption[] { GUILayout.Height(LookDevViewsWindow.kLineHeight) }); GUILayout.Label(LookDevViewsWindow.styles.sRotation, LookDevViewsWindow.styles.sMenuItem, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kLabelWidth) }); float num6 = this.m_LookDevView.config.GetFloatProperty(LookDevProperty.EnvRotation, context); EditorGUI.BeginChangeCheck(); num6 = GUILayout.HorizontalSlider(num6, 0f, 720f, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderWidth) }); num6 = Mathf.Clamp(EditorGUILayout.FloatField((float)Math.Round((double)num6, 0), new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderFieldWidth) }), 0f, 720f); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateFloatProperty(LookDevProperty.EnvRotation, num6); } GUILayout.EndHorizontal(); if (this.NeedLoD()) { GUILayout.BeginHorizontal(new GUILayoutOption[] { GUILayout.Height(LookDevViewsWindow.kLineHeight) }); if (this.m_LookDevView.config.GetObjectLoDCount(context) > 1) { int num7 = this.m_LookDevView.config.GetIntProperty(LookDevProperty.LoDIndex, context); GUILayout.Label((num7 != -1) ? LookDevViewsWindow.styles.sLoD : LookDevViewsWindow.styles.sLoDAuto, LookDevViewsWindow.styles.sMenuItem, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kLabelWidth) }); EditorGUI.BeginChangeCheck(); int num8 = this.m_LookDevView.config.GetObjectLoDCount(context) - 1; if (this.m_LookDevView.config.lookDevMode != LookDevMode.Single1 && this.m_LookDevView.config.lookDevMode != LookDevMode.Single2 && this.m_LookDevView.config.IsPropertyLinked(LookDevProperty.LoDIndex)) { num8 = Math.Min(this.m_LookDevView.config.GetObjectLoDCount(LookDevEditionContext.Left), this.m_LookDevView.config.GetObjectLoDCount(LookDevEditionContext.Right)) - 1; } num7 = Mathf.Clamp(num7, -1, num8); num7 = (int)GUILayout.HorizontalSlider((float)num7, -1f, (float)num8, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderWidth) }); num7 = EditorGUILayout.IntField(num7, new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kSliderFieldWidth) }); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdateFocus(context); this.m_LookDevView.config.UpdateIntProperty(LookDevProperty.LoDIndex, num7); } } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); if (flag) { GUILayout.BeginVertical(new GUILayoutOption[] { GUILayout.Width(LookDevViewsWindow.kIconSize) }); LookDevProperty[] array = new LookDevProperty[] { LookDevProperty.ExposureValue, LookDevProperty.HDRI, LookDevProperty.ShadingMode, LookDevProperty.EnvRotation, LookDevProperty.LoDIndex }; int num9 = 4 + ((!this.NeedLoD()) ? 0 : 1); for (int i = 0; i < num9; i++) { EditorGUI.BeginChangeCheck(); bool flag2 = this.m_LookDevView.config.IsPropertyLinked(array[i]); bool value = GUILayout.Toggle(flag2, this.GetGUIContentLink(flag2), LookDevViewsWindow.styles.sToolBarButton, new GUILayoutOption[] { GUILayout.Height(LookDevViewsWindow.kLineHeight) }); if (EditorGUI.EndChangeCheck()) { this.m_LookDevView.config.UpdatePropertyLink(array[i], value); } } GUILayout.EndVertical(); } GUILayout.EndHorizontal(); GUILayout.EndArea(); }
public float GetFloatProperty(LookDevProperty property, LookDevEditionContext context) => this.m_LookDevContexts[(int)context].GetProperty(property).floatValue;
public int GetIntProperty(LookDevProperty property, LookDevEditionContext context) => this.m_LookDevContexts[(int)context].GetProperty(property).intValue;
private void DrawOneView(Rect drawPos, LookDevEditionContext context) { int i = (int)context; bool drawLinks = ((m_LookDevView.config.lookDevMode != LookDevMode.Single1) && (context == LookDevEditionContext.Left)) || ((m_LookDevView.config.lookDevMode != LookDevMode.Single2) && (context == LookDevEditionContext.Right)); GUILayout.BeginArea(drawPos); GUILayout.Label(styles.sViewTitle[i], styles.sViewTitleStyles[i]); GUILayout.BeginHorizontal(); { GUILayout.BeginVertical(GUILayout.Width(m_WindowWidth)); { GUILayout.BeginHorizontal(GUILayout.Height(kLineHeight)); { GUILayout.Label(styles.sExposure, styles.sMenuItem, GUILayout.Width(kLabelWidth)); float fExposureValue = m_LookDevView.config.GetFloatProperty(LookDevProperty.ExposureValue, context); EditorGUI.BeginChangeCheck(); float roundedExposureRange = Mathf.Round(m_LookDevView.config.exposureRange); fExposureValue = Mathf.Clamp(GUILayout.HorizontalSlider(fExposureValue, -roundedExposureRange, roundedExposureRange, GUILayout.Width(kSliderWidth)), -roundedExposureRange, roundedExposureRange); // Clamp is here to return value to the right range if the user decrease the exposure range // Display in the float field is rounded for display. To 1 decimal in case of negative number to account for the '-' character. fExposureValue = Mathf.Clamp(EditorGUILayout.FloatField((float)Math.Round(fExposureValue, fExposureValue < 0.0f ? 1 : 2), GUILayout.Width(kSliderFieldWidth)), -roundedExposureRange, roundedExposureRange); if (EditorGUI.EndChangeCheck()) { m_LookDevView.config.UpdateFocus(context); m_LookDevView.config.UpdateFloatProperty(LookDevProperty.ExposureValue, fExposureValue); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.Height(kLineHeight)); { int iHDRIIndex = -1; int iHDRICount = m_LookDevView.envLibrary.hdriCount; using (new EditorGUI.DisabledScope(iHDRICount <= 1)) { GUILayout.Label(styles.sEnvironment, styles.sMenuItem, GUILayout.Width(kLabelWidth)); if (iHDRICount > 1) { int maxHDRIIndex = iHDRICount - 1; iHDRIIndex = m_LookDevView.config.GetIntProperty(LookDevProperty.HDRI, context); EditorGUI.BeginChangeCheck(); iHDRIIndex = (int)GUILayout.HorizontalSlider(iHDRIIndex, 0.0f, (float)maxHDRIIndex, GUILayout.Width(kSliderWidth)); iHDRIIndex = Mathf.Clamp(EditorGUILayout.IntField(iHDRIIndex, GUILayout.Width(kSliderFieldWidth)), 0, maxHDRIIndex); if (EditorGUI.EndChangeCheck()) { m_LookDevView.config.UpdateFocus(context); m_LookDevView.config.UpdateIntProperty(LookDevProperty.HDRI, iHDRIIndex); } } else { GUILayout.HorizontalSlider(0.0f, 0.0f, 0.0f, GUILayout.Width(kSliderWidth)); GUILayout.Label(styles.sZero, styles.sMenuItem); } } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.Height(kLineHeight)); { GUILayout.Label(styles.sShadingMode, styles.sMenuItem, GUILayout.Width(kLabelWidth)); int shadingMode = m_LookDevView.config.GetIntProperty(LookDevProperty.ShadingMode, context); EditorGUI.BeginChangeCheck(); shadingMode = EditorGUILayout.IntPopup("", shadingMode, styles.sShadingModeStrings, styles.sShadingModeValues, GUILayout.Width(kSliderFieldWidth + kSliderWidth + 4.0f)); if (EditorGUI.EndChangeCheck()) { m_LookDevView.config.UpdateFocus(context); m_LookDevView.config.UpdateIntProperty(LookDevProperty.ShadingMode, shadingMode); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.Height(kLineHeight)); { GUILayout.Label(styles.sRotation, styles.sMenuItem, GUILayout.Width(kLabelWidth)); float envRotation = m_LookDevView.config.GetFloatProperty(LookDevProperty.EnvRotation, context); EditorGUI.BeginChangeCheck(); envRotation = GUILayout.HorizontalSlider(envRotation, 0.0f, 720.0f, GUILayout.Width(kSliderWidth)); envRotation = Mathf.Clamp(EditorGUILayout.FloatField((float)Math.Round(envRotation, 0), GUILayout.Width(kSliderFieldWidth)), 0.0f, 720.0f); if (EditorGUI.EndChangeCheck()) { m_LookDevView.config.UpdateFocus(context); m_LookDevView.config.UpdateFloatProperty(LookDevProperty.EnvRotation, envRotation); } } GUILayout.EndHorizontal(); if (NeedLoD()) { GUILayout.BeginHorizontal(GUILayout.Height(kLineHeight)); { if (m_LookDevView.config.GetObjectLoDCount(context) > 1) { int lodIndex = m_LookDevView.config.GetIntProperty(LookDevProperty.LoDIndex, context); GUILayout.Label(lodIndex == -1 ? styles.sLoDAuto : styles.sLoD, styles.sMenuItem, GUILayout.Width(kLabelWidth)); EditorGUI.BeginChangeCheck(); int maxLoDIndex = m_LookDevView.config.GetObjectLoDCount(context) - 1; // We need a specific handling here in case of linked property, because even if it is linked the two meshes can have different number of LOD // We handle that by taking the min of the number of mesh if the property is link if ((m_LookDevView.config.lookDevMode != LookDevMode.Single1 && m_LookDevView.config.lookDevMode != LookDevMode.Single2) && m_LookDevView.config.IsPropertyLinked(LookDevProperty.LoDIndex)) { maxLoDIndex = Math.Min(m_LookDevView.config.GetObjectLoDCount(LookDevEditionContext.Left), m_LookDevView.config.GetObjectLoDCount(LookDevEditionContext.Right)) - 1; } lodIndex = Mathf.Clamp(lodIndex, -1, maxLoDIndex); lodIndex = (int)GUILayout.HorizontalSlider(lodIndex, -1, maxLoDIndex, GUILayout.Width(kSliderWidth)); lodIndex = EditorGUILayout.IntField(lodIndex, GUILayout.Width(kSliderFieldWidth)); if (EditorGUI.EndChangeCheck()) { m_LookDevView.config.UpdateFocus(context); m_LookDevView.config.UpdateIntProperty(LookDevProperty.LoDIndex, lodIndex); } } } GUILayout.EndHorizontal(); } } GUILayout.EndVertical(); if (drawLinks) { GUILayout.BeginVertical(GUILayout.Width(kIconSize)); { LookDevProperty[] properties = { LookDevProperty.ExposureValue, LookDevProperty.HDRI, LookDevProperty.ShadingMode, LookDevProperty.EnvRotation, LookDevProperty.LoDIndex }; int propertyCount = 4 + (NeedLoD() ? 1 : 0); for (int propertyIndex = 0; propertyIndex < propertyCount; ++propertyIndex) { bool linked = false; EditorGUI.BeginChangeCheck(); bool isLink = m_LookDevView.config.IsPropertyLinked(properties[propertyIndex]); linked = GUILayout.Toggle(isLink, GetGUIContentLink(isLink), styles.sToolBarButton, GUILayout.Height(kLineHeight)); if (EditorGUI.EndChangeCheck()) { m_LookDevView.config.UpdatePropertyLink(properties[propertyIndex], linked); } } } GUILayout.EndVertical(); } } GUILayout.EndHorizontal(); GUILayout.EndArea(); }