From 069925f83495fef88e6637c6e64d07184e549490 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Tue, 22 Oct 2019 13:20:42 -0500 Subject: [PATCH] frontend work. stubbs in a glowMul slider, and a glow mask channel for composites (defaults to writing to the alpha chan) --- .../gui/guiMaterialPropertiesWindow.ed.gui | 297 +++++++++++++++++- .../scripts/materialEditor.ed.cs | 66 +++- 2 files changed, 360 insertions(+), 3 deletions(-) diff --git a/Templates/BaseGame/game/tools/materialEditor/gui/guiMaterialPropertiesWindow.ed.gui b/Templates/BaseGame/game/tools/materialEditor/gui/guiMaterialPropertiesWindow.ed.gui index 80edd350c..be1c82290 100644 --- a/Templates/BaseGame/game/tools/materialEditor/gui/guiMaterialPropertiesWindow.ed.gui +++ b/Templates/BaseGame/game/tools/materialEditor/gui/guiMaterialPropertiesWindow.ed.gui @@ -571,7 +571,7 @@ profile = "ToolsGuiTransparentProfile"; isContainer = "1"; position = "0 0"; - Extent = "185 44"; + Extent = "185 68"; HorizSizing = "width"; new GuiTextCtrl() { @@ -580,6 +580,7 @@ position = "9 4"; Extent = "72 16"; text = "Smoothness"; + Profile = "ToolsGuiTextProfile"; }; new GuiTextCtrl() { @@ -588,6 +589,16 @@ position = "9 26"; Extent = "72 16"; text = "Metalness"; + Profile = "ToolsGuiTextProfile"; + }; + + new GuiTextCtrl() { + HorizSizing = "right"; + VertSizing = "bottom"; + position = "9 48"; + Extent = "72 16"; + text = "GlowMul"; + Profile = "ToolsGuiTextProfile"; }; new GuiControl() { @@ -689,6 +700,55 @@ text = "0"; }; }; + new GuiControl() { + class = "AggregateControl"; + position = "91 48"; + Extent = "96 20"; + + new GuiSliderCtrl() { + canSaveDynamicFields = "0"; + internalName = "GlowMulSlider"; + Enabled = "1"; + isContainer = "0"; + Profile = "ToolsGuiSliderProfile"; + HorizSizing = "right"; + VertSizing = "bottom"; + position = "0 1"; + Extent = "61 14"; + MinExtent = "8 2"; + canSave = "1"; + Visible = "1"; + Command = "MaterialEditorGui.updateActiveMaterial(\"GlowMul[\" @ MaterialEditorGui.currentLayer @ \"]\", $ThisControl.getValue(), true, true);"; + AltCommand = "$ThisControl.getParent().updateFromChild($ThisControl); MaterialEditorGui.updateActiveMaterial(\"GlowMul[\" @ MaterialEditorGui.currentLayer @ \"]\", $ThisControl.getValue(), true, false);"; + tooltipprofile = "ToolsGuiDefaultProfile"; + ToolTip = "Sets GlowMul."; + hovertime = "1000"; + range = "0 1"; + ticks = "0"; + value = "0"; + }; + new GuiTextEditCtrl() { + canSaveDynamicFields = "0"; + internalName = "GlowMulTextEdit"; + Enabled = "1"; + isContainer = "0"; + Profile = "ToolsGuiTextEditProfile"; + HorizSizing = "right"; + VertSizing = "bottom"; + position = "64 0"; + Extent = "29 18"; + MinExtent = "8 2"; + canSave = "1"; + Visible = "1"; + Command = "$ThisControl.getParent().updateFromChild($ThisControl); MaterialEditorGui.updateActiveMaterial(\"GlowMul[\" @ MaterialEditorGui.currentLayer @ \"]\", $ThisControl.getValue());"; + hovertime = "1000"; + AnchorTop = "1"; + AnchorBottom = "0"; + AnchorLeft = "1"; + AnchorRight = "0"; + text = "0"; + }; + }; }; new GuiContainer(){ // spec Map options @@ -1676,6 +1736,241 @@ canSaveDynamicFields = "0"; }; }; + new GuiContainer() { + margin = "0 0 0 0"; + padding = "0 0 0 0"; + anchorTop = "1"; + anchorBottom = "0"; + anchorLeft = "1"; + anchorRight = "0"; + position = "6 364"; + extent = "185 52"; + minExtent = "8 2"; + horizSizing = "width"; + vertSizing = "bottom"; + profile = "GuiDefaultProfile"; + visible = "1"; + active = "1"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "1"; + canSave = "1"; + canSaveDynamicFields = "0"; + new GuiBitmapCtrl() { + bitmap = "tools/materialeditor/gui/unknownImage"; + wrap = "0"; + position = "1 1"; + extent = "48 48"; + minExtent = "8 2"; + horizSizing = "right"; + vertSizing = "bottom"; + profile = "ToolsGuiButtonProfile"; + visible = "1"; + active = "1"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + internalName = "glowMapDisplayBitmap"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiTextCtrl() { + text = "glow"; + maxLength = "1024"; + margin = "0 0 0 0"; + padding = "0 0 0 0"; + anchorTop = "1"; + anchorBottom = "0"; + anchorLeft = "1"; + anchorRight = "0"; + position = "56 5"; + extent = "35 8"; + minExtent = "8 2"; + horizSizing = "right"; + vertSizing = "bottom"; + profile = "ToolsGuiTextProfile"; + visible = "1"; + active = "1"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiBitmapButtonCtrl() { + bitmap = "tools/materialEditor/gui/cubemapBtnBorder"; + bitmapMode = "Stretched"; + autoFitExtents = "0"; + useModifiers = "0"; + useStates = "1"; + groupNum = "-1"; + buttonType = "PushButton"; + useMouseEvents = "0"; + position = "1 1"; + extent = "48 48"; + minExtent = "8 2"; + horizSizing = "right"; + vertSizing = "bottom"; + profile = "ToolsGuiButtonProfile"; + visible = "1"; + active = "1"; + command = "MaterialEditorGui.updateglowMap(1);"; + tooltipProfile = "GuiToolTipProfile"; + tooltip = "Change the glowness Map for this layer."; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiTextCtrl() { + text = "None"; + maxLength = "1024"; + margin = "0 0 0 0"; + padding = "0 0 0 0"; + anchorTop = "1"; + anchorBottom = "0"; + anchorLeft = "1"; + anchorRight = "0"; + position = "56 17"; + extent = "143 17"; + minExtent = "8 2"; + horizSizing = "width"; + vertSizing = "bottom"; + profile = "ToolsGuiTextProfile"; + visible = "1"; + active = "1"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + internalName = "glowMapNameText"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiButtonCtrl() { + text = "Edit"; + groupNum = "-1"; + buttonType = "PushButton"; + useMouseEvents = "0"; + position = "134 34"; + extent = "40 16"; + minExtent = "8 2"; + horizSizing = "left"; + vertSizing = "bottom"; + profile = "ToolsGuiButtonProfile"; + visible = "1"; + active = "1"; + command = "MaterialEditorGui.updateglowMap(1);"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiBitmapButtonCtrl() { + bitmap = "tools/gui/images/delete"; + bitmapMode = "Stretched"; + autoFitExtents = "0"; + useModifiers = "0"; + useStates = "1"; + groupNum = "-1"; + buttonType = "PushButton"; + useMouseEvents = "0"; + position = "177 34"; + extent = "16 16"; + minExtent = "8 2"; + horizSizing = "left"; + vertSizing = "bottom"; + profile = "ToolsGuiButtonProfile"; + visible = "1"; + active = "1"; + command = "MaterialEditorGui.updateglowMap(0);"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiRadioCtrl(glowChanBtn0) { + text = "R"; + groupNum = "3"; + buttonType = "RadioButton"; + useMouseEvents = "0"; + position = "100 5"; + extent = "20 10"; + minExtent = "8 2"; + horizSizing = "right"; + vertSizing = "bottom"; + profile = "ToolsGuiRadioProfile"; + visible = "1"; + active = "1"; + command = "MaterialEditorGui.setglowChan(0);"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiRadioCtrl(glowChanBtn1) { + text = "G"; + groupNum = "3"; + buttonType = "RadioButton"; + useMouseEvents = "0"; + position = "121 5"; + extent = "20 10"; + minExtent = "8 2"; + horizSizing = "right"; + vertSizing = "bottom"; + profile = "ToolsGuiRadioProfile"; + visible = "1"; + active = "1"; + command = "MaterialEditorGui.setglowChan(1);"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiRadioCtrl(glowChanBtn2) { + text = "B"; + groupNum = "3"; + buttonType = "RadioButton"; + useMouseEvents = "0"; + position = "142 5"; + extent = "20 10"; + minExtent = "8 2"; + horizSizing = "right"; + vertSizing = "bottom"; + profile = "ToolsGuiRadioProfile"; + visible = "1"; + active = "1"; + command = "MaterialEditorGui.setglowChan(2);"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiRadioCtrl(glowChanBtn3) { + text = "A"; + groupNum = "3"; + buttonType = "RadioButton"; + useMouseEvents = "0"; + position = "163 5"; + extent = "20 10"; + minExtent = "8 2"; + horizSizing = "right"; + vertSizing = "bottom"; + profile = "ToolsGuiRadioProfile"; + visible = "1"; + active = "1"; + command = "MaterialEditorGui.setglowChan(3);"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + }; }; }; new GuiRolloutCtrl(advancedTextureMapsRollout) { diff --git a/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.cs b/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.cs index ad15af568..5711388fa 100644 --- a/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.cs +++ b/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.cs @@ -614,6 +614,13 @@ function MaterialEditorGui::convertTextureFields(%this) %metalMap = MaterialEditorGui.searchForTexture(MaterialEditorGui.currentMaterial, %metalMap); MaterialEditorGui.currentMaterial.metalMap[%metalI] = %metalMap; } + + for(%glowI = 0; %glowI < 4; %glowI++) + { + %glowMap = MaterialEditorGui.currentMaterial.glowMap[%glowI]; + %glowMap = MaterialEditorGui.searchForTexture(MaterialEditorGui.currentMaterial, %glowMap); + MaterialEditorGui.currentMaterial.glowMap[%glowI] = %glowMap; + } } // still needs to be optimized further @@ -943,6 +950,17 @@ function MaterialEditorGui::guiSync( %this, %material ) MaterialEditorPropertiesWindow-->metalMapDisplayBitmap.setBitmap( (%material).metalMap[%layer] ); } + if((%material).glowMap[%layer] $= "") + { + MaterialEditorPropertiesWindow-->glowMapNameText.setText( "None" ); + MaterialEditorPropertiesWindow-->glowMapDisplayBitmap.setBitmap( "tools/materialeditor/gui/unknownImage" ); + } + else + { + MaterialEditorPropertiesWindow-->glowMapNameText.setText( (%material).glowMap[%layer] ); + MaterialEditorPropertiesWindow-->glowMapDisplayBitmap.setBitmap( (%material).glowMap[%layer] ); + } + MaterialEditorPropertiesWindow-->accuScaleTextEdit.setText((%material).accuScale[%layer]); MaterialEditorPropertiesWindow-->accuScaleTextEdit.setText((%material).accuScale[%layer]); MaterialEditorPropertiesWindow-->accuDirectionTextEdit.setText((%material).accuDirection[%layer]); @@ -964,6 +982,8 @@ function MaterialEditorGui::guiSync( %this, %material ) MaterialEditorPropertiesWindow-->SmoothnessSlider.setValue((%material).Smoothness[%layer]); MaterialEditorPropertiesWindow-->MetalnessTextEdit.setText((%material).Metalness[%layer]); MaterialEditorPropertiesWindow-->MetalnessSlider.setValue((%material).Metalness[%layer]); + MaterialEditorPropertiesWindow-->glowMulTextEdit.setText((%material).glowMul[%layer]); + MaterialEditorPropertiesWindow-->glowMulSlider.setValue((%material).glowMul[%layer]); MaterialEditorPropertiesWindow-->glowCheckbox.setValue((%material).glow[%layer]); MaterialEditorPropertiesWindow-->emissiveCheckbox.setValue((%material).emissive[%layer]); MaterialEditorPropertiesWindow-->parallaxTextEdit.setText((%material).parallaxScale[%layer]); @@ -1038,6 +1058,7 @@ function MaterialEditorGui::guiSync( %this, %material ) %this.getRoughChan((%material).SmoothnessChan[%layer]); %this.getAOChan((%material).AOChan[%layer]); %this.getMetalChan((%material).metalChan[%layer]); + %this.getGlowChan((%material).glowChan[%layer]); %this.preventUndo = false; } @@ -1059,6 +1080,11 @@ function MaterialEditorGui::getMetalChan(%this, %channel) %guiElement = metalChanBtn @ %channel; %guiElement.setStateOn(true); } +function MaterialEditorGui::getGlowChan(%this, %channel) +{ + %guiElement = glowChanBtn @ %channel; + %guiElement.setStateOn(true); +} //======================================= // Material Update Functionality @@ -1354,6 +1380,34 @@ function MaterialEditorGui::updatemetalMap(%this,%action) MaterialEditorGui.guiSync( materialEd_previewMaterial ); } +function MaterialEditorGui::updateGlowMap(%this,%action) +{ + %layer = MaterialEditorGui.currentLayer; + + if( %action ) + { + %texture = MaterialEditorGui.openFile("texture"); + if( %texture !$= "" ) + { + MaterialEditorPropertiesWindow-->GlowMapDisplayBitmap.setBitmap(%texture); + + %bitmap = MaterialEditorPropertiesWindow-->GlowMapDisplayBitmap.bitmap; + %bitmap = strreplace(%bitmap,"tools/materialEditor/scripts/",""); + MaterialEditorPropertiesWindow-->GlowMapDisplayBitmap.setBitmap(%bitmap); + MaterialEditorPropertiesWindow-->GlowMapNameText.setText(%bitmap); + MaterialEditorGui.updateActiveMaterial("glowMap[" @ %layer @ "]","\"" @ %bitmap @ "\""); + } + } + else + { + MaterialEditorPropertiesWindow-->GlowMapNameText.setText("None"); + MaterialEditorPropertiesWindow-->GlowMapDisplayBitmap.setBitmap("tools/materialeditor/gui/unknownImage"); + MaterialEditorGui.updateActiveMaterial("glowMap[" @ %layer @ "]",""); + } + + MaterialEditorGui.guiSync( materialEd_previewMaterial ); +} + function MaterialEditorGui::updateRotationOffset(%this, %isSlider, %onMouseUp) { %layer = MaterialEditorGui.currentLayer; @@ -2476,6 +2530,12 @@ function MaterialEditorGui::setMetalChan(%this, %value) MaterialEditorGui.guiSync( materialEd_previewMaterial ); } +function MaterialEditorGui::setGlowChan(%this, %value) +{ + MaterialEditorGui.updateActiveMaterial("glowChan[" @ MaterialEditorGui.currentLayer @ "]", %value); + MaterialEditorGui.guiSync( materialEd_previewMaterial ); +} + function MaterialEditorGui::saveCompositeMap(%this) { %saveAs = ""; @@ -2501,13 +2561,15 @@ function MaterialEditorGui::saveCompositeMap(%this) %roughMap = %material.roughMap[%layer]; %aoMap = %material.aoMap[%layer]; %metalMap = %material.metalMap[%layer]; + %glowMap = %material.glowMap[%layer]; %smooth = %material.SmoothnessChan[%layer]; %ao = %material.AOChan[%layer]; %metal = %material.metalChan[%layer]; + %glow = %material.glowChan[%layer]; - %channelKey = %smooth SPC %ao SPC %metal SPC 3; + %channelKey = %smooth SPC %ao SPC %metal SPC %glow; error("Storing: \"" @ %roughMap @"\" \""@ %aoMap @"\" \""@ %metalMap @"\" \""@ %channelKey @"\" \""@ %saveAs @"\""); - saveCompositeTexture(%roughMap,%aoMap,%metalMap,"",%channelKey, %saveAs); + saveCompositeTexture(%roughMap,%aoMap,%metalMap,%glowMap,%channelKey, %saveAs); %dlg.delete(); }