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/CryArtistTools.ms

2129 lines
54 KiB
Plaintext

-------------------------------------------------------------------------------
-- CryArtistTools.ms
-- Version 2.2 External
-- by Christopher Evans
-------------------------------------------------------------------------------
-- Globals
-------------------------------------------------------------------------------
global CryArtistTools
crytools.maxDirTxt = (getdir #maxroot)
-------------------------------------------------------------------
-----------Update "CGF Metadata Manager" Function---------
-------------------------------------------------------------------
udpInARR = #()
testFor = #()
fn udpGetFromSel =
(
likeMass = false
likeDensity = false
multipleObj = false
AllMass = false
AllDens = false
AllDensity = false
AllLimit = false
AllTwist = false
AllBend = false
AllPull = false
AllPush = false
AllShift = false
LikeLimit = false
LikeTwist = false
LikeBend = false
LikePull = false
LikePush = false
LikeShift = false
CryArtistTools.rollouts[3].objScale.value = 100
if $ == undefined then
(
CryArtistTools.rollouts[3].isMain.checked = false
CryArtistTools.rollouts[3].isRemain.checked = false
CryArtistTools.rollouts[3].updateLBL.text = "Nothing selected"
CryArtistTools.rollouts[3].UpdateUDP.enabled = false
CryArtistTools.rollouts[3].udpSetToSel.enabled = false
return undefined
)
if CryArtistTools != undefined then
(
CryArtistTools.rollouts[3].UpdateUDP.enabled = false
CryArtistTools.rollouts[3].udpSetToSel.enabled = true
if selection.count > 1 then multipleObj = true
if selection.count == 1 then
(
case selection[1].name of
(
"Main": (CryArtistTools.rollouts[3].isMain.checked = true)
"Remain": (CryArtistTools.rollouts[3].isRemain.checked = true)
)
if selection[1].name != "Main" and selection[1].name!="Remain" then
(
CryArtistTools.rollouts[3].isMain.checked = false
CryArtistTools.rollouts[3].isRemain.checked = false
)
)
LimitArr = #()
TwistArr = #()
BendArr = #()
PullArr = #()
PushArr = #()
ShiftArr = #()
MassArr = #()
DensArr = #()
for obj in selection do
(
Temp = #()
udpInARR = crytools.inFromUDP obj
if udpInARR.count == 0 then
(
CryArtistTools.rollouts[3].updateLBL.text = "Object has no UDP data"
if multipleObj == true then
(
CryArtistTools.rollouts[3].updateLBL.text = "Objects have no UDP data"
)
)
else
(
CryArtistTools.rollouts[3].updateLBL.text = "UDP data loaded"
IsMass = (filterstring udpInARR[1] " =")
if IsMass[1] == "mass" then
(
append MassArr obj
)
else
(
if IsMass[1] == "density" then
(
append DensArr obj
)
)
)
for i = 1 to udpInArr.count do
(
testFor = (filterstring udpInARR[i] " =")[1]
append Temp testFor
)
if (findItem Temp "limit") != 0 then append LimitArr obj
if (findItem Temp "twist") != 0 then append TwistArr obj
if (findItem Temp "bend") != 0 then append BendArr obj
if (findItem Temp "pull") != 0 then append PullArr obj
if (findItem Temp "push") != 0 then append PushArr obj
if (findItem Temp "shift") != 0 then append ShiftArr obj
)
if multipleObj == true then
(
CryArtistTools.rollouts[3].isMain.checked = false
CryArtistTools.rollouts[3].isRemain.checked = false
if MassArr.count != 0 then
(
if MassArr.count == selection.count then AllMass = true else AllMass = false
)
if DensArr.count != 0 then
(
if DensArr.count == selection.count then AllDens = true else AllDens = false
)
if LimitArr.count != 0 then
(
if LimitArr.count == selection.count then AllLimit = true else AllLimit = false
)
if TwistArr.count != 0 then
(
if TwistArr.count == selection.count then AllTwist = true else AllTwist = false
)
if BendArr.count != 0 then
(
if BendArr.count == selection.count then AllBend = true else AllBend = false
)
if PullArr.count != 0 then
(
if PullArr.count == selection.count then AllPull = true else AllPull = false
)
if PushArr.count != 0 then
(
if PushArr.count == selection.count then AllPush = true else AllPush = false
)
if ShiftArr.count != 0 then
(
if ShiftArr.count == selection.count then AllShift = true else AllShift = false
)
)
testForMass = (crytools.getUDP selection[1] "mass")
for i = 2 to selection.count do
(
if (crytools.getUDP selection[i] "mass") != testForMass then likeMass = false else likeMass = true
)
testForDensity = (crytools.getUDP selection[1] "density")
for i = 2 to selection.count do
(
if (crytools.getUDP selection[i] "density") != testForDensity then likeDensity = false else likeDensity = true
)
testForLimit = (crytools.getUDP selection[1] "limit")
for i = 2 to selection.count do
(
if (crytools.getUDP selection[i] "limit") != testForLimit then likeLimit = false else likeLimit = true
)
testForTwist = (crytools.getUDP selection[1] "twist")
for i = 2 to selection.count do
(
if (crytools.getUDP selection[i] "twist") != testForTwist then likeTwist = false else likeTwist = true
)
testForBend = (crytools.getUDP selection[1] "bend")
for i = 2 to selection.count do
(
if (crytools.getUDP selection[i] "bend") != testForBend then likeBend = false else likeBend = true
)
testForPull = (crytools.getUDP selection[1] "pull")
for i = 2 to selection.count do
(
if (crytools.getUDP selection[i] "pull") != testForPull then likePull = false else likePull = true
)
testForPush = (crytools.getUDP selection[1] "push")
for i = 2 to selection.count do
(
if (crytools.getUDP selection[i] "push") != testForPush then likePush = false else likePush = true
)
testForShift = (crytools.getUDP selection[1] "shift")
for i = 2 to selection.count do
(
if (crytools.getUDP selection[i] "shift") != testForShift then likeShift = false else likeShift = true
)
-- reset
CryArtistTools.rollouts[3].cylinder1.checked = false
CryArtistTools.rollouts[3].box1.checked = false
CryArtistTools.rollouts[3].capsule1.checked = false
CryArtistTools.rollouts[3].sphere1.checked = false
CryArtistTools.rollouts[3].useMass.checked = false
CryArtistTools.rollouts[3].objMass.value = 0
CryArtistTools.rollouts[3].objMass.enabled = false
CryArtistTools.rollouts[3].useDensity.checked = false
CryArtistTools.rollouts[3].objDensity.value = 0
CryArtistTools.rollouts[3].objDensity.enabled = false
CryArtistTools.rollouts[3].objScale.enabled = false
CryArtistTools.rollouts[3].jLimit.enabled = false
CryArtistTools.rollouts[3].jLimit.checked = false
CryArtistTools.rollouts[3].jTwist.enabled = false
CryArtistTools.rollouts[3].jTwist.checked = false
CryArtistTools.rollouts[3].jBend.enabled = false
CryArtistTools.rollouts[3].jBend.checked = false
CryArtistTools.rollouts[3].jPull.enabled = false
CryArtistTools.rollouts[3].jPull.checked = false
CryArtistTools.rollouts[3].jPush.enabled = false
CryArtistTools.rollouts[3].jPush.checked = false
CryArtistTools.rollouts[3].jShift.enabled = false
CryArtistTools.rollouts[3].jShift.checked = false
CryArtistTools.rollouts[3].jScale.enabled = false
CryArtistTools.rollouts[3].jScale.checked = false
CryArtistTools.rollouts[3].jointScale.enabled = false
CryArtistTools.rollouts[3].jointScale.value = 100
CryArtistTools.rollouts[3].usejoint.checked = false
CryArtistTools.rollouts[3].jointLimit.value = 0
CryArtistTools.rollouts[3].jointLimit.enabled = false
CryArtistTools.rollouts[3].jointTwist.value = 0
CryArtistTools.rollouts[3].jointTwist.enabled = false
CryArtistTools.rollouts[3].jointBend.value = 0
CryArtistTools.rollouts[3].jointBend.enabled = false
CryArtistTools.rollouts[3].jointPull.value =0
CryArtistTools.rollouts[3].jointPull.enabled = false
CryArtistTools.rollouts[3].jointPush.value = 0
CryArtistTools.rollouts[3].jointPush.enabled = false
CryArtistTools.rollouts[3].jointShift.value = 0
CryArtistTools.rollouts[3].jointShift.enabled = false
CryArtistTools.rollouts[3].isEntity.checked = false
CryArtistTools.rollouts[3].xrot.checked = false
CryArtistTools.rollouts[3].yrot.checked = false
CryArtistTools.rollouts[3].zrot.checked = false
CryArtistTools.rollouts[3].sizevar.value = 0
CryArtistTools.rollouts[3].GenericCount.value = 0
--CryArtistTools.rollouts[3].ispickable.checked = false
--lowercase inputs
for i = 1 to udpInARR.count do
(
testFor = (filterstring udpInARR[i] " =")
wordFilter = (crytools.forceLowerCase testFor[1])
jointsPresent = false
case wordFilter of
(
"mass":
(
CryArtistTools.rollouts[3].useMass.checked = true
CryArtistTools.rollouts[3].objMass.enabled = true
CryArtistTools.rollouts[3].objMass.value = (testFor[2] as float)
CryArtistTools.rollouts[3].objScale.enabled = true
if multipleObj == true then
(
if AllMass == true then
(
if CryArtistTools.rollouts[3].objMass.value != 0 then
(
CryArtistTools.rollouts[3].UpdateUDP.enabled = true
CryArtistTools.rollouts[3].udpSetToSel.enabled = false
)
else
(
CryArtistTools.rollouts[3].udpSetToSel.enabled = true
)
if likeMass == true then
(
CryArtistTools.rollouts[3].updateLBL.text = "Objects have same mass"
--print "Selected objects have like mass"
)
else
(
CryArtistTools.rollouts[3].updateLBL.text = "Multiple objects: different mass"
--print "Multiple objects: different Mass"
CryArtistTools.rollouts[3].useMass.checked = false
CryArtistTools.rollouts[3].objMass.enabled = false
CryArtistTools.rollouts[3].objScale.enabled = true
CryArtistTools.rollouts[3].objMass.value = 0
)
)
else
(
CryArtistTools.rollouts[3].updateLBL.text = "Multiple objects: Data mismatch"
CryArtistTools.rollouts[3].useMass.checked = false
CryArtistTools.rollouts[3].objMass.enabled = false
CryArtistTools.rollouts[3].objScale.enabled = false
CryArtistTools.rollouts[3].objMass.value = 0
)
)
)
"density":
(
CryArtistTools.rollouts[3].useDensity.checked = true
CryArtistTools.rollouts[3].objDensity.enabled = true
CryArtistTools.rollouts[3].objDensity.value = (testFor[2] as float)
CryArtistTools.rollouts[3].objScale.enabled = true
if multipleObj == true then
(
if AllDens == true then
(
if CryArtistTools.rollouts[3].objDensity.value != 0 then
(
CryArtistTools.rollouts[3].UpdateUDP.enabled = true
CryArtistTools.rollouts[3].udpSetToSel.enabled = false
)
else
(
CryArtistTools.rollouts[3].udpSetToSel.enabled = true
)
if likeDensity == true then
(
CryArtistTools.rollouts[3].updateLBL.text = "Objects have same density"
--print "Selected Objects have like density"
)
else
(
CryArtistTools.rollouts[3].updateLBL.text = "Multiple objects: different density"
--print "Multiple objects: data mismatch"
CryArtistTools.rollouts[3].useDensity.checked = false
CryArtistTools.rollouts[3].objDensity.enabled = false
CryArtistTools.rollouts[3].objDensity.value = 0
CryArtistTools.rollouts[3].objScale.enabled = true
)
)
else
(
CryArtistTools.rollouts[3].updateLBL.text = "Multiple objects: Data mismatch"
CryArtistTools.rollouts[3].useDensity.checked = false
CryArtistTools.rollouts[3].objDensity.enabled = false
CryArtistTools.rollouts[3].objScale.enabled = false
CryArtistTools.rollouts[3].objDensity.value = 0
)
)
)
"limit":
(
CryArtistTools.rollouts[3].jointLimit.enabled = true
CryArtistTools.rollouts[3].jLimit.enabled = true
CryArtistTools.rollouts[3].jTwist.enabled = true
CryArtistTools.rollouts[3].jBend.enabled = true
CryArtistTools.rollouts[3].jPull.enabled = true
CryArtistTools.rollouts[3].jPush.enabled = true
CryArtistTools.rollouts[3].jShift.enabled = true
CryArtistTools.rollouts[3].jScale.enabled = true
CryArtistTools.rollouts[3].jointScale.enabled = true
CryArtistTools.rollouts[3].usejoint.checked = true
CryArtistTools.rollouts[3].jointLimit.value = (testFor[2] as float)
jointsPresent = true
if multipleObj == true then
(
if AllLimit == true then
(
if likeLimit == true then
(
CryArtistTools.rollouts[3].jointLimit.value = (testFor[2] as float)
)
else
(
CryArtistTools.rollouts[3].jointLimit.value = 0
)
)
else
(
CryArtistTools.rollouts[3].jointLimit.value = 0
)
)
)
"twist":
(
CryArtistTools.rollouts[3].jointTwist.enabled = true
CryArtistTools.rollouts[3].jLimit.enabled = true
CryArtistTools.rollouts[3].jTwist.enabled = true
CryArtistTools.rollouts[3].jBend.enabled = true
CryArtistTools.rollouts[3].jPull.enabled = true
CryArtistTools.rollouts[3].jPush.enabled = true
CryArtistTools.rollouts[3].jShift.enabled = true
CryArtistTools.rollouts[3].jScale.enabled = true
CryArtistTools.rollouts[3].jointScale.enabled = true
CryArtistTools.rollouts[3].usejoint.checked = true
CryArtistTools.rollouts[3].jointTwist.value = (testFor[2] as float)
jointsPresent = true
if multipleObj == true then
(
if AllTwist == true then
(
if likeTwist == true then
(
CryArtistTools.rollouts[3].jointTwist.value = (testFor[2] as float)
)
else
(
CryArtistTools.rollouts[3].jointTwist.value = 0
)
)
else
(
CryArtistTools.rollouts[3].jointTwist.value = 0
)
)
)
"bend":
(
CryArtistTools.rollouts[3].jointBend.enabled = true
CryArtistTools.rollouts[3].jLimit.enabled = true
CryArtistTools.rollouts[3].jTwist.enabled = true
CryArtistTools.rollouts[3].jBend.enabled = true
CryArtistTools.rollouts[3].jPull.enabled = true
CryArtistTools.rollouts[3].jPush.enabled = true
CryArtistTools.rollouts[3].jShift.enabled = true
CryArtistTools.rollouts[3].jScale.enabled = true
CryArtistTools.rollouts[3].jointScale.enabled = true
CryArtistTools.rollouts[3].usejoint.checked = true
CryArtistTools.rollouts[3].jointBend.value = (testFor[2] as float)
jointsPresent = true
if multipleObj == true then
(
if AllBend == true then
(
if likeBend == true then
(
CryArtistTools.rollouts[3].jointBend.value = (testFor[2] as float)
)
else
(
CryArtistTools.rollouts[3].jointBend.value = 0
)
)
else
(
CryArtistTools.rollouts[3].jointBend.value = 0
)
)
)
"pull":
(
CryArtistTools.rollouts[3].jointPull.enabled = true
CryArtistTools.rollouts[3].jLimit.enabled = true
CryArtistTools.rollouts[3].jTwist.enabled = true
CryArtistTools.rollouts[3].jBend.enabled = true
CryArtistTools.rollouts[3].jPull.enabled = true
CryArtistTools.rollouts[3].jPush.enabled = true
CryArtistTools.rollouts[3].jShift.enabled = true
CryArtistTools.rollouts[3].jScale.enabled = true
CryArtistTools.rollouts[3].jointScale.enabled = true
CryArtistTools.rollouts[3].usejoint.checked = true
CryArtistTools.rollouts[3].jointPull.value = (testFor[2] as float)
jointsPresent = true
if multipleObj == true then
(
if AllPull == true then
(
if likePull == true then
(
CryArtistTools.rollouts[3].jointPull.value = (testFor[2] as float)
)
else
(
CryArtistTools.rollouts[3].jointPull.value = 0
)
)
else
(
CryArtistTools.rollouts[3].jointPull.value = 0
)
)
)
"push":
(
CryArtistTools.rollouts[3].jointPush.enabled = true
CryArtistTools.rollouts[3].jLimit.enabled = true
CryArtistTools.rollouts[3].jTwist.enabled = true
CryArtistTools.rollouts[3].jBend.enabled = true
CryArtistTools.rollouts[3].jPull.enabled = true
CryArtistTools.rollouts[3].jPush.enabled = true
CryArtistTools.rollouts[3].jShift.enabled = true
CryArtistTools.rollouts[3].jScale.enabled = true
CryArtistTools.rollouts[3].jointScale.enabled = true
CryArtistTools.rollouts[3].usejoint.checked = true
CryArtistTools.rollouts[3].jointPush.value = (testFor[2] as float)
jointsPresent = true
if multipleObj == true then
(
if AllPush == true then
(
if likePush == true then
(
CryArtistTools.rollouts[3].jointPush.value = (testFor[2] as float)
)
else
(
CryArtistTools.rollouts[3].jointPush.value = 0
)
)
else
(
CryArtistTools.rollouts[3].jointPush.value = 0
)
)
)
"shift":
(
CryArtistTools.rollouts[3].jointShift.enabled = true
CryArtistTools.rollouts[3].jLimit.enabled = true
CryArtistTools.rollouts[3].jTwist.enabled = true
CryArtistTools.rollouts[3].jBend.enabled = true
CryArtistTools.rollouts[3].jPull.enabled = true
CryArtistTools.rollouts[3].jPush.enabled = true
CryArtistTools.rollouts[3].jShift.enabled = true
CryArtistTools.rollouts[3].jScale.enabled = true
CryArtistTools.rollouts[3].jointScale.enabled = true
CryArtistTools.rollouts[3].usejoint.checked = true
CryArtistTools.rollouts[3].jointShift.value = (testFor[2] as float)
jointsPresent = true
if multipleObj == true then
(
if AllShift == true then
(
if likeShift == true then
(
CryArtistTools.rollouts[3].jointShift.value = (testFor[2] as float)
)
else
(
CryArtistTools.rollouts[3].jointShift.value = 0
)
)
else
(
CryArtistTools.rollouts[3].jointShift.value = 0
)
)
)
"pickable":
(
CryArtistTools.rollouts[3].ispickable.checked = true
)
"entity":
(
CryArtistTools.rollouts[3].isEntity.checked = true
)
"rotaxes":
(
if testFor[2] == "x" then CryArtistTools.rollouts[3].xrot.checked = true
if testFor[2] == "y" then CryArtistTools.rollouts[3].yrot.checked = true
if testFor[2] == "z" then CryArtistTools.rollouts[3].zrot.checked = true
if testFor[2] == "xy"then
(
CryArtistTools.rollouts[3].xrot.checked = true
CryArtistTools.rollouts[3].yrot.checked = true
)
if testFor[2] == "xz"then
(
CryArtistTools.rollouts[3].xrot.checked = true
CryArtistTools.rollouts[3].zrot.checked = true
)
if testFor[2] == "yz"then
(
CryArtistTools.rollouts[3].zrot.checked = true
CryArtistTools.rollouts[3].yrot.checked = true
)
if testFor[2] == "xyz"then
(
CryArtistTools.rollouts[3].xrot.checked = true
CryArtistTools.rollouts[3].Yrot.checked = true
CryArtistTools.rollouts[3].zrot.checked = true
)
)
"sizevar":
(
CryArtistTools.rollouts[3].sizevar.value = (testFor[2] as float)
)
"generic":
(
CryArtistTools.rollouts[3].GenericCount.value = (testFor[2] as float)
)
)
case udpInARR[i] of
(
"cylinder": CryArtistTools.rollouts[3].cylinder1.checked = true
"box": CryArtistTools.rollouts[3].box1.checked = true
"capsule": CryArtistTools.rollouts[3].capsule1.checked = true
"sphere": CryArtistTools.rollouts[3].sphere1.checked = true
)
if jointsPresent == true then
(
CryArtistTools.rollouts[3].jointLimit.enabled = true
CryArtistTools.rollouts[3].jointTwist.enabled = true
CryArtistTools.rollouts[3].jointBend.enabled = true
CryArtistTools.rollouts[3].jointPull.enabled = true
CryArtistTools.rollouts[3].jointPush.enabled = true
CryArtistTools.rollouts[3].jointShift.enabled = true
)
)
)
)
-------------------------------End of Update Function---------------------------------------------
-------------------------------------------------------------------------------
-- CryArtistTools interface
-------------------------------------------------------------------------------
(
if CryArtistTools != undefined do ( closerolloutfloater CryArtistTools )
CryArtistTools = newrolloutfloater "CryArtistTools 1.4" 190 380
--ArtistTools
-------------------------------------------------------------------------------
rollout ArtistTools "Artist Tools"
(
group "General Tools"
(
button centerPivotBttn "centerPivot" offset:[-42,0]
checkbutton preserveUV "preserveUVs" offset:[40,-26]
button resetXformBttn "resetXformCollapse"
checkbutton copyModifier "Copy Modifier" height:18 width:120
button applyModifier "Select a modifier" height:18 width:120 enabled:false
)
button exportCheck "Export Check"
Group "UV Tools"
(
button scaleVert images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\scalevert.png"), undefined, 1, 1, 1, 1, 1) tooltip:"collapse vertical" offset:[-65,0]
button scaleHoriz images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\scaleHoriz.png"), undefined, 1, 1, 1, 1, 1) tooltip:"collapse horizontal" offset:[-35,-31]
button scaleUniform images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\scaleUniform.png"), undefined, 1, 1, 1, 1, 1) tooltip:"uniform scale" offset:[-5,-31]
button rot90c images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\90c.png"), undefined, 1, 1, 1, 1, 1) tooltip:"rotate 90 clockwise" offset:[25,-31]
button rot90cc images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\90cc.png"), undefined, 1, 1, 1, 1, 1) tooltip:"rotate 90 counter clockwise" offset:[55,-31]
label OBJvertsLBL "OBJ: " align:#left offset:[0,5]
label UVvertsLBL "UV: " align:#left offset:[70,-18.5]
button refreshVerts "<" align:#right offset:[0,-23]
)
Group "Modelling Tools"
(
button LimEloop images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\LEloop.png"), undefined, 1, 1, 1, 1, 1) tooltip:"Limited Edge Loop" offset:[-65,0]
button LimEring images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\LEring.png"), undefined, 1, 1, 1, 1, 1) tooltip:"Limited Edge Ring" offset:[-35,-31]
button LimVloop images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\LVloop.png"), undefined, 1, 1, 1, 1, 1) tooltip:"Limited Vert Loop" offset:[-5,-31]
button LimVring images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\LVring.png"), undefined, 1, 1, 1, 1, 1) tooltip:"Limited Vert Ring" offset:[25,-31]
button LimPloop images:#((crytools.BuildPathFull + "tools\\maxscript\\icons\\LPloop.png"), undefined, 1, 1, 1, 1, 1) tooltip:"Limited Poly Ring" offset:[55,-31]
)
-- centerPivot
on centerPivotBttn pressed do
(
for obj in selection do
(
CenterPivot obj
)
)
-- refreshVerts
on refreshVerts pressed do
(
if selection.count != 1 then
(
OBJvertsLBL.text = "OBJ: --"
UVvertsLBL.text = "UV: --"
)
else
(
try
(
OBJvertsLBL.text = ("OBJ: " + ($.numverts as string))
UVvertsLBL.text = ("UV: " + ($.modifiers[#unwrap_uvw].unwrap.numbervertices() as string))
)
catch()
)
)
-- preserveUVs
on preserveUV changed state do
(
try
if (preserveUV.checked == true) then
(
$.preserveUVs = on
)
else
(
$.preserveUVs = off
)
catch
(
messageBox "Please select an object. Or make sure that your object has an edit poly applied." title:"Error"
preserveUV.checked = false
return undefined
)
)
on ArtistTools open do
(
try
(
FileIn (BuildPathFull_crytools + "Tools\\maxscript\\CryModelling.ms")
if $.modifiers[#unwrap_uvw] != undefined then
(
OBJvertsLBL.text = ("OBJ: " + ($.numverts as string))
UVvertsLBL.text = ("UV: " + ($.modifiers[#unwrap_uvw].unwrap.numbervertices() as string))
)
)
catch()
)
-- resetXformCollapse
on resetXformBttn pressed do
(
for obj in selection do
(
ResetXForm obj
print (obj.name + " xforms reset")
modPanel.setCurrentObject obj.baseObject
maxOps.CollapseNode obj off
)
)
-- uv tools
on scaleVert pressed do
(
try($.modifiers[#unwrap_uvw].unwrap2.ScaleSelectedCenter 0.001 2)catch()
)
on scaleHoriz pressed do
(
try($.modifiers[#unwrap_uvw].unwrap2.ScaleSelectedCenter 0.001 1)catch()
)
on scaleUniform pressed do
(
try($.modifiers[#unwrap_uvw].unwrap2.ScaleSelectedCenter 0.001 0)catch()
)
on rot90c pressed do
(
try($.modifiers[#unwrap_uvw].unwrap2.RotateSelectedCenter -1.59698)catch()
)
on rot90cc pressed do
(
try($.modifiers[#unwrap_uvw].unwrap2.RotateSelectedCenter 1.6057)catch()
)
--exportCheck
on exportCheck pressed do
(
if $ == undefined then
(
messageBox "No object selected" title:"Error"
return undefined
)
if $.material == undefined then
(
messageBox "There is no defined shader for this object!" title:"Problem Found!"
return undefined
)
materials = $.material.materialIDlist
for i = 1 to materials.count do
(
checkme = $.material.material[i].shadername
if checkme != "Crytek Shader" then
(
messageBox ("The following material is not set to the Crytek Shader: " + $.material.material[i].name) title:"Problem Found!"
)
)
)
on applyModifier pressed do
(
if xferModifier == undefined then return 0
else
(
undo "paste modifiers" on
(
for obj in selection do
(
if validModifier obj xferModifier then addmodifier obj (copy xferModifier)
print "test"
)
)
)
)
-- modified from Velmar cgsociety post
on copyModifier changed state do
(
local o,s
if copyModifier.checked = true then
(
if selection.count == 1 then
(
try
(
o = selection[1]
s = modPanel.getcurrentObject()
if s != undefined then
(
s = (modPanel.getModifierIndex o s)
print s
global xferModifier = copy o.modifiers[s]
copyModifier.caption = o.modifiers[s].name
applyModifier.enabled = true
applyModifier.caption = "Apply Modifier"
print ("copying " + (xferModifier as string))
)
else copyModifier.checked = off
)
catch
(
copyModifier.checked = off
print "error"
)
)
else copyModifier.checked = off
)
else
(
copyModifier.caption = "Copy Modifier"
xferModifier = undefined
applyModifier.caption = "Select a modifier"
applyModifier.enabled = false
)
)
---------Modelling Tools------------------
on LimEloop pressed do
(
CryModelling.SelLimELoop ()
)
on LimEring pressed do
(
CryModelling.SelLimERing()
)
on LimVloop pressed do
(
CryModelling.SelVertLoop()
)
on LimVring pressed do
(
CryModelling.SelVertRing()
)
on LimPloop pressed do
(
CryModelling.SelPolyLoop()
)
)
rollout Diagnostics "Diagnostics"
(
fn updatePolyStats =
(
if CryArtistTools.rollouts[2].open == true then
(
stats = crytools.polyStats()
CryArtistTools.rollouts[2].faceLBL.text = ("Faces: " + stats[1] as string)
CryArtistTools.rollouts[2].edgeLBL.text = ("Edges: " + stats[2] as string)
CryArtistTools.rollouts[2].vertLBL.text = ("Verts: " + stats[3] as string)
print (("Faces: " + stats[1] as string) + (" Edges: " + stats[2] as string) + (" Verts: " + stats[3] as string))
)
)
fn thinFatStats =
(
if CryArtistTools.rollouts[2].open == true then
(
if selection.count != 1 then
(
messagebox "select one mesh"
return undefined
)
base = (crytools.forcelowercase $.name)
base = crytools.cutstring base "_LOD1"
base = crytools.cutstring base "_LOD2"
base = crytools.cutstring base "_LOD3"
base = crytools.cutstring base "_thin"
base = crytools.cutstring base "_fat"
outText = ""
try(outText = (((getnodebyname base).mesh.verts.count as string) + " " + base + "\n"))catch(outText = "BASE_LOD0: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_thin")).mesh.verts.count as string) + " " + base + "_thin\n"))catch(outText += "THIN_LOD0: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_fat")).mesh.verts.count as string) + " " + base + "_fat\n"))catch(outText += "FAT_LOD0: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_LOD1")).mesh.verts.count as string) + " " + base + "_LOD1\n"))catch(outText += "LOD1: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_thin_LOD1")).mesh.verts.count as string) + " " + base + "_thin_LOD1\n"))catch(outText += "THIN_LOD1: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_fat_LOD1")).mesh.verts.count as string) + " " + base + "_fat_LOD1\n"))catch(outText += "FAT_LOD1: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_LOD2")).mesh.verts.count as string) + " " + base + "_LOD2\n"))catch(outText += "LOD2: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_thin_LOD2")).mesh.verts.count as string) + " " + base + "_thin_LOD2\n"))catch(outText += "THIN_LOD2: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_fat_LOD2")).mesh.verts.count as string) + " " + base + "_fat_LOD2\n"))catch(outText += "FAT_LOD2: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_LOD3")).mesh.verts.count as string) + " " + base + "_LOD3\n"))catch(outText += "LOD3: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_thin_LOD3")).mesh.verts.count as string) + " " + base + "_thin_LOD3\n"))catch(outText += "THIN_LOD3: NOT FOUND\n")
try(outText += (((getnodebyname (base + "_fat_LOD3")).mesh.verts.count as string) + " " + base + "_fat_LOD2"))catch(outText += "FAT_LOD3: NOT FOUND")
messagebox outText title:"Thin/Fat Mesh Check"
if cryartisttools.rollouts[2].printThinFat.checked == true then (print outText)
)
)
group "polyStats"
(
label faceLBL "Faces: " align:#left
label edgeLBL "Edges: " align:#left
label vertLBL "Verts: " align:#left
)
group "thin/fat meshCheck"
(
button thinFat "Thin/Fat Mesh Check"
checkbox printThinFat "Print to Listener" align:#center checked:true
)
on Diagnostics rolledUp state do
(
if state == true then
(
CryArtistTools.rollouts[2].updatePolyStats()
callbacks.addScript #selectionSetChanged "CryArtistTools.rollouts[2].updatePolyStats()" id:#updatePolyStats
)
else
(
callbacks.removeScripts id:#updatePolyStats
)
)
/*on Diagnostics open do
(
callbacks.addScript #selectionSetChanged "CryArtistTools.rollouts[2].updatePolyStats()" id:#updatePolyStats
)*/
on Diagnostics close do
(
callbacks.removeScripts id:#updatePolyStats
)
on thinFat pressed do
(
thinFatStats()
)
)
rollout metadataManager "CGF Metadata Manager"
(
label updateLBL "Info will be updated here"
button UpdateUDP " Update Data " Height:25 Enabled:false
button udpSetToSel " Apply Settings to Selected " height:25
checkbox useMass "Mass:" offset:[-10,0]
spinner objMass "" type:#float range:[0,99999,0] fieldWidth:50 offset:[-40,-20]
checkbox useDensity "Density:" offset:[-10,0]
spinner objDensity "" type:#float range:[0,99999,0] fieldWidth:50 offset:[-40,-20]
spinner objScale "Scale" type:#float range:[0,99999,100] fieldWidth:50 offset:[-40,0]
button selectAllMatching "Select Objects Matching Details"
dropdownlist SelObjs items:#("mass", "density", "limit", "twist", "bend", "pull", "push", "shift") width:65 offset:[-10,0]
dropdownlist GrtrOrSmlr items:#( "=", ">", "<") width:40 offset:[63,-27.5]
spinner SelVal type:#float range:[0,99999,0] fieldWidth:40 offset:[7,-25]
group "Force Primitives"
(
checkbox box1 "box"
checkbox cylinder1 "cylinder" offset:[40,-20]
checkbox sphere1 "sphere" offset:[100,-20]
checkbox capsule1 "capsule"
)
group "Joints"
(
checkbox useJoint "Enable joint properties"
checkbox jLimit "Limit:" offset:[55,0]
checkbox jTwist "Twist:" offset:[55,0]
checkbox jBend "Bend:" offset:[55,0]
checkbox jPull "Pull:" offset:[55,0]
checkbox jPush "Push:" offset:[55,0]
checkbox jShift "Shift:" offset:[55,0]
spinner jointLimit type:#float fieldWidth:35 offset:[0,-120]
spinner jointTwist type:#float fieldWidth:35 offset:[0,0]
spinner jointBend type:#float fieldWidth:35 offset:[0,0]
spinner jointPull type:#float fieldWidth:35 offset:[0,0]
spinner jointPush type:#float fieldWidth:35 offset:[0,0]
spinner jointShift type:#float fieldWidth:35 offset:[0,0]
checkbox jScale "Scale Properties:" offset:[0,10]
spinner jointScale type:#float range:[0,99999,100] fieldWidth:40 offset:[0,-20]
)
--group "General"
--(
--checkbox isPickable "pickable"
--)
group "destroyableObjects"
(
checkbox isMain "main"
checkbox isRemain "remain" offset:[47,-20]
spinner GenericCount "Generic:" type:#float fieldWidth:35 offset:[-70,0]
label spawnLocTXT "__Spawn Location_____________"
checkbox isEntity "entity"
--checkbox isBone "bone"
--edittext isBoneTXT "" offset:[45,-21] fieldWidth:60
--pickbutton pickBone "pick" offset:[62,-24]
label rotAxesTXT "rot axes" offset:[-60,0]
checkbutton xrot "x" offset:[-25,-21]
checkbutton yrot "y" offset:[0,-26]
checkbutton zrot "z" offset:[25,-26]
spinner sizeVar "size var:" type:#float fieldWidth:35 offset:[-70,0]
)
button openMetaDataLister "Open CGF Metadata Lister" enabled:false
on selectAllMatching pressed do
(
clearSelection()
for obj in objects do
(
UDPdata = crytools.inFromUDP obj
for x = 1 to UDPdata.count do
(
if (filterstring UDPdata[x] " =")[1] == SelObjs.selected then
(
EquateVal = GrtrOrSmlr.selected
case EquateVal of
(
"=":
(
if (filterstring UDPdata[x] " =")[2] as float == SelVal.value then selectmore obj
)
">":
(
if (filterstring UDPdata[x] " =")[2] as float > SelVal.value then selectmore obj
)
"<":
(
if (filterstring UDPdata[x] " =")[2] as float < SelVal.value then selectmore obj
)
)
)
)
)
)
on metadataManager open do
(
--isBoneTXT.enabled = false
--isBoneTXT.text = "bone name"
objDensity.value = 0
objMass.value = 0
objDensity.enabled = false
objMass.enabled = false
udpGetFromSel()
--callbacks.removeScripts id:#updateUDP
--callbacks.addScript #selectionSetChanged "udpGetFromSel()" id:#updateUDP
)
on metadataManager rolledUp state do
(
if state then --set callback for dynamic change based on selection
(
callbacks.removeScripts id:#updateUDP
callbacks.addScript #selectionSetChanged "udpGetFromSel()" id:#updateUDP
)
else --removie callbacks if the rollout is rolled up
(
callbacks.removeScripts id:#updateUDP
)
)
on useMass changed state do --Mass checkbox behaviour
(
if useMass.checked == true then
(
if useJoint.checked == true then
(
messagebox "Joints cannot have a mass or density!"
useMass.checked = false
return undefined
)
objMass.enabled = true
objDensity.enabled = false
useDensity.checked = false
)
else
(
objMass.enabled = false
)
)
on useDensity changed state do --Density checkbox behaviour
(
if useDensity.checked == true then
(
if useJoint.checked == true then
(
messagebox "Joints cannot have a mass or density!"
useDensity.checked = false
return undefined
)
objDensity.enabled = true
objMass.enabled = false
useMass.checked = false
)
else
(
objDensity.enabled = false
)
)
--Primitives checkboxes behaviors
on box1 changed state do
(
if box1.checked == true then
(
cylinder1.checked = false
sphere1.checked = false
capsule1.checked = false
)
)
on cylinder1 changed state do
(
if cylinder1.checked == true then
(
box1.checked = false
sphere1.checked = false
capsule1.checked = false
)
)
on sphere1 changed state do
(
if sphere1.checked == true then
(
cylinder1.checked = false
box1.checked = false
capsule1.checked = false
)
)
on capsule1 changed state do
(
if capsule1.checked == true then
(
cylinder1.checked = false
sphere1.checked = false
box1.checked = false
)
)
--Joint Properties checkboxes behaviors
on jLimit changed state do
(
if jLimit.checked == true then
(
jointLimit.enabled = false
)
else
(
jointLimit.enabled = true
)
)
on jTwist changed state do
(
if jTwist.checked == true then
(
jointTwist.enabled = false
)
else
(
jointTwist.enabled = true
)
)
on jBend changed state do
(
if jBend.checked == true then
(
jointBend.enabled = false
)
else
(
jointBend.enabled = true
)
)
on jPull changed state do
(
if jPull.checked == true then
(
jointPull.enabled = false
)
else
(
jointPull.enabled = true
)
)
on jPush changed state do
(
if jPush.checked == true then
(
jointPush.enabled = false
)
else
(
jointPush.enabled = true
)
)
on jShift changed state do
(
if jShift.checked == true then
(
jointShift.enabled = false
)
else
(
jointShift.enabled = true
)
)
on jScale changed state do
(
if jScale.checked == true then
(
jointScale.enabled = true
jointLimit.enabled = false
jointTwist.enabled = false
jointBend.enabled = false
jointPull.enabled = false
jointPush.enabled = false
jointShift.enabled = false
)
else
(
jointScale.enabled = false
jointLimit.enabled = true
jointTwist.enabled = true
jointBend.enabled = true
jointPull.enabled = true
jointPush.enabled = true
jointShift.enabled = true
)
)
---------------------------------------------
--------------Applying Settings------------
---------------------------------------------
on udpSetToSel pressed do
(
for obj in selection do
(
udpInARR = crytools.inFromUDP obj
-- MASS OUTPUT ----------------------------------------
if useMass.checked == true then
(
massVal = ("mass = " + objMass.value as string)
crytools.LookAndWrite obj massVal
)
else
(
cryTools.LookAndDelete obj "mass"
)
-- DENSITY OUTPUT ----------------------------------------
if useDensity.checked == true then
(
densityVal = ("density = " + objDensity.value as string)
crytools.LookAndWrite obj densityVal
)
else
(
cryTools.LookAndDelete obj "density"
)
-- FORCE PRIMITIVES OUTPUT ----------------------------------------
if box1.checked == true then
(
for obj in selection do
(
crytools.LookAndWrite obj "box"
)
)
else
(
for obj in selection do
(
cryTools.LookAndDelete obj "box"
)
)
if sphere1.checked == true then
(
for obj in selection do
(
crytools.LookAndWrite obj "sphere"
)
)
else
(
for obj in selection do
(
cryTools.LookAndDelete obj "sphere"
)
)
if cylinder1.checked == true then
(
for obj in selection do
(
crytools.LookAndWrite obj "cylinder"
)
)
else
(
for obj in selection do
(
cryTools.LookAndDelete obj "cylinder"
)
)
if capsule1.checked == true then
(
for obj in selection do
(
crytools.LookAndWrite obj "capsule"
)
)
else
(
for obj in selection do
(
cryTools.LookAndDelete obj "capsule"
)
)
--------JOINT PROPERTIES---------
if useJoint.checked == true then
(
if jointLimit.value != 0 then
(
jLim = ("limit = " + jointLimit.value as string)
crytools.LookAndWrite obj jLim
)
else
(
if jScale.checked == false then
(
cryTools.LookAndDelete obj "limit"
)
)
if jointTwist.enabled == true and jointTwist.value != 0 then
(
jTwis = ("twist = " + jointTwist.value as string)
crytools.LookAndWrite obj jTwis
)
else
(
if jScale.checked == false then
(
cryTools.LookAndDelete obj "twist"
)
)
if jointBend.value != 0 then
(
jBen = ("bend = " + jointBend.value as string)
crytools.LookAndWrite obj jBen
)
else
(
if jScale.checked == false then
(
cryTools.LookAndDelete obj "bend"
)
)
if jointPull.value != 0 then
(
jPul = ("pull = " + jointPull.value as string)
crytools.LookAndWrite obj jPul
)
else
(
if jScale.checked == false then
(
cryTools.LookAndDelete obj "pull"
)
)
if jointPush.value != 0 then
(
jPus = ("push = " + jointPush.value as string)
crytools.LookAndWrite obj jPus
)
else
(
if jScale.checked == false then
(
cryTools.LookAndDelete obj "push"
)
)
if jointShift.value != 0 then
(
jShif = ("shift = " + jointShift.value as string)
crytools.LookAndWrite obj jShif
)
else
(
if jScale.checked == false then
(
cryTools.LookAndDelete obj "shift"
)
)
---------Scale Joint Properties----------
jSclVal = (jointScale.value/100)
if jSclVal != 1 then
(
if jLimit.checked == true then
(
if jointLimit.value != 0 then
(
jLim = ("limit = " + (jointLimit.value * jSclVal) as string)
crytools.LookAndWrite obj jLim
)
else
(
if (crytools.getUDP obj "limit") !=0 then
(
jLim = ("limit = " + ((crytools.getUDP obj "limit") * jSclVal) as string)
crytools.LookAndWrite obj jLim
)
)
)
if jTwist.checked == true then
(
if jointTwist.value != 0 then
(
jTwis = ("twist = " + (jointTwist.value*jSclVal) as string)
crytools.LookAndWrite obj jTwis
)
else
(
if (crytools.getUDP obj "twist") !=0 then
(
jTwis = ("twist = " + ((crytools.getUDP obj "twist") * jSclVal) as string)
crytools.LookAndWrite obj jLim
)
)
)
if jBend.checked == true then
(
if jointBend.value != 0 then
(
jBen = ("bend = " + (jointBend.value*jSclVal) as string)
crytools.LookAndWrite obj jBen
)
else
(
if (crytools.getUDP obj "bend") !=0 then
(
jBen = ("bend = " + ((crytools.getUDP obj "bend") * jSclVal) as string)
crytools.LookAndWrite obj jBen
)
)
)
if jPull.checked == true then
(
if jointPull.value != 0 then
(
jPul = ("pull = " + (jointPull.value*jSclVal) as string)
crytools.LookAndWrite obj jPul
)
else
(
if (crytools.getUDP obj "pull") !=0 then
(
jPul = ("pull = " + ((crytools.getUDP obj "pull") * jSclVal) as string)
crytools.LookAndWrite obj jPul
)
)
)
if jPush.checked == true then
(
if jointPush.value != 0 then
(
jPus = ("push = " + (jointPush.value*jSclVal) as string)
crytools.LookAndWrite obj jPus
)
else
(
if (crytools.getUDP obj "push") !=0 then
(
jPus = ("push = " + ((crytools.getUDP obj "push") * jSclVal) as string)
crytools.LookAndWrite obj jPus
)
)
)
if jShift.checked == true then
(
if jointShift.value != 0 then
(
jShif = ("shift = " + (jointShift.value*jSclVal) as string)
crytools.LookAndWrite obj jShif
)
else
(
if (crytools.getUDP obj "shift") !=0 then
(
jShif = ("shift = " + ((crytools.getUDP obj "shift") * jSclVal) as string)
crytools.LookAndWrite obj jShif
)
)
)
)
)
else
(
cryTools.LookAndDelete obj "limit"
cryTools.LookAndDelete obj "twist"
cryTools.LookAndDelete obj "bend"
cryTools.LookAndDelete obj "pull"
cryTools.LookAndDelete obj "push"
cryTools.LookAndDelete obj "shift"
)
------------Destroyable Objects------------
if isMain.checked == true then obj.name = "Main"
if isRemain.checked == true then obj.name = "Remain"
if isEntity.checked == true then
(
crytools.LookAndWrite obj "entity"
)
else
(
crytools.LookAndDelete obj "entity"
)
if xrot.checked == true then
(
AxisRotations = "rotaxes = x"
if yrot.checked == true then
(
AxisRotations = "rotaxes = xy"
if zrot.checked == true then
(
AxisRotations = "rotaxes = xyz"
)
)
else
(
if zrot.checked == true then
(
AxisRotations = "rotaxes = xz"
)
)
crytools.LookAndWrite obj AxisRotations
)
if yrot.checked == true then
(
AxisRotations = "rotaxes = y"
if xrot.checked == true then
(
AxisRotations = "rotaxes = xy"
if zrot.checked == true then
(
AxisRotations = "rotaxes = xyz"
)
)
else
(
if zrot.checked == true then
(
AxisRotations = "rotaxes = yz"
)
)
crytools.LookAndWrite obj AxisRotations
)
if zrot.checked == true then
(
AxisRotations = "rotaxes = z"
if yrot.checked == true then
(
AxisRotations = "rotaxes = yz"
if xrot.checked == true then
(
AxisRotations = "rotaxes = xyz"
)
)
else
(
if xrot.checked == true then
(
AxisRotations = "rotaxes = xz"
)
)
crytools.LookAndWrite obj AxisRotations
)
if xrot.checked ==false and yrot.checked==false and zrot.checked==false then
(
crytools.LookAndDelete obj "rotaxes"
)
if sizeVar.value != 0 then
(
Var = ("sizevar = " + sizeVar.value as string)
crytools.LookAndWrite obj Var
)
else
(
crytools.LookAndDelete obj "sizevar"
)
if GenericCount.value != 0 then
(
GenCount = ("generic = " + GenericCount.value as string)
crytools.LookAndWrite obj GenCount
)
else
(
crytools.LookAndDelete obj "generic"
)
)
)
------------------------------------------------
--------------Updating Settings--------------
------------------------------------------------
on UpdateUDP pressed do
(
SclVal =(objScale.value/100)
for obj in selection do
(
udpInARR = crytools.inFromUDP obj
-- SCALE OUTPUT ---------------------------------------
if SclVal != 1 then
(
--Scale Mass--
testFor = filterstring udpInARR[1] " ="
if testFor[1] == "mass" then
(
massVal = ("mass = " + ((testFor[2] as float)*SclVal)as string)
udpInARR[1] = massVal
crytools.outToUDP udpInARR obj false
)
--Scale Density--
if testFor[1] == "density" then
(
densityVal = ("density =" + ((testFor[2] as float)*SclVal)as string)
udpInARR[1] = densityVal
crytools.outToUDP udpInARR obj false
)
)
-- MASS OUTPUT ---------------------------------------
if useMass.checked == true then
(
massVal = ("mass = " + objMass.value as string)
crytools.LookAndWrite obj massVal
)
else
(
)
-- DENSITY OUTPUT ----------------------------------------
if useDensity.checked == true then
(
densityVal = ("density = " + objDensity.value as string)
crytools.LookAndWrite obj densityVal
)
else
(
)
-- FORCE PRIMITIVES OUTPUT ----------------------------------------
if box1.checked == true then
(
for obj in selection do
(
crytools.LookAndWrite obj "box"
)
)
else
(
for obj in selection do
(
cryTools.LookAndDelete obj "box"
)
)
if sphere1.checked == true then
(
for obj in selection do
(
crytools.LookAndWrite obj "sphere"
)
)
else
(
for obj in selection do
(
cryTools.LookAndDelete obj "sphere"
)
)
if cylinder1.checked == true then
(
for obj in selection do
(
crytools.LookAndWrite obj "cylinder"
)
)
else
(
for obj in selection do
(
cryTools.LookAndDelete obj "cylinder"
)
)
if capsule1.checked == true then
(
for obj in selection do
(
crytools.LookAndWrite obj "capsule"
)
)
else
(
for obj in selection do
(
cryTools.LookAndDelete obj "capsule"
)
)
--------JOINT PROPERTIES---------
if useJoint.checked == true then
(
if jointLimit.value != 0 then
(
jLim = ("limit = " + jointLimit.value as string)
crytools.LookAndWrite obj jLim
)
else
(
cryTools.LookAndDelete obj "limit"
)
if jointTwist.value != 0 then
(
jTwis = ("twist = " + jointTwist.value as string)
crytools.LookAndWrite obj jTwis
)
else
(
cryTools.LookAndDelete obj "twist"
)
if jointBend.value != 0 then
(
jBen = ("bend = " + jointBend.value as string)
crytools.LookAndWrite obj jBen
)
else
(
cryTools.LookAndDelete obj "bend"
)
if jointPull.value != 0 then
(
jPul = ("pull = " + jointPull.value as string)
crytools.LookAndWrite obj jPul
)
else
(
cryTools.LookAndDelete obj "pull"
)
if jointPush.value != 0 then
(
jPus = ("push = " + jointPush.value as string)
crytools.LookAndWrite obj jPus
)
else
(
cryTools.LookAndDelete obj "push"
)
if jointShift.value != 0 then
(
jShif = ("shift = " + jointShift.value as string)
crytools.LookAndWrite obj jShif
)
else
(
cryTools.LookAndDelete obj "shift"
)
)
else
(
cryTools.LookAndDelete obj "limit"
cryTools.LookAndDelete obj "twist"
cryTools.LookAndDelete obj "bend"
cryTools.LookAndDelete obj "pull"
cryTools.LookAndDelete obj "push"
cryTools.LookAndDelete obj "shift"
)
------------Destroyable Objects------------
if isMain.checked == true then obj.name = "Main"
if isRemain.checked == true then obj.name = "Remain"
if isEntity.checked == true then
(
crytools.LookAndWrite obj "entity"
)
else
(
crytools.LookAndDelete obj "entity"
)
if xrot.checked == true then
(
AxisRotations = "rotaxes = x"
if yrot.checked == true then
(
AxisRotations = "rotaxes = xy"
if zrot.checked == true then
(
AxisRotations = "rotaxes = xyz"
)
)
else
(
if zrot.checked == true then
(
AxisRotations = "rotaxes = xz"
)
)
crytools.LookAndWrite obj AxisRotations
)
if yrot.checked == true then
(
AxisRotations = "rotaxes = y"
if xrot.checked == true then
(
AxisRotations = "rotaxes = xy"
if zrot.checked == true then
(
AxisRotations = "rotaxes = xyz"
)
)
else
(
if zrot.checked == true then
(
AxisRotations = "rotaxes = yz"
)
)
crytools.LookAndWrite obj AxisRotations
)
if zrot.checked == true then
(
AxisRotations = "rotaxes = z"
if yrot.checked == true then
(
AxisRotations = "rotaxes = yz"
if xrot.checked == true then
(
AxisRotations = "rotaxes = xyz"
)
)
else
(
if xrot.checked == true then
(
AxisRotations = "rotaxes = xz"
)
)
crytools.LookAndWrite obj AxisRotations
)
if xrot.checked ==false and yrot.checked==false and zrot.checked==false then
(
crytools.LookAndDelete obj "rotaxes"
)
if sizeVar.value != 0 then
(
Var = ("sizevar = " + sizeVar.value as string)
crytools.LookAndWrite obj Var
)
else
(
crytools.LookAndDelete obj "sizevar"
)
if GenericCount.value != 0 then
(
GenCount = ("generic = " + GenericCount.value as string)
crytools.LookAndWrite obj GenCount
)
else
(
crytools.LookAndDelete obj "generic"
)
)
)
on useJoint changed state do
(
for obj in selection do
(
if (classof obj) != Dummy then
(
if (classof obj) != Point then
(
messagebox "Only Helper objects can be joints\nThe selected objects are not all Dummy or Point helpers"
useJoint.checked = false
return undefined
)
)
)
if useJoint.checked == true then
(
jointLimit.enabled = true
jointTwist.enabled = true
jointBend.enabled = true
jointPull.enabled = true
jointPush.enabled = true
jointShift.enabled = true
jLimit.enabled = true
jTwist.enabled = true
jBend.enabled = true
jPull.enabled = true
jPush.enabled = true
jShift.enabled = true
jScale.enabled = true
)
else
(
jointLimit.enabled = false
jointTwist.enabled = false
jointBend.enabled = false
jointPull.enabled = false
jointPush.enabled = false
jointShift.enabled = false
jLimit.enabled = false
jTwist.enabled = false
jBend.enabled = false
jPull.enabled = false
jPush.enabled = false
jShift.enabled = false
jScale.enabled = false
)
)
------PICKABLE GENERAL PROPERTY------
on isPickable changed state do
(
if ispickable.checked == true then
(
for obj in selection do
(
)
)
)
---------DESTROYABLE OBJECTS-------------
on isMain changed state do
(
MainPresent = false
for x in objects do
(
if x.name == "Main" then MainPresent = true
)
if MainPresent == true then
(
messagebox "There can only be one Main object"
isMain.checked = false
)
if isMain.checked == true then isRemain.checked=false
)
on isRemain changed state do
(
RemainPresent = false
for x in objects do
(
if x.name == "Remain" then RemainPresent = true
)
if RemainPresent == true then
(
messagebox "There can only be one Remain object"
isRemain.checked = false
)
if isRemain.checked == true then isMain.checked=false
)
on isBone changed state do
(
if isBone.checked == true then
(
isBoneTXT.enabled = true
)
else
(
isBoneTXT.enabled = false
)
)
---------------------------------------------
-------CGF METADATA LISTER---------
---------------------------------------------
/*on openMetaDataLister pressed do
(
rollout listview_rollout "CGF MetaData Lister"
(
fn initListView lv =
(
lv.gridLines = true
lv.View = #lvwReport
lv.fullRowSelect = true
layout_def = #("Node","Mass","Density","Primitive","Joint","Limit,Twist,Bend,Pull,Push,Shift")
for i in layout_def do
(
column = lv.ColumnHeaders.add()
column.text = I
column.width = 1500
if (column.text = I) == "Limit,Twist,Bend,Pull,Push,Shift" then
(
column.width = 4300
)
)
)
fn fillInSpreadSheet lv =
(
for o in selection do
(
li = lv.ListItems.add()
li.text = o.name
sub_li = li.ListSubItems.add()
sub_li.text = (crytools.getUDP o "mass") as string
sub_li = li.ListSubItems.add()
sub_li.text = (crytools.getUDP o "density") as string
sub_li = li.ListSubItems.add()
sub_li.text = try((o.mesh.numfaces) as string)catch("--")
sub_li = li.ListSubItems.add()
sub_li.text = (o.material) as string
)
)
activeXControl lv_objects "MSComctlLib.ListViewCtrl" width:790 height:190 align:#center
on listview_rollout open do
(
initListView lv_objects
fillInSpreadSheet lv_objects
)
)
try(destroyDialog listview_rollout)catch()
createDialog listview_rollout 800 200
)*/
)
addRollout ArtistTools CryArtistTools
addRollout Diagnostics CryArtistTools rolledup:true
addRollout metadataManager CryArtistTools rolledup:true
)