aboutsummaryrefslogtreecommitdiff
path: root/scripts/shaveRunTimeCommands.mel
diff options
context:
space:
mode:
authorBen Marsh <[email protected]>2019-10-22 09:07:59 -0400
committerBen Marsh <[email protected]>2019-10-22 09:07:59 -0400
commitbd0027e737c6512397f841c22786274ed74b927f (patch)
treef7ffbdb8f3741bb7f24635616cc189cba5cb865c /scripts/shaveRunTimeCommands.mel
downloadarchived-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.mel501
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;
+ }
+}