diff options
| author | Ben Marsh <[email protected]> | 2019-10-22 09:07:59 -0400 |
|---|---|---|
| committer | Ben Marsh <[email protected]> | 2019-10-22 09:07:59 -0400 |
| commit | bd0027e737c6512397f841c22786274ed74b927f (patch) | |
| tree | f7ffbdb8f3741bb7f24635616cc189cba5cb865c /scripts/shaveRunTimeCommands.mel | |
| download | archived-shave-and-a-haircut-bd0027e737c6512397f841c22786274ed74b927f.tar.xz archived-shave-and-a-haircut-bd0027e737c6512397f841c22786274ed74b927f.zip | |
Adding Shave-and-a-Haircut 9.6
Diffstat (limited to 'scripts/shaveRunTimeCommands.mel')
| -rw-r--r-- | scripts/shaveRunTimeCommands.mel | 501 |
1 files changed, 501 insertions, 0 deletions
diff --git a/scripts/shaveRunTimeCommands.mel b/scripts/shaveRunTimeCommands.mel new file mode 100644 index 0000000..b35699c --- /dev/null +++ b/scripts/shaveRunTimeCommands.mel @@ -0,0 +1,501 @@ +// Shave and a Haircut +// (c) 2019 Epic Games +// US Patent 6720962 + +global string $shaveRunTimeCommands_fileVersion = "$Revision$"; + + +// +// The commands in this script form the external MEL interface for Shave. +// Users can use these commands in their own scripts and we will strive to +// ensure that they don't change from version to version. We won't be +// able to guarantee that all the time -- for example if a feature is +// removed from the product or completely changes in nature, then any +// corresponding commands may no longer be valid -- but we will try to +// keep such changes to a minimum. +// + +proc registerCommand(string $commandName, string $ann, string $cmd) +{ + if (`runTimeCommand -exists $commandName`) + runTimeCommand -e -cat "Shave" -c $cmd -ann $ann $commandName; + else + runTimeCommand -cat "Shave" -c $cmd -ann $ann $commandName; +} + + +global proc shaveRunTimeCommands() +{ + // + // Menu Items + // + registerCommand( + "shaveSelectPresetAndCreateHair", + "Shave: select a preset and create a new hair node from it", + "shave_createHairFromPresetSelect" + ); + + registerCommand( + "shaveMultiClone", + "Shave: clone node heirarchy with hair", + "shave_multiClone" + ); + + registerCommand( + "shaveCombFromCurves", + "Shave: comb hair to match selected curves", + "shave_recomb" + ); + + registerCommand( + "shaveSelectAndApplyPreset", + "Shave: select a preset and apply it to the current hair node", + "shave_copyHairFromPresetSelect" + ); + + registerCommand( + "shaveSetInstance", + "Shave: set instance object", + "shave_setInstance" + ); + + registerCommand( + "shaveClearInstance", + "Shave: clear instance object", + "shave_clearInstance" + ); + + registerCommand( + "shaveUpdateGrowthSurfaces", + "Shave: change the set of surfaces from which hair grows", + "shave_setHairMesh" + ); + + registerCommand( + "shaveUpdateCollisionSurfaces", + "Shave: change the set of surfaces with which hair collides", + "shave_setCollisionMesh" + ); + + registerCommand( + "shaveClearCollisionSurfaces", + "Shave: clear the set of surfaces with which hair collides", + "shave_clearCollisionMesh" + ); + + registerCommand( + "shaveCreateSplineLocks", + "Shave: lock the current hair node's guides to a set of selected curves", + "shave_createSplineLocks" + ); + + registerCommand( + "shaveDeleteSplineLocks", + "Shave: if the current hair node is spline locked, unlock it", + "shave_deleteSplineLocks" + ); + + registerCommand( + "shaveCreateCurvesFromGuides", + "Shave: create NURBS curves matching the current hair node's guides", + "shave_guidesToCurves" + ); + + registerCommand( + "shaveCreateCurvesFromHairs", + "Shave: create NURBS curves matching the current hair node's hairs", + "shave_hairsToCurves" + ); + + registerCommand( + "shaveCreatePolysFromHairs", + "Shave: create poly meshes matching the current hair node's hairs", + "shave_hairsToPolys" + ); + + registerCommand( + "shaveCreateVertexShader", + "Shave: create a vertex shader", + "shave_createVertexShader \"\"" + ); + + registerCommand( + "shaveSynchVertexShader", + "Shave: re-synch a vertex shader to match its corresponding hair node", + "shave_synchShader \"\"" + ); + + registerCommand( + "shaveUVLinkingEditor", + "Shave: edit associations between Shave parameters and surface UV maps", + "shaveLinkingEditor" + ); + + registerCommand( + "shaveResetRestPose", + "Shave: reset the current hair node's rest pose", + "shave_resetRest" + ); + + registerCommand( + "shaveDelete", + "Shave: delete the current hair node", + "shaveDeleteCurrent" + ); + + registerCommand( + "shaveScaleSelectAll", + "Shave: set scale select for all nodes", + "shave_ScaleSelectAll" + ); + + registerCommand( + "shaveScaleSelectCurrent", + "Shave: set scale select for current node", + "shave_ScaleSelectCurrent" + ); + + registerCommand( + "shaveResetRestPose", + "Shave: reset the current hair node's rest pose", + "shave_resetRest" + ); + + registerCommand( + "shaveEditGlobalSettings", + "Shave: edit global settings", + "shaveGlobalsEditor" + ); + + registerCommand( + "shaveSelectGrowthSurfaces", + "Shave: select the current hair node's growth surfaces", + "shave_selectMesh growth" + ); + + registerCommand( + "shaveSelectCollisionSurfaces", + "Shave: select the current hair node's collision surfaces", + "shave_selectMesh collision" + ); + + registerCommand( + "shaveSynchToTextures", + "Shave: synchronize the current hair node with its textures", + "shaveUpdateTextures" + ); + + registerCommand( + "shaveToggleHideHair", + "Shave: hide and unhide all the hair in the scene", + "shave_toggleHideHair" + ); + + registerCommand( + "shaveToggleFallback", + "Shave: fallback hair count on various operations", + "shave_toggleFallbackHair" + ); + + registerCommand( + "shaveCreateShelf", + "Shave: create a shelf containing shave styling tools", + "shaveShelf_create" + ); + + // + // Light Shadow Parameters + // + registerCommand( + "shaveAddShadowParamsToLights", + "Shave: add shadow parameters to selected lights", + "shave_addShadowParamsToLight \"\"" + ); + + registerCommand( + "shaveRemoveShadowParamsFromLights", + "Shave: remove shadow parameters from selected lights", + "shave_removeShadowParamsFromLight \"\"" + ); + + // + // Dynamics + // + registerCommand( + "shaveToggleLiveMode", + "Shave: turn Live Mode (interactive dynamics) on and off", + "shave_toggleLive" + ); + + registerCommand( + "shaveRunDynamicsCurrent", + "Shave: run and cache dynamics for the current hair node", + "shaveDynamics current" + ); + + registerCommand( + "shaveRunDynamicsAll", + "Shave: run and cache dynamics for all hair nodes", + "shaveDynamics all" + ); + + registerCommand( + "shaveClearDynamicsCurrent", + "Shave: clear the dynamics cache for the current hair node", + "shave_clearDynamics \"\"" + ); + + registerCommand( + "shaveClearDynamicsAll", + "Shave: clear the dynamics cache for all hair nodes", + "shave_clearDynamics all" + ); + + // + // Component Selection Types + // + registerCommand( + "shaveSelectGuides", + "Shave: select guides", + "shaveBrush_setSelectMode guide" + ); + + registerCommand( + "shaveSelectVerts", + "Shave: select vertices", + "shaveBrush_setSelectMode vert" + ); + + registerCommand( + "shaveSelectByRoots", + "Shave: select guides by their roots", + "shaveBrush_setSelectMode root" + ); + + registerCommand( + "shaveSelectByTips", + "Shave: select only the tips of guides", + "shaveBrush_setSelectMode tip" + ); + + // + // Selection Utilities + // + registerCommand( + "shaveSelectGrow", + "Shave: grow selection by adding surrounding hairs", + "shaveStyle -growSelection" + ); + + registerCommand( + "shaveSelectInverse", + "Shave: invert selection", + "shaveStyle -invertSelection" + ); + + registerCommand( + "shaveSelectRotateUp", + "Shave: move selected verts higher up hairs", + "shaveStyle -rotateSelectionUp" + ); + + registerCommand( + "shaveSelectHide", + "Shave: hide selected hairs", + "shaveStyle -hideSelection true" + ); + + registerCommand( + "shaveSelectUnhide", + "Shave: unhide selected hairs", + "shaveStyle -hideSelection false" + ); + + registerCommand( + "shaveSplitSelection", + "Shave: split selected hairs from interpolation groups", + "shaveStyle -splitSelection" + ); + + registerCommand( + "shaveMergeSelection", + "Shave: merge interpolation groups of selected hairs", + "shaveStyle -mergeSelection" + ); + + registerCommand( + "shaveUpdateTexturesN", + "Shave: refresh textures", + "shaveUpdateTextures" + ); + + + // + // Brush Modes + // + registerCommand( + "shaveBrushTranslateMode", + "Shave: Brush Mode: move/translate hair", + "shaveBrushSetMode 0" + ); + + registerCommand( + "shaveBrushScaleMode", + "Shave: Brush Mode: resize/scale hair", + "shaveBrushSetMode 1" + ); + + registerCommand( + "shaveBrushRotateMode", + "Shave: Brush Mode: rotate hair about brush", + "shaveBrushSetMode 2" + ); + + registerCommand( + "shaveBrushStandMode", + "Shave: Brush Mode: stand hair straight out from surface", + "shaveBrushSetMode 3" + ); + + registerCommand( + "shaveBrushPuffMode", + "Shave: Brush Mode: puff hair out from surface", + "shaveBrushSetMode 4" + ); + + registerCommand( + "shaveBrushClumpMode", + "Shave: Brush Mode: clump hair together", + "shaveBrushSetMode 5" + ); + + // + // Styling Tools + // + registerCommand( + "shaveBrushTool", + "Shave: Brush Tool: brush/style hair", + "shave_brushTool false" + ); + + registerCommand( + "shaveBrushToolOptions", + "Shave: Brush Tool options", + "shave_brushTool true" + ); + + registerCommand( + "shaveCutTool", + "Shave: Cut Tool: cut hair", + "shave_cutTool false" + ); + + registerCommand( + "shaveCutToolOptions", + "Shave: Cut Tool options", + "shave_cutTool true" + ); + + // + // Styling Utilities + // + registerCommand( + "shaveAttenuate", + "Shave: attenuate hair", + "shaveStyle -attenuate" + ); + + registerCommand( + "shavePopSelected", + "Shave: pop selected hairs", + "shaveStyle -popSelected" + ); + + registerCommand( + "shavePopZeroSized", + "Shave: pop zero-sized hairs", + "shaveStyle -popZeroSized" + ); + + registerCommand( + "shaveRecomb", + "Shave: recomb hair", + "shaveStyle -recomb" + ); + + registerCommand( + "shaveReplaceRest", + "Shave: replace rest position on hair", + "shaveStyle -replaceRest" + ); + + registerCommand( + "shaveTglCollision", + "Shave: toggle collisions", + "shaveStyle -tglCollision" + ); + + registerCommand( + "shaveTglHairs", + "Shave: toggle hairs", + "shaveToggleHideHair" + ); + + registerCommand( + "shaveTglFallback", + "Shave: toggle fallback", + "shaveToggleFallback" + ); + + registerCommand( + "shaveLockHair", + "Shave: lock hairs", + "shaveStyle -lock true" + ); + + + registerCommand( + "shaveUnlockHair", + "Shave: unlock hairs", + "shaveStyle -lock false" + ); + + registerCommand( + "shaveUndo", + "Shave: undo last operation", + "shaveStyle -undo" + ); +} + + +global proc shaveRunTimeCommands_cleanup() +{ + string $cmds[] = `runTimeCommand -q -userCommandArray`; + string $cmd; + + for ($cmd in $cmds) + { + if (`runTimeCommand -q -cat $cmd` == "Shave") + runTimeCommand -e -delete $cmd; + } +} + + +global proc shaveStyle_rotateUp() +{ + // + // Rotate Up is only meaningful in vertex selection mode. However, if + // the user is in tip selection mode then it can be useful to switch to + // vertex selection mode so that that tip selection can be rotated + // around to the bottom of the guide. + // + // So if we're in component mode and are selecting tips, switch to + // selecting vertices. + // + if (`selectMode -q -co`) + { + if (`optionVar -q shaveBrushSelectMode` == "tip") shaveSelectVerts; + + shaveStyle -rotateSelectionUp; + } +} |