// =========================================================================== // Copyright 2018 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software in either electronic or hard copy form. // =========================================================================== proc setOptionVars (int $forceFactorySettings) { if ($forceFactorySettings || !`optionVar -exists hwFogSource`) optionVar -stringValue hwFogSource "fragment"; if ($forceFactorySettings || !`optionVar -exists hwFogMode`) optionVar -stringValue hwFogMode "linear"; if ($forceFactorySettings || !`optionVar -exists hwFogDense`) optionVar -floatValue hwFogDense 0.1; if ($forceFactorySettings || !`optionVar -exists hwFogStart`) optionVar -floatValue hwFogStart 0.0; if ($forceFactorySettings || !`optionVar -exists hwFogEnd`) optionVar -floatValue hwFogEnd 100.0; if ($forceFactorySettings || !`optionVar -exists hwFogColorR`) optionVar -floatValue hwFogColorR 0.5; if ($forceFactorySettings || !`optionVar -exists hwFogColorG`) optionVar -floatValue hwFogColorG 0.5; if ($forceFactorySettings || !`optionVar -exists hwFogColorB`) optionVar -floatValue hwFogColorB 0.5; if ($forceFactorySettings || !`optionVar -exists hwFogColorA`) optionVar -floatValue hwFogColorA 1.0; } global proc hwFogUpdateLinearControls( int $linear ) { if ($linear == 1) { disable -v true hwFogDense; disable -v false hwFogStart; disable -v false hwFogEnd; } else { disable -v false hwFogDense; disable -v true hwFogStart; disable -v true hwFogEnd; } } global proc hwFogOptionsSetup (string $parent, int $forceFactorySettings) { setOptionVars($forceFactorySettings); setParent $parent; string $sval; $sval = `optionVar -query hwFogMode`; int $isLinear = 0; if ($sval == "linear") { $isLinear = 1; optionMenuGrp -edit -sl 1 hwFogMode; } else if ($sval == "exponent") { optionMenuGrp -edit -sl 2 hwFogMode; } else // "exponent2" { optionMenuGrp -edit -sl 3 hwFogMode; } $sval = `optionVar -query hwFogSource`; if ($sval == "fragment") optionMenuGrp -edit -sl 1 hwFogSource; else // "coordinate" optionMenuGrp -edit -sl 2 hwFogSource; // Density float $val; $val = `optionVar -query hwFogDense`; floatSliderGrp -edit -value $val hwFogDense; // Start / end $val = `optionVar -query hwFogStart`; floatSliderGrp -edit -value $val hwFogStart; $val = `optionVar -query hwFogEnd`; floatSliderGrp -edit -value $val hwFogEnd; // Color float $r,$g,$b,$a; $r = `optionVar -query hwFogColorR`; $g = `optionVar -query hwFogColorG`; $b = `optionVar -query hwFogColorB`; $a = `optionVar -query hwFogColorA`; colorSliderGrp -edit -rgb $r $g $b hwFogColor; floatSliderGrp -edit -value $a hwFogAlpha; hwFogUpdateLinearControls $isLinear; } global proc hwFogOptionsCallback (string $parent, int $doIt, string $editor) { setParent $parent; string $modeT[]; $modeT[0] = "linear"; $modeT[1] = "exponent"; $modeT[2] = "exponent2"; string $sourceT[]; $sourceT[0] = "fragment"; $sourceT[1] = "coordinate"; int $val = `optionMenuGrp -query -sl hwFogMode`; $val = $val - 1; int $isLinear = ($val == 0); optionVar -stringValue hwFogMode $modeT[$val]; $val = `optionMenuGrp -query -sl hwFogSource`; $val = $val - 1; optionVar -stringValue hwFogSource $sourceT[$val]; float $fval = `floatSliderGrp -query -value hwFogDense`; optionVar -floatValue hwFogDense $fval; optionVar -floatValue hwFogStart `floatSliderGrp -query -value hwFogStart`; optionVar -floatValue hwFogEnd `floatSliderGrp -query -value hwFogEnd`; float $rgb[3]; $rgb = `colorSliderGrp -query -rgb hwFogColor`; optionVar -floatValue hwFogColorR $rgb[0]; optionVar -floatValue hwFogColorG $rgb[1]; optionVar -floatValue hwFogColorB $rgb[2]; optionVar -floatValue hwFogColorA `floatSliderGrp -query -value hwFogAlpha`; hwFogUpdateLinearControls $isLinear; if ($doIt) { hwFogOptions 0 $editor; } } proc hwFogOptionsOptions(string $editor) { string $commandName = "hwFogOptions"; string $callback = ($commandName + "Callback"); string $setup = ($commandName + "Setup"); string $layout = getOptionBox(); setParent $layout; setUITemplate -pushTemplate DefaultTemplate; waitCursor -state 1; string $parent = `columnLayout -adjustableColumn true`; //---------------------------------------------------------------------- frameLayout -label (uiRes("m_hwFogOptions.kDisplayMode")) -cl false -cll false; columnLayout; optionMenuGrp -label (uiRes("m_hwFogOptions.kFalloff")) -cc ("int $val = `optionMenuGrp -query -sl hwFogMode`; hwFogUpdateLinearControls ($val == 1) ") hwFogMode; menuItem -label (uiRes("m_hwFogOptions.kLinear")) ; menuItem -label (uiRes("m_hwFogOptions.kExponential")) ; menuItem -label (uiRes("m_hwFogOptions.kExponentialSquared")) ; setParent -menu ..; optionMenuGrp -label (uiRes("m_hwFogOptions.kMeasurement")) hwFogSource; menuItem -label (uiRes("m_hwFogOptions.kPerPixel")) ; // fragment menuItem -label (uiRes("m_hwFogOptions.kPerGeometryPoint")) ; // coordinate setParent -menu ..; setParent $parent; //---------------------------------------------------------------------- frameLayout -label (uiRes("m_hwFogOptions.kDisplayParameters")) -cl false -cll false; columnLayout; floatSliderGrp -label (uiRes("m_hwFogOptions.kDensity")) -minValue 0.0 -maxValue 1.0 -fieldMinValue 0.0 -fieldMaxValue 1.0 hwFogDense; floatSliderGrp -label (uiRes("m_hwFogOptions.kStart")) -minValue 0.0 -maxValue 1000.0 -fieldMinValue 0.0 -fieldMaxValue 1000000.0 hwFogStart; floatSliderGrp -label (uiRes("m_hwFogOptions.kEnd")) -minValue 0.0 -maxValue 1000.0 -fieldMinValue 0.0 -fieldMaxValue 1000000.0 hwFogEnd; colorSliderGrp -label (uiRes("m_hwFogOptions.kColor")) -rgb 0.0 0.0 0.0 hwFogColor; floatSliderGrp -label (uiRes("m_hwFogOptions.kAlpha")) -minValue 0.0 -maxValue 1.0 -fieldMinValue 0.0 -fieldMaxValue 1.0 hwFogAlpha; setParent $parent; //---------------------------------------------------------------------- waitCursor -state 0; setUITemplate -popTemplate; string $applyBtn = getOptionBoxApplyBtn(); button -edit -label (uiRes("m_hwFogOptions.kSet")) -command ($callback + " " + $parent + " " + 1 + " \"" + $editor + "\"") $applyBtn; string $saveBtn = getOptionBoxSaveBtn(); button -edit -command ($callback + " " + $parent + " " + 0 + " \"" + $editor + " \"" + "; hideOptionBox") $saveBtn; string $resetBtn = getOptionBoxResetBtn(); button -edit -command ($setup + " " + $parent + " " + 1) $resetBtn; setOptionBoxTitle (uiRes("m_hwFogOptions.kHardwareFogDisplayOptions")); setOptionBoxHelpTag( "HardwareFogDisplay" ); eval (($setup + " " + $parent + " " + 0)); showOptionBox(); } global proc UnCollapseHwFogTab() { string $frameLayouts[] = `lsUI -type frameLayout -long`; string $frameLayout; for ($frameLayout in $frameLayouts) { if (`startsWith $frameLayout "Viewport20OptionsWindow"`) { string $label = `frameLayout -q -label $frameLayout`; if ($label == uiRes("m_createMayaHardware2GlobalsTab.kHwFogOptions")) { frameLayout -e -collapsable true -collapse 0 $frameLayout; } else { frameLayout -e -collapsable true -collapse 1 $frameLayout; } } } } global proc string hwFogOptions (int $option, string $editor) { string $cmd=""; // Check the renderer used global string $gViewport2; int $isV2RendererMode = (getViewportRenderer($editor) == $gViewport2); // Viewport 2.0 has its own hardware fog settings. if ($isV2RendererMode) { createViewport20OptionsUI(); UnCollapseHwFogTab(); } else { switch ($option) { case 1: hwFogOptionsOptions $editor; // Just the option box break; default: setOptionVars(false); string $mode = `optionVar -q hwFogMode`; string $source = `optionVar -q hwFogSource`; float $density = `optionVar -q hwFogDense`; float $start = `optionVar -query hwFogStart`; float $end = `optionVar -query hwFogEnd`; float $rgba[4]; $rgba[0] = `optionVar -query hwFogColorR`; $rgba[1] = `optionVar -query hwFogColorG`; $rgba[2] = `optionVar -query hwFogColorB`; $rgba[3] = `optionVar -query hwFogColorA`; $cmd = "modelEditor -e " + " -fsc \"" + $source + "\"" + " -fmd \"" + $mode + "\"" + " -fdn " + $density + " -fst " + $start + " -fen " + $end + " -fcl " + $rgba[0] + " " + $rgba[1] + " " + $rgba[2] + " " + $rgba[3] + " " + $editor + ";" ; if ($option == 0) evalEcho $cmd; break; } } return $cmd; }