diff --git a/korman/exporter/manager.py b/korman/exporter/manager.py index d6735d0..4d5fb09 100644 --- a/korman/exporter/manager.py +++ b/korman/exporter/manager.py @@ -26,23 +26,23 @@ from ..plasma_magic import * # These objects have to be in the plSceneNode pool in order to be loaded... # NOTE: We are using Factory indices because I doubt all of these classes are implemented. -_pool_types = ( - plFactory.ClassIndex("plPostEffectMod"), - plFactory.ClassIndex("pfGUIDialogMod"), - plFactory.ClassIndex("plMsgForwarder"), - plFactory.ClassIndex("plClothingItem"), - plFactory.ClassIndex("plArmatureEffectFootSound"), - plFactory.ClassIndex("plDynaFootMgr"), - plFactory.ClassIndex("plDynaRippleMgr"), - plFactory.ClassIndex("plDynaBulletMgr"), - plFactory.ClassIndex("plDynaPuddleMgr"), - #plFactory.ClassIndex("plATCAnim"), # Only Avatar Animations need to be pool objects - plFactory.ClassIndex("plEmoteAnim"), - plFactory.ClassIndex("plDynaRippleVSMgr"), - plFactory.ClassIndex("plDynaTorpedoMgr"), - plFactory.ClassIndex("plDynaTorpedoVSMgr"), - plFactory.ClassIndex("plClusterGroup"), -) +_pool_types = { + plFactory.kPostEffectMod, + plFactory.kGUIDialogMod, + plFactory.kMsgForwarder, + plFactory.kClothingItem, + plFactory.kArmatureEffectFootSound, + plFactory.kDynaFootMgr, + plFactory.kDynaRippleMgr, + plFactory.kDynaBulletMgr, + plFactory.kDynaPuddleMgr, + #plFactory.kATCAnim, # Only Avatar Animations need to be pool objects + plFactory.kEmoteAnim, + plFactory.kDynaRippleVSMgr, + plFactory.kDynaTorpedoMgr, + plFactory.kDynaTorpedoVSMgr, + plFactory.kClusterGroup, +} class ExportManager: diff --git a/korman/nodes/node_python.py b/korman/nodes/node_python.py index 28c7f09..5d1b9c6 100644 --- a/korman/nodes/node_python.py +++ b/korman/nodes/node_python.py @@ -70,34 +70,44 @@ _attrib2param = { } _attrib_key_types = { - "ptAttribSceneobject": plFactory.ClassIndex("plSceneObject"), - "ptAttribSceneobjectList": plFactory.ClassIndex("plSceneObject"), - "ptAttribActivator": (plFactory.ClassIndex("plLogicModifier"), - plFactory.ClassIndex("plPythonFileMod")), - "ptAttribActivatorList": (plFactory.ClassIndex("plLogicModifier"), - plFactory.ClassIndex("plPythonFileMod")), - "ptAttribNamedActivator": (plFactory.ClassIndex("plLogicModifier"), - plFactory.ClassIndex("plPythonFileMod")), - "ptAttribResponder": plFactory.ClassIndex("plResponderModifier"), - "ptAttribResponderList": plFactory.ClassIndex("plResponderModifier"), - "ptAttribNamedResponder": plFactory.ClassIndex("plResponderModifier"), - "ptAttribDynamicMap": plFactory.ClassIndex("plDynamicTextMap"), - "ptAttribGUIDialog": plFactory.ClassIndex("pfGUIDialogMod"), - "ptAttribExcludeRegion": plFactory.ClassIndex("plExcludeRegionModifier"), - "ptAttribAnimation": (plFactory.ClassIndex("plAGMasterMod"), - plFactory.ClassIndex("plMsgForwarder")), - "ptAttribBehavior": plFactory.ClassIndex("plMultistageBehMod"), - "ptAttribMaterial": plFactory.ClassIndex("plLayer"), - "ptAttribMaterialList": plFactory.ClassIndex("plLayer"), - "ptAttribGUIPopUpMenu": plFactory.ClassIndex("pfGUIPopUpMenu"), - "ptAttribGUISkin": plFactory.ClassIndex("pfGUISkin"), - "ptAttribWaveSet": plFactory.ClassIndex("plWaveSet7"), - "ptAttribSwimCurrent": (plFactory.ClassIndex("plSwimRegionInterface"), - plFactory.ClassIndex("plSwimCircularCurrentRegion"), - plFactory.ClassIndex("plSwimStraightCurrentRegion")), - "ptAttribClusterList": plFactory.ClassIndex("plClusterGroup"), - "ptAttribMaterialAnimation": plFactory.ClassIndex("plLayerAnimation"), - "ptAttribGrassShader": plFactory.ClassIndex("plGrassShaderMod"), + "ptAttribSceneobject": { plFactory.kSceneObject }, + "ptAttribSceneobjectList": { plFactory.kSceneObject }, + "ptAttribActivator": { + plFactory.kLogicModifier, + plFactory.kPythonFileMod + }, + "ptAttribActivatorList": { + plFactory.kLogicModifier, + plFactory.kPythonFileMod + }, + "ptAttribNamedActivator": { + plFactory.kLogicModifier, + plFactory.kPythonFileMod + }, + "ptAttribResponder": { plFactory.kResponderModifier }, + "ptAttribResponderList": { plFactory.kResponderModifier }, + "ptAttribNamedResponder": { plFactory.kResponderModifier }, + "ptAttribDynamicMap": { plFactory.kDynamicTextMap }, + "ptAttribGUIDialog": { plFactory.kGUIDialogMod }, + "ptAttribExcludeRegion": { plFactory.kExcludeRegionModifier }, + "ptAttribAnimation": { + plFactory.kAGMasterMod, + plFactory.kMsgForwarder + }, + "ptAttribBehavior": { plFactory.kMultistageBehMod }, + "ptAttribMaterial": { plFactory.kLayer }, + "ptAttribMaterialList": { plFactory.kLayer }, + "ptAttribGUIPopUpMenu": { plFactory.kGUIPopUpMenu }, + "ptAttribGUISkin": { plFactory.kGUISkin }, + "ptAttribWaveSet": { plFactory.kWaveSet7 }, + "ptAttribSwimCurrent": { + plFactory.kSwimRegionInterface, + plFactory.kSwimCircularCurrentRegion, + plFactory.kSwimStraightCurrentRegion, + }, + "ptAttribClusterList": { plFactory.kClusterGroup }, + "ptAttribMaterialAnimation": { plFactory.kLayerAnimation }, + "ptAttribGrassShader": { plFactory.kGrassShaderMod }, } @@ -342,11 +352,7 @@ class PlasmaPythonFileNode(PlasmaVersionedNode, bpy.types.Node): return key_type = _attrib_key_types[socket.attribute_type] - if isinstance(key_type, tuple): - good_key = key.type in key_type - else: - good_key = key.type == key_type - if not good_key: + if not key.type in key_type: exporter.report.warn( f"'{self.id_data.name}' Node '{socket.links[0].from_node.name}' " f"returned an unexpected key type '{plFactory.ClassName(key.type)}' "