using System.IO; using UnityEngine; using UnityEngine.UIElements; namespace UnityEditor.VFX.UI { class VFXCompileDropdownButton : DropDownButtonBase { readonly Toggle m_AutoCompileToggle; readonly Toggle m_AutoReinitToggle; readonly Slider m_ReinitPrewarmTime; readonly FloatField m_ReinitPrewarmTimeField; readonly Toggle m_RuntimeModeToggle; readonly Toggle m_ShaderDebugSymbolsToggle; readonly Toggle m_ShaderValidationToggle; readonly Button m_ResyncMaterial; public VFXCompileDropdownButton(VFXView vfxView) : base( nameof(VFXCompileDropdownButton), vfxView, "VFXCompileDropdownPanel", "Compile", "compile-button", Path.Combine(VisualEffectGraphPackageInfo.assetPackagePath, "Editor/UIResources/VFX/compile.png")) { m_AutoCompileToggle = m_PopupContent.Q("autoCompile"); m_AutoCompileToggle.RegisterCallback>(OnToggleAutoCompile); m_AutoReinitToggle = m_PopupContent.Q("autoReinit"); m_AutoReinitToggle.RegisterCallback>(evt => { VFXViewWindow.GetWindowNoShow(vfxView).autoReinit = evt.newValue; m_ReinitPrewarmTime.SetEnabled(evt.newValue); m_ReinitPrewarmTimeField.SetEnabled(evt.newValue); }); m_ReinitPrewarmTime = m_PopupContent.Q("prewarmTime"); m_ReinitPrewarmTime.lowValue = 0; m_ReinitPrewarmTime.highValue = VFXViewPreference.authoringPrewarmMaxTime; m_ReinitPrewarmTime.RegisterValueChangedCallback(evt => { m_ReinitPrewarmTimeField.SetValueWithoutNotify(m_ReinitPrewarmTime.value); VFXViewWindow.GetWindowNoShow(vfxView).autoReinitPrewarmTime = evt.newValue; }); m_ReinitPrewarmTimeField = m_PopupContent.Q("prewarmTimeField"); m_ReinitPrewarmTimeField.RegisterValueChangedCallback(evt => { float clampedValue = Mathf.Clamp(evt.newValue, 0, VFXViewPreference.authoringPrewarmMaxTime); m_ReinitPrewarmTime.SetValueWithoutNotify(clampedValue); m_ReinitPrewarmTimeField.SetValueWithoutNotify(clampedValue); VFXViewWindow.GetWindowNoShow(vfxView).autoReinitPrewarmTime = clampedValue; }); m_RuntimeModeToggle = m_PopupContent.Q("runtimeMode"); m_RuntimeModeToggle.RegisterCallback>(OnToggleRuntimeMode); m_ShaderDebugSymbolsToggle = m_PopupContent.Q("shaderDebugSymbols"); m_ShaderDebugSymbolsToggle.RegisterCallback>(OnToggleShaderDebugSymbols); m_ShaderValidationToggle = m_PopupContent.Q("shaderValidation"); m_ShaderValidationToggle.RegisterCallback>(OnToggleShaderValidation); m_ResyncMaterial = m_PopupContent.Q