422 lines
11 KiB
Plaintext
Executable File
422 lines
11 KiB
Plaintext
Executable File
--tool to parse all expression style controllers in a scene
|
|
--and output metrics for them
|
|
|
|
--Matt Rennie
|
|
--Nov 2013
|
|
|
|
|
|
posExpressionControllers = #()
|
|
posSpringControllers = #()
|
|
rotExpressionControllers = #()
|
|
rotSpringControllers = #()
|
|
rotLookAtControllers = #()
|
|
scaleExpressionControllers = #()
|
|
scaleSpringControllers = #()
|
|
|
|
fn RSTA_posXYZ obj =
|
|
(
|
|
if classof obj.position.controller as string == RsSpring do
|
|
(
|
|
appendIfUnique posSpringControllers[1] obj
|
|
arrIndex = finditem posSpringControllers[1] obj
|
|
append posSpringControllers[2][arrIndex] obj
|
|
)
|
|
if classof obj.position.controller as string == Position_XYZ do
|
|
(
|
|
appendIfUnique posExpressionControllers[1] obj
|
|
cont = Float_Expression
|
|
if classof obj.position.controller.X_Position.controller == cont do
|
|
(
|
|
--now we need to do a finditem to find obj in the controller array
|
|
arrIndex = finditem posExpressionControllers[1] obj
|
|
append posExpressionControllers[2][arrIndex] obj
|
|
)
|
|
if classof obj.position.controller.Y_Position.controller == cont do
|
|
(
|
|
arrIndex = finditem posExpressionControllers[1] obj
|
|
append posExpressionControllers[2][arrIndex] obj
|
|
)
|
|
if classof obj.position.controller.Z_Position.controller == cont do
|
|
(
|
|
arrIndex = finditem posExpressionControllers[1] obj
|
|
append posExpressionControllers[2][arrIndex] obj
|
|
)
|
|
)
|
|
)
|
|
|
|
fn RSTA_posList obj =
|
|
(
|
|
expArr = #(obj,#())
|
|
sprArr = #(obj,#())
|
|
for i = 1 to obj.position.controller.count do
|
|
(
|
|
if classof obj.position.controller[i].controller == RsSpring do
|
|
(
|
|
-- appendIfUnique sprArr[1] obj
|
|
-- arrIndex = finditem posSpringControllers[1] obj
|
|
append sprArr[2] obj
|
|
)
|
|
if classof obj.position.controller[i].controller == Position_XYZ do
|
|
(
|
|
-- appendIfUnique posExpressionControllers[1] obj
|
|
cont = Float_Expression
|
|
|
|
if classof obj.position.controller[i].X_Position.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
if classof obj.position.controller[i].Y_Position.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
if classof obj.position.controller[i].Z_Position.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
)
|
|
)
|
|
|
|
if expArr[2].count > 0 do
|
|
(
|
|
append posExpressionControllers expArr
|
|
)
|
|
if sprArr[2].count > 0 do
|
|
(
|
|
append posSpringControllers sprArr
|
|
)
|
|
)
|
|
|
|
fn RSTA_rotEulerXYZ obj =
|
|
(
|
|
/**
|
|
FUNCTION TO TEST IF obj HAS A STANDARD EULER XYZ
|
|
ROTATION CONTROLLER AND THEN SEND THAT TO BE PARSED
|
|
**/
|
|
expArr = #(obj,#())
|
|
sprArr = #(obj,#())
|
|
laArr = #(obj,#())
|
|
|
|
if classof obj.rotation.controller == RsSpringRotationController do
|
|
(
|
|
append sprArr[2] obj
|
|
)
|
|
|
|
if classof obj.rotation.controller == LookAt_Constraint do
|
|
(
|
|
append laArr[2] obj
|
|
)
|
|
|
|
if classof obj.rotation.controller == Euler_XYZ do
|
|
(
|
|
-- appendIfUnique rotExpressionControllers[1] obj
|
|
cont = Float_Expression
|
|
if classof obj.Rotation.controller.X_Rotation.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
if classof obj.Rotation.controller.Y_Rotation.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
if classof obj.Rotation.controller.Z_Rotation.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
)
|
|
|
|
if expArr[2].count > 0 do
|
|
(
|
|
append rotExpressionControllers expArr
|
|
)
|
|
if sprArr[2].count > 0 do
|
|
(
|
|
append rotSpringControllers sprArr
|
|
)
|
|
if laArr[2].count > 0 do
|
|
(
|
|
append rotLookAtControllers laArr
|
|
)
|
|
)
|
|
|
|
fn RSTA_rotList obj =
|
|
(
|
|
/**
|
|
FUNCTION TO TEST IF obj HAS A ROTATION LIST
|
|
ROTATION CONTROLLER AND THEN SEND THAT TO BE PARSED
|
|
**/
|
|
expArr = #(obj,#())
|
|
sprArr = #(obj,#())
|
|
laArr = #(obj,#())
|
|
|
|
for i = 1 to obj.rotation.controller.count do --skip 1st controller as thats the frozen one
|
|
(
|
|
if classof obj.rotation.controller[i].controller == RsSpringRotationController do
|
|
(
|
|
appendSprArr[2] obj
|
|
)
|
|
|
|
if classof obj.rotation.controller[i].controller == LookAt_Constraint do
|
|
(
|
|
append laArr[2] obj
|
|
)
|
|
|
|
if classof obj.rotation.controller[i].controller == Euler_XYZ do
|
|
(
|
|
-- appendIfUnique rotExpressionControllers[1] obj
|
|
cont = Float_Expression
|
|
if classof obj.rotation.controller[i].X_rotation.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
if classof obj.rotation.controller[i].Y_rotation.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
if classof obj.rotation.controller[i].Z_rotation.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
)
|
|
)
|
|
|
|
if expArr[2].count > 0 do
|
|
(
|
|
append rotExpressionControllers expArr
|
|
)
|
|
if sprArr[2].count > 0 do
|
|
(
|
|
append rotSpringControllers sprArr
|
|
)
|
|
if laArr[2].count > 0 do
|
|
(
|
|
append rotLookAtControllers laArr
|
|
)
|
|
)
|
|
|
|
fn RSTA_sclXYZ obj =
|
|
(
|
|
/**
|
|
FUNCTION TO TEST IF obj HAS A STANDARD SCALE XYZ
|
|
CONTROLLER AND THEN SEND THAT TO BE PARSED
|
|
**/
|
|
expArr = #(obj,#())
|
|
sprArr = #(obj,#())
|
|
|
|
|
|
if classof obj.scale.controller == RsSpring do
|
|
(
|
|
append sprArr obj
|
|
)
|
|
if classof obj.scale.controller == ScaleXYZ do
|
|
(
|
|
cont = Float_Expression
|
|
if classof obj.Scale.controller.X_Scale.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
if classof obj.Scale.controller.Y_Scale.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
if classof obj.Scale.controller.Z_Scale.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
)
|
|
|
|
if expArr[2].count > 0 do
|
|
(
|
|
append scaleExpressionControllers expArr
|
|
)
|
|
if sprArr[2].count > 0 do
|
|
(
|
|
append scaleSpringControllers sprArr
|
|
)
|
|
)
|
|
|
|
fn RSTA_sclList obj =
|
|
(
|
|
/**
|
|
FUNCTION TO TEST IF obj HAS A SCALE LIST
|
|
CONTROLLER AND THEN SEND THAT TO BE PARSED
|
|
**/
|
|
expArr = #(obj,#())
|
|
sprArr = #(obj,#())
|
|
|
|
for i = 1 to obj.scale.controller.count do --skip 1st controller as thats the frozen one
|
|
(
|
|
|
|
if classof obj.scale.controller[i].controller == RsSpring do
|
|
(
|
|
append sprArr[2] obj
|
|
)
|
|
if classof obj.scale.controller[i].controller == ScaleXYZ do
|
|
(
|
|
cont = Float_Expression
|
|
if classof obj.scale.controller[i].X_scale.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
if classof obj.scale.controller[i].Y_scale.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
|
|
)
|
|
if classof obj.scale.controller[i].Z_scale.controller == cont do
|
|
(
|
|
append expArr[2] obj
|
|
)
|
|
)
|
|
)
|
|
|
|
if expArr[2].count > 0 do
|
|
(
|
|
append scaleExpressionControllers expArr
|
|
)
|
|
if sprArr[2].count > 0 do
|
|
(
|
|
append scaleSpringControllers sprArr
|
|
)
|
|
)
|
|
|
|
fn RSTA_queryControllerType obj =
|
|
(
|
|
--format ("Querying controllers on "+obj.name+"\n")
|
|
|
|
if classof obj.position.controller == position_list then
|
|
(
|
|
RSTA_posList obj
|
|
)
|
|
else
|
|
(
|
|
if classof obj.position.controller == Position_XYZ do
|
|
(
|
|
RSTA_posXYZ obj
|
|
)
|
|
)
|
|
|
|
if classof obj.rotation.controller == rotation_list then
|
|
(
|
|
--format ("Rotation List found on "+obj.name+"\n")
|
|
RSTA_rotList obj
|
|
)
|
|
else
|
|
(
|
|
if classof obj.rotation.controller == Euler_XYZ do
|
|
(
|
|
--Format ("Euler XYZ found on "+obj.name+"\n")
|
|
RSTA_rotEulerXYZ obj
|
|
)
|
|
)
|
|
|
|
if classof obj.scale.controller == scale_list then
|
|
(
|
|
debugPrint ("Scale List found on "+obj.name)
|
|
RSTA_sclList obj
|
|
)
|
|
else
|
|
(
|
|
if classof obj.scale.controller == ScaleXYZ do
|
|
(
|
|
debugPrint ("Scale XYZ found on "+obj.name)
|
|
RSTA_sclXYZ obj
|
|
)
|
|
)
|
|
)
|
|
|
|
fn RSTA_expressionCostQuery =
|
|
(
|
|
for obj in objects do
|
|
(
|
|
RSTA_queryControllerType obj
|
|
)
|
|
--
|
|
-- RSTA_queryControllerType $MH_BreatheBone
|
|
|
|
|
|
totalPosExpressionCount = 0
|
|
totalPosSpringCount = 0
|
|
totalRotExpressionCount = 0
|
|
totalRotSpringCount = 0
|
|
totalRotLookAtCount = 0
|
|
totalScaleExpressionCount = 0
|
|
totalScaleSpringCount = 0
|
|
|
|
if posExpressionControllers[1] != undefined do
|
|
(
|
|
for obj = 1 to posExpressionControllers.count do
|
|
(
|
|
format (posExpressionControllers[obj][1].name+" has "+(posExpressionControllers[obj][2].count as string)+" position Expression controllers.\n")
|
|
totalPosExpressionCount = totalPosExpressionCount + posExpressionControllers[obj][2].count
|
|
)
|
|
)
|
|
|
|
if posSpringControllers[1] != undefined do
|
|
(
|
|
for obj = 1 to posSpringControllers.count do
|
|
(
|
|
format (posSpringControllers[obj][1].name+" has "+(posSpringControllers[obj][2].count as string)+" position Spring controllers.\n")
|
|
totalPosSpringCount = totalPosSpringCount + posSpringControllers[obj][2].count
|
|
)
|
|
)
|
|
|
|
-----
|
|
if rotExpressionControllers[1] != undefined do
|
|
(
|
|
for obj = 1 to rotExpressionControllers.count do
|
|
(
|
|
format (rotExpressionControllers[obj][1].name+" has "+(rotExpressionControllers[obj][2].count as string)+" rotation Expression controllers.\n")
|
|
totalRotExpressionCount = totalRotExpressionCount + rotExpressionControllers[obj][2].count
|
|
)
|
|
)
|
|
|
|
if rotSpringControllers[1] != undefined do
|
|
(
|
|
for obj = 1 to rotSpringControllers.count do
|
|
(
|
|
format (rotSpringControllers[obj][1].name+" has "+(rotSpringControllers[obj][2].count as string)+" rotation Spring controllers.\n")
|
|
totalRotSpringCount = totalRotSpringCount + rotSpringControllers[obj][2].count
|
|
)
|
|
)
|
|
|
|
if rotLookAtControllers[1] != undefined do
|
|
(
|
|
for obj = 1 to rotLookAtControllers.count do
|
|
(
|
|
format (rotLookAtControllers[obj][1].name+" has "+(rotLookAtControllers[obj][2].count as string)+" rotation LookAt controllers.\n")
|
|
totalRotLookAtCount = totalRotLookAtCount + rotLookAtControllers[obj][2].count
|
|
)
|
|
)
|
|
------
|
|
if scaleExpressionControllers[1] != undefined do
|
|
(
|
|
for obj = 1 to scaleExpressionControllers.count do
|
|
(
|
|
format (scaleExpressionControllers[obj][1].name+" has "+(scaleExpressionControllers[obj][2].count as string)+" scale Expression controllers.\n")
|
|
totalScaleExpressionCount = totalScaleExpressionCount + scaleExpressionControllers[obj][2].count
|
|
)
|
|
)
|
|
|
|
if scaleSpringControllers[1] != undefined do
|
|
(
|
|
for obj = 1 to scaleSpringControllers.count do
|
|
(
|
|
format (scaleSpringControllers[obj][1].name+" has "+(scaleSpringControllers[obj][2].count as string)+" scale Spring controllers.\n")
|
|
totalScaleSpringCount = totalScaleSpringCount + scaleSpringControllers[obj][2].count
|
|
)
|
|
)
|
|
|
|
format "------------------------------\n"
|
|
thisName = maxfileName
|
|
format (thisName+"\n")
|
|
format ("total Position Expression Count = "+(totalPosExpressionCount as string)+"\n")
|
|
format ("total Position Spring Count = "+(totalPosSpringCount as string)+"\n")
|
|
format ("total Rotation Expression Count = "+(totalRotExpressionCount as string)+"\n")
|
|
format ("total Rotation Spring Count = "+(totalRotSpringCount as string)+"\n")
|
|
format ("total Rotation LookAt Count = "+(totalRotLookAtCount as string)+"\n")
|
|
format ("total Scale Expression Count = "+(totalScaleExpressionCount as string)+"\n")
|
|
format ("total Scale Spring Count = "+(totalScaleSpringCount as string)+"\n")
|
|
|
|
)
|
|
|
|
RSTA_expressionCostQuery() |