public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) { this.materialEditor = materialEditor; material = materialEditor.target as Material; // Init Prop.Initialize(properties); Layout.Initialize(materialEditor); ShaderSetup.Initialize(materialEditor); if (!ShaderSetup.isProjector) { bmode = ShaderSetup.GetBlendMode(); } if (firstTimeApply) { ShaderSetup.MaterialChanged(); firstTimeApply = false; } EditorGUI.BeginChangeCheck(); DrawGUI(); if (EditorGUI.EndChangeCheck()) { ShaderSetup.MaterialChanged(); } }
void DrawGUI() { var renderModeDrawer = ShaderSetup.isProjector ? Prop._ModeProj : (ShaderSetup.isDX11 && !ShaderSetup.isUnlit ? null : Prop._ModeStd); if (Prop._Mode.Draw(0, renderModeDrawer)) { bmode = ShaderSetup.GetBlendMode(); ShaderSetup.SetZWrite(); //only set zwrite when changing the render mode, because there is a zwrite option in the GUI if (bmode == WFABlendMode.CutoutTwoSided) { Prop._Cull._int = (int)CullMode.Back; } } if (bmode == WFABlendMode.Cutout || bmode == WFABlendMode.CutoutTwoSided) { Prop._Cutoff.Draw(indentation: 2); } EditorGUILayout.Space(); if (Layout.BeginFold("Wireframe")) { DrawWireframeGUI(); } Layout.EndFold(); if (!ShaderSetup.isProjector) { if (Layout.BeginFold("Surface")) { DrawSurfaceGUI(); } Layout.EndFold(); } if (Layout.BeginFold("Glow")) { DrawGlowGUI(); } Layout.EndFold(); if (!ShaderSetup.isProjector && !ShaderSetup.isMobile) { if (Layout.BeginFold("Fade")) { DrawFadeGUI(); } Layout.EndFold(); } if (Layout.BeginFold("Preferences")) { DrawPrefGUI(); } Layout.EndFold(); }