You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Tools/maxscript/cryAnim/ui/main/operation.ms

332 lines
8.6 KiB
Plaintext

--###############################################################################
--// rollout to control several operations
--###############################################################################
rollout operationRO "Operation"
(
button btnStart "Start" pos:[8,8] width:45 height:20 toolTip:"Sets the start time of process"
button btnStop "Stop" pos:[60,8] width:45 height:20 toolTip:"Sets the end time of process"
spinner spnBegin "" pos:[6,35] range:[0,9999,0] type:#integer fieldWidth:35 scale:1
spinner spnEnd "" pos:[58,35] range:[0,9999,0] type:#integer fieldWidth:35 scale:1
spinner spnSteps "" pos:[112,35] range:[0,50,1] type:#integer fieldWidth:25 scale:1
label labSteps "Steps" pos:[115,12]
--checkbox chkOnlyExistingKeys "Only existing Keys" pos:[8,60] enabled:false
label labSetRange "Set Range:" pos:[6,60]
button btnSetRangeSelection "Selection" pos:[70,57] height:20 width:50
button btnSetRangeAll "All" pos:[123,57] height:20 width:30
groupBox gbOperation "Operation" pos:[2,80] width:153 height:77
dropDownList ddOperation "" pos:[8,99] width:142 height:21
label labOperation "To :" pos:[15,124] visible:false
label labDistanceDirection "" pos:[15,124] visible:false align:#left
dropDownList ddOperationTo "" pos:[8,140] width:142 height:21 visible:false
spinner spnDistance "" pos:[8,140] width:142 height:21 range:[-1000,1000,0] visible:false
spinner spnDirection "" pos:[8,140] width:142 height:21 range:[-360,360,180] visible:false
button btnApply "Apply" pos:[8,129] width:33 height:20 toolTip:"Applies the Operation once"
button btnApplyBeginEnd "Start/Stop" pos:[46,129] width:59 height:20 toolTip:"Applies the Operation for the selected range"
button btnApplyRange "Range" pos:[110,129] width:39 height:20 toolTip:"Applies the Operation for the animation range"
on operationRO open do
(
try
(
try ( if (cryTools.cryAnim.base.iniFile #get #rolloutStates) == true then (cryTools.cryAnim.UI.main._f.getUI "Operation" "").open = cryTools.cryAnim.base.iniFile #get #operationRO) catch()
operationRO.height = 161
ddOperation.items = cryTools.cryAnim.UI.main.operation._f.updateDialog output:#ddOp
ddOperationTo.items = cryTools.cryAnim.UI.main.operation._f.updateDialog output:#ddOpTo
spnBegin.value = animationRange.start.frame
spnEnd.value = animationRange.end.frame
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.open" )
)
on operationRO rolledUp value do
(
try
(
if (cryTools.cryAnim.base.iniFile #get #operationRO) != value then
cryTools.cryAnim.base.iniFile #set #operationRO
cryTools.cryAnim.UI.main._f.updateDialog()
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.rolledUp" )
)
on chkOnlyExistingKeys changed value do
(
try
(
spnSteps.enabled = not value
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.chkOnlyExistingKeys.changed" )
)
on btnStart pressed do
(
try
(
spnBegin.value = sliderTime
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.btnStart.pressed" )
)
on btnStop pressed do
(
try
(
spnEnd.value = sliderTime
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.btnStop.pressed" )
)
on spnSteps changed value do
(
try
(
local diffStartEnd = spnEnd.value - spnBegin.value
if diffStartEnd < 0 then
diffStartEnd -= (diffStartEnd * 2)
if value > diffStartEnd then
spnSteps.value = diffStartEnd
if spnSteps.value == 0 then spnSteps.value = 1
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.spnSteps.changed" )
)
on btnSetRangeSelection pressed do
(
if selection.count > 0 then
(
local firstKey = 0
local lastKey = 0
for obj in selection do
(
if obj.classID[1] == 37157 then
(
try
(
local tempFirstKey = obj.transform.controller.keys[1].time.frame
if tempFirstKey < firstKey then
firstKey = tempFirstKey
)catch()
try
(
local tempLastkey = obj.transform.controller.keys[obj.transform.controller.keys.count].time.frame
if tempLastKey > lastKey then
lastKey = tempLastKey
)catch()
)
else
(
for i = 1 to 3 do
(
try
(
local tempFirstKey = obj.controller[i].keys[1].time.frame
if tempFirstKey < firstKey then
firstKey = tempFirstKey
)
catch()
try
(
local tempLastkey = obj.controller[i].keys[obj.controller[i].keys.count].time.frame
if tempLastKey > lastKey then
lastKey = tempLastKey
)
catch()
)
)
)
if firstKey != lastKey then
animationRange = interval firstKey lastKey
else
print "Error setting new Range"
)
else
print "Nothing selected."
)
on btnSetRangeAll pressed do
(
local firstKey = 0
local lastKey = 0
for obj in Objects do
(
if obj.classID[1] == 37157 then
(
try
(
local tempFirstKey = obj.transform.controller.keys[1].time.frame
if tempFirstKey < firstKey then
firstKey = tempFirstKey
)catch()
try
(
local tempLastkey = obj.transform.controller.keys[obj.transform.controller.keys.count].time.frame
if tempLastKey > lastKey then
lastKey = tempLastKey
)catch()
)
else
(
for i = 1 to 3 do
(
try
(
local tempFirstKey = obj.controller[i].keys[1].time.frame
if tempFirstKey < firstKey then
firstKey = tempFirstKey
)
catch()
try
(
local tempLastkey = obj.controller[i].keys[obj.controller[i].keys.count].time.frame
if tempLastKey > lastKey then
lastKey = tempLastKey
)
catch()
)
)
)
if firstKey != lastKey then
animationRange = interval firstKey lastKey
else
print "Error setting new Range"
)
on ddOperation selected value do
(
try
(
case value of
(
4: ddOperation.selection -= 1
7: ddOperation.selection -= 1
11: ddOperation.selection -= 1
)
cryTools.cryAnim.UI.main.operation._f.updateDialog()
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.ddOperation.selected" )
)
on btnApply pressed do
(
try
(
cryTools.cryAnim.UI.main.operation._f.applyOperation ddOperation.selection ddOperationTo.selection sliderTime.frame sliderTime.frame 1
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.btnApply.pressed" )
)
on btnApplyBeginEnd pressed do
(
try
(
if spnBegin.value == spnEnd.value then
(
messageBox ("'Start' must be unequal to 'End'") title:"Begin/End Operation"
return false
)
if spnBegin.value > spnEnd.value then
(
tempValue = spnBegin.value
spnBegin.value = spnEnd.value
spnEnd.value = tempValue
)
local diffBeginEnd = spnEnd.value - spnBegin.value
if diffBeginEnd < 0 then
diffBeginEnd -= (diffBeginEnd * 2)
if spnSteps.value > diffBeginEnd then
spnSteps.value = diffBeginEnd
undo "BeginEndOperation" on
(
local tempAnimationRange = animationRange
animationRange = interval spnBegin.value spnEnd.value
local tempBool = cryTools.cryAnim.UI.main.operation._f.applyOperation ddOperation.selection ddOperationTo.selection spnBegin.value spnEnd.value spnSteps.value
if tempBool != false then
cryTools.cryAnim.UI.main.operation._f.applyOperation ddOperation.selection ddOperationTo.selection spnEnd.value spnEnd.value 1
animationRange = tempAnimationRange
)
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.btnApplyBeginEnd.pressed" )
)
on btnApplyRange pressed do
(
try
(
undo "RangeOperation" on
(
tempBool = cryTools.cryAnim.UI.main.operation._f.applyOperation ddOperation.selection ddOperationTo.selection animationRange.start.frame animationRange.end.frame spnSteps.value
if tempBool != false then
cryTools.cryAnim.UI.main.operation._f.applyOperation ddOperation.selection ddOperationTo.selection animationRange.end.frame animationRange.end.frame 1
)
)
catch ( logOutput "!!> Error in cryTools.cryAnim.UI.main.dialog.operationRO.btnApplyRange.pressed" )
)
)
logOutput "> Created operationRO rollout"
try
(
if cryTools.cryAnim.base.iniFile #get #multiRow == true then
addSubRollout cryTools.cryAnim.UI.main.dialog.row1 operationRO
else
addSubRollout cryTools.cryAnim.UI.main.dialog.row1 operationRO
)
catch ( logOutput "!!> Error adding operationRO to main dialog" )
operationRO = undefined
logOutput ">> operation.ms loaded"