PDA

View Full Version : Getting parameters from simplemod and saving with file?


lehthanis
02-02-2008, 12:22 AM
I've got a scripted simplemod class that I'm using to provide parameters to my exporter script, and Bobo has helped me immensely with getting through a few roadblocks, including determining where the modifiers are which originally was pretty much all I needed...but I've combined several into one, with a series of checkbox parameters for the values.

Here's my simplemod:

plugin SimpleMod XPlaneObj8Mesh
name:"X-Plane Mesh Params"
classID:#(0x6503c0ba, 0x2f4d4c06)
version:1
(
parameters main rollout:XPlaneObj8MeshParams
(
ATTR_cockpit type:#boolean ui:boxATTR_Cockpit
ATTR_hard type:#boolean ui:boxATTR_Hard
ATTR_cull type:#boolean ui:boxATTR_Cull
ATTR_blend type:#boolean ui:boxATTR_Blend
ATTR_depth type:#boolean ui:boxATTR_Depth
)
rollout XPlaneObj8MeshParamsInfo "X-Plane Mesh" width:162 height:319
(
label lab1 "Designates object"
label lab2 "with misc X-Plane"
label lab3 "Obj Attributes"
)
rollout XPlaneObj8MeshParams "Mesh Attributes" width:162 height:319
(
checkbox boxATTR_Cockpit "Cockpit" height:15
checkbox boxATTR_Hard "Hard" height:15
checkbox boxATTR_Cull "Cull" height:15
checkbox boxATTR_Blend "Blend" height:15
checkbox boxATTR_Depth "Depth Check" height:15
)
on map i p do
(
-- We do nothing here
)
)



This basically allows me to tell the exporter which attributes to apply to the the geometry I'm currently evaluating.

I was using a function call that Bobo gave me that would return true if a modifier existed:


fn hasModifier theObj theModClass =
(
(for m in theObj.modifiers where classof m == theModClass collect m).count > 0
)


and it worked beautifully...but what I need to do is get the parameters from the modifier no matter where in the stack of modifiers it was applied (by name maybe?)...

I tried using this code

if hasModifier allObj[i] XPlaneObj8Mesh then
(
MeshMod = allObj[i].modifiers["XPlaneObj8Mesh"]
if MeshMod.ATTR_cockpit == true then ATTR_cockpit = true
if MeshMod.ATTR_hard == true then ATTR_hard = true
if MeshMod.ATTR_cull == true then ATTR_cull = true
if MeshMod.ATTR_blend == true then ATTR_blend = true
if MeshMod.ATTR_depth == true then ATTR_depth = true
)



But it doesn't work...it fails on the "if Meshmod.ATTR_cockpit == true then ATTR_cockpit = true" saying that "Unknown property: "ATTR_cockpit" in undefined"

hasmodifier is working, and its getting inside the if...setting Meshmod is NOT failing, so its passing it, but apparently its not returning anything.

Also, when I apply a modifier and set one of the checkbox...then save the file...when I load the max file back up, the modifier is still applied, but the checkbox isn't checked...any ideas on any of these things???

Thanks!!!

Zbuffer
02-02-2008, 08:19 AM
hi,

MeshMod = allObj[i].modifiers["XPlaneObj8Mesh"]
should be :
MeshMod = allObj[i].modifiers["X-Plane Mesh Params"] -- the name of the modifier


Also, make shure the modifier plugin is always loaded: place the Script file in the 'scripts\startup' folder

lehthanis
02-02-2008, 01:39 PM
That worked! Thanks!

lehthanis
02-03-2008, 04:40 AM
Now since I am using the actual Name of the modifier...what if there's more than one of the same modifier applied? For example...if I have another simplemod called AnimRotate, which specifies the parameters for the sim to rotate the geometry with a specific dataref from the sim...in the case of a flight stick, I would need to apply two rotates...one for the pitch action of the flight stick and one for the roll action...so there would be a modifier for x rotation and a modifier for y rotation, and I'd need to be able to call them separately...is that possible?

CGTalk Moderation
02-03-2008, 04:40 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.