Browse Source

frontend work. stubbs in a glowMul slider, and a glow mask channel for composites (defaults to writing to the alpha chan)

AzaezelX 5 years ago
parent
commit
7daf66cf9d

+ 296 - 1
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) {

+ 64 - 2
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();
 }