// =========================================================================== // 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. // =========================================================================== // // Procedure Name: // renderLayerPresetMenu // // Description: // Build a menu for managing user presets with the "nodePreset" command, // or applying built-in presets. // // Input Arguments: // $presetMenu - the name of the menu control // $node - the name of the render layer to create the menu for // // Return Value: // None // global proc renderLayerPresetMenu( string $presetMenu, string $node ) { setParent -menu $presetMenu; popupMenu -e -deleteAllItems $presetMenu; // Menu items for built-in presets // menuItem -label (uiRes("m_renderLayerPresetMenu.kLuminanceDepth")) -command ("renderLayerBuiltinPreset linearDepth "+$node); menuItem -label (uiRes("m_renderLayerPresetMenu.kGeometryMatte")) -command ("renderLayerBuiltinPreset matte "+$node); menuItem -label (uiRes("m_renderLayerPresetMenu.kDiffuse")) -command ("renderLayerBuiltinPreset diffuse "+$node); menuItem -label (uiRes("m_renderLayerPresetMenu.kSpecular")) -command ("renderLayerBuiltinPreset specular "+$node); menuItem -label (uiRes("m_renderLayerPresetMenu.kShadow")) -command ("renderLayerBuiltinPreset shadow "+$node); menuItem -divider true; // Giving the chance to third parties to add their custom presets // callbacks -executeCallbacks -hook "renderLayerPresetMenu" $node; menuItem -divider true; string $presets[] = `nodePreset -list $node`; // Menu items for managing user presets // menuItem -label (uiRes("m_renderLayerPresetMenu.kSavePreset")) -command ("saveNodePresetCB " + $node); if (size($presets) > 0) { // There are user presets, create a menu and sub-items // to delete them. menuItem -label (uiRes("m_renderLayerPresetMenu.kDeletePreset")) -subMenu true; for ($item in $presets) { menuItem -label $item -command ("nodePresetConfirmDeleteDialog { "+ "\""+$node+"\""+ ", \""+$item+"\""+ " }"); } setParent -menu ..; } menuItem -divider true; // Menu items for applying the user presets // for ($item in $presets) { menuItem -label $item -command ("nodePreset -load "+$node+" "+$item); } } global proc saveNodePresetCB(string $node) { string $script = "renderLayerSaveCustomPreset(\"#nodeName\",\"#presetName\")"; string $arg = "-custom \"" + encodeString($script) + "\" -attributes \"renderPassInfo attributeOverrideScript\""; string $nodes[] = {$node}; string $args[] = {$arg}; saveNodePresetDialog($nodes, $args); }