// =========================================================================== // 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. // =========================================================================== // // // Creation Date: Sep 2014 // // // Procedure Name: // DynFieldsSolverMenu // // Description: // Create the DYNAMICS->Fields/Solvers // // Input Arguments: // parent to parent the menu to. // // Return Value: // None. // global proc string createRigidSolverList( string $parent ) // { setParent -menu $parent; menu -edit -deleteAllItems $parent; int $i; string $solverList[] = `ls -type rigidSolver`; int $solverCount = size($solverList); radioMenuItemCollection; if ( $solverCount > 0 ) { for ($i = 0; $i < $solverCount; $i++) { string $cmdString = "getAttr " + $solverList[$i] + ".current"; int $current = eval( $cmdString ); $cmdString = "setAttr " + $solverList[$i] + ".current 1"; string $menu = "menu" + $solverList[$i]; menuItem -label $solverList [$i] -radioButton $current -command $cmdString $menu; } } else { menuItem -label (uiRes("m_DynFieldsSolverMenu.kNoSolvers")) ; } return 1; } proc DynLegacyRigidBodyItems() { menuItem -divider true -label (uiRes("m_DynFieldsSolverMenu.kLegacyRigidBodies")); menuItem -rtc "CreateActiveRigidBody" -dragMenuCommand "performDynamics 2 ActiveRigid 2" createActiveRigidBodyItem; menuItem -optionBox true -rtc "CreateActiveRigidBodyOptions" createActiveRigidBodyDialogItem; menuItem -rtc "CreatePassiveRigidBody" -dragMenuCommand "performDynamics 2 PassiveRigid 2" createPassiveRigidBodyItem; menuItem -optionBox true -rtc "CreatePassiveRigidBodyOptions" createPassiveRigidBodyDialogItem; menuItem -divider true -longDivider false; menuItem -rtc "CreateNailConstraint" -dragMenuCommand "optionVar -iv constrainTypesOM 1;performDynamics 2 Constrain 2" createNailConstraintItem; menuItem -optionBox true -rtc "CreateNailConstraintOptions" createNailConstraintDialogItem; menuItem -rtc "CreatePinConstraint" -dragMenuCommand "optionVar -iv constrainTypesOM 2;performDynamics 2 Constrain 2" createPinConstraintItem; menuItem -optionBox true -rtc "CreatePinConstraintOptions" createPinConstraintDialogItem; menuItem -rtc "CreateHingeConstraint" -dragMenuCommand "optionVar -iv constrainTypesOM 3;performDynamics 2 Constrain 2" createHingeConstraintItem; menuItem -optionBox true -rtc "CreateHingeConstraintOptions" createHingeConstraintDialogItem; menuItem -rtc "CreateSpringConstraint" -dragMenuCommand "optionVar -iv constrainTypesOM 4;performDynamics 2 Constrain 2" createSpringConstraintItem; menuItem -optionBox true -rtc "CreateSpringConstraintOptions" createSpringConstraintDialogItem; menuItem -rtc "CreateBarrierConstraint" -dragMenuCommand "optionVar -iv constrainTypesOM 5;performDynamics 2 Constrain 2" createBarrierConstraintItem; menuItem -optionBox true -rtc "CreateBarrierConstraintOptions" createBarrierConstraintDialogItem; menuItem -divider true -longDivider false; menuItem -rtc "SetActiveKey" setActiveKey; menuItem -rtc "SetPassiveKey" setPassiveKey; menuItem -divider true; menuItem -rtc "BreakRigidBodyConnection" breakConnections; menuItem -rtc "SetRigidBodyInterpenetration" rigidBodyInterpenetration; menuItem -rtc "SetRigidBodyCollision" rigidBodyCollison; menuItem -divider true -longDivider false; menuItem -rtc "RigidBodySolver" editRigidSolver; // Current Rigid Body Solver menu string $menu = `menuItem -label (uiRes("m_DynFieldsSolverMenu.kCurrentRigidSolver")) -annotation (uiRes("m_DynFieldsSolverMenu.kCurrentRigidSolverAnnot")) -subMenu true -tearOff false`; menuItem -edit -postMenuCommand ( "createRigidSolverList " + $menu ) $menu; setParent -menu ..; menuItem -rtc "CreateRigidBodySolver" createRigidSolver; } global proc DynCreateAssignNSolverMenu( string $parent ) // // Build the move to solver submenu { setParent -menu $parent; menu -edit -deleteAllItems $parent; menuItem -label (uiRes("m_DynFieldsSolverMenu.kAssignNewSolver")) -command "assignNSolver \"\"" -annotation (uiRes("m_DynFieldsSolverMenu.kNewSolver")); string $solvers[] = `ls -type "nucleus"`; for( $solver in $solvers ) { menuItem -label $solver -command ("assignNSolver " + $solver ); } setParent -menu ..; } global proc DynCreateStartStateMenu( string $parent ) // // Build the Submenu { setParent -menu $parent; menuItem -rtc "setDynStartState" setDynStartStateItem; menuItem -rtc "SaveInitialStateAll" saveStateAll; menuItem -rtc "clearDynStartState" clearDynStartStateItem; menuItem -divider true -dividerLabel (uiRes("m_DynFieldsSolverMenu.kSolverInitialNucleus")); menuItem -rtc "SetNClothStartFromMesh" setNClothStartFromMeshItem; menuItem -rtc "RelaxInitialState" relaxInitialStateItem; menuItem -optionBox true -rtc "RelaxInitialStateOptions" -enable true relaxInitialStateOptionItem; menuItem -rtc "ResolveInterpenetration" resolveInterpenetrationItem; menuItem -optionBox true -enable true -rtc "ResolveInterpenetrationOptions" resolveInterpenetrationOptionItem; menuItem -divider true -dividerLabel (uiRes("m_DynFieldsSolverMenu.kSolverInitialFluids")); menuItem -rtc "SetInitialState" -dragMenuCommand "performSetFluidState 2" -dragDoubleClickCommand "SetInitialStateOptions"; menuItem -optionBox true -rtc "SetInitialStateOptions"; menuItem -rtc "SaveFluidStateAs"; setParent -menu ..; } global proc DynFieldsSolverMenu ( string $parent ) { setParent -menu $parent; if( `menu -q -ni $parent` != 0 ) { // // Menu is built already - just return // return; } menuItem -divider true -label (uiRes("m_DynFieldsSolverMenu.kCreate")); menuItem -rtc "Air" -dragMenuCommand "performDynamics 1 Air 2" createAirItem; menuItem -optionBox true -rtc "AirOptions" createAirDialogItem; menuItem -rtc "Drag" -dragMenuCommand "performDynamics 1 Drag 2" createDragItem; menuItem -optionBox true -rtc "DragOptions" createDragDialogItem; menuItem -rtc "Gravity" -dragMenuCommand "performDynamics 1 Gravity 2" createGravityItem; menuItem -optionBox true -rtc "GravityOptions" createGravityDialogItem; menuItem -rtc "Newton" -dragMenuCommand "performDynamics 1 Newton 2" createNewtonItem; menuItem -optionBox true -rtc "NewtonOptions" createNewtonDialogItem; menuItem -rtc "Radial" -dragMenuCommand "performDynamics 1 Radial 2" createRadialItem; menuItem -optionBox true -rtc "RadialOptions" createRadialDialogItem; menuItem -rtc "Turbulence" -dragMenuCommand "performDynamics 1 Turbulence 2" createTurbulenceItem; menuItem -optionBox true -rtc "TurbulenceOptions" createTurbulenceDialogItem; menuItem -rtc "Uniform" -dragMenuCommand "performDynamics 1 Uniform 2" createUniformItem; menuItem -optionBox true -rtc "UniformOptions" createUniformDialogItem; menuItem -rtc "Vortex" -dragMenuCommand "performDynamics 1 Vortex 2" createVortexItem; menuItem -optionBox true -rtc "VortexOptions" createVortexDialogItem; menuItem -divider true -dividerLabel (uiRes("m_DynFieldsSolverMenu.kFieldsVolume")); menuItem -rtc "VolumeAxis" -dragMenuCommand "performDynamics 1 VolumeAxis 2" createVolumeAxisItem; menuItem -optionBox true -rtc "VolumeAxisOptions" createVolumeAxisDialogItem; menuItem -rtc "CreateCurveField" -dragMenuCommand "performDynamics 1 VolumeCurve 2" createVolumeCurveItem; menuItem -divider true -dividerLabel (uiRes("m_DynFieldsSolverMenu.kFieldsConnect")); menuItem -rtc "AttachSelectedAsSourceField" addDynamicItem; menuItem -rtc "AffectSelectedObject" connFieldItem; menuItem -divider true -dividerLabel (uiRes("m_DynFieldsSolverMenu.kSolvers")); menuItem -rtc "ConnectToTime" connectToTimeItem; // Initial State submenu string $startStateItem = `menuItem -label (uiRes("m_DynFieldsSolverMenu.kInitialState")) -annotation (uiRes("m_DynFieldsSolverMenu.kInitialStateAnnot")) -subMenu true -tearOff true -allowOptionBoxes true nucleusStartStateItem`; DynCreateStartStateMenu $startStateItem; menuItem -rtc "InteractivePlayback" interactivePlaybackItem; menuItem -divider true -dividerLabel (uiRes("m_DynFieldsSolverMenu.kSolverNucleus")); // Assign Solver submenu // string $assignSolverItem = `menuItem -label (uiRes("m_DynFieldsSolverMenu.kAssignSolver")) -annotation (uiRes("m_DynFieldsSolverMenu.kAssignSolverAnnot")) -subMenu true -tearOff true -allowOptionBoxes false nucleusAssignSolverItem`; menuItem -edit -postMenuCommand ("DynCreateAssignNSolverMenu " + $assignSolverItem) nucleusAssignSolverItem; setParent -menu ..; // Legacy RBD menu items if(`getenv "MAYA_ENABLE_LEGACY_RIGID"` !="0") { DynLegacyRigidBodyItems; } }