Created
July 18, 2019 10:48
-
-
Save fwilleke80/6a7f30a74a02f966ff78ec82b3fcf581 to your computer and use it in GitHub Desktop.
[C4D] A function that returns a string with the plugin flags for the BasePlugin of a BaseList2D
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def GetPluginFlags(bl): | |
"""Return string with all plugin flags of a given BaseList2D element | |
@param bl The BaseList2D element (e.g. BaseObject, BaseTag, | |
BaseVideoPost, BaseMaterial, BaseShader, et cetera) | |
@return A string containing all the identified plugin flags | |
""" | |
if bl is None: | |
return '' | |
flagInfoDict = { | |
c4d.PLUGINTYPE_ANY : { | |
# General plugin flags | |
c4d.PLUGINFLAG_HIDE : 'PLUGINFLAG_HIDE', | |
c4d.PLUGINFLAG_SMALLNODE : 'PLUGINFLAG_SMALLNODE', | |
c4d.PLUGINFLAG_HIDEPLUGINMENU : 'PLUGINFLAG_HIDEPLUGINMENU', | |
c4d.PLUGINFLAG_REFRESHALWAYS : 'PLUGINFLAG_REFRESHALWAYS' | |
}, | |
c4d.PLUGINTYPE_TAG : { | |
# TagData flags | |
c4d.TAG_VISIBLE : 'TAG_VISIBLE', | |
c4d.TAG_MULTIPLE : 'TAG_MULTIPLE', | |
c4d.TAG_HIERARCHICAL : 'TAG_HIERARCHICAL', | |
c4d.TAG_EXPRESSION : 'TAG_EXPRESSION', | |
c4d.TAG_TEMPORARY : 'TAG_TEMPORARY', | |
c4d.TAG_TEMPORARY : 'TAG_TEMPORARY', | |
c4d.TAG_ADDTOTAKEGROUP : 'TAG_ADDTOTAKEGROUP' | |
}, | |
c4d.PLUGINTYPE_OBJECT : { | |
# ObjectData flags | |
c4d.OBJECT_MODIFIER : 'OBJECT_MODIFIER', | |
c4d.OBJECT_HIERARCHYMODIFIER : 'OBJECT_HIERARCHYMODIFIER', | |
c4d.OBJECT_GENERATOR : 'OBJECT_GENERATOR', | |
c4d.OBJECT_INPUT : 'OBJECT_INPUT', | |
c4d.OBJECT_PARTICLEMODIFIER : 'OBJECT_PARTICLEMODIFIER', | |
c4d.OBJECT_ISSPLINE : 'OBJECT_ISSPLINE', | |
c4d.OBJECT_USECACHECOLOR : 'OBJECT_USECACHECOLOR', | |
c4d.OBJECT_CAMERADEPENDENT : 'OBJECT_CAMERADEPENDENT', | |
c4d.OBJECT_POINTOBJECT : 'OBJECT_POINTOBJECT', | |
c4d.OBJECT_POLYGONOBJECT : 'OBJECT_POLYGONOBJECT', | |
c4d.OBJECT_NO_PLA : 'OBJECT_NO_PLA', | |
c4d.OBJECT_DONTFREECACHE : 'OBJECT_DONTFREECACHE', | |
c4d.OBJECT_CALL_ADDEXECUTION : 'OBJECT_CALL_ADDEXECUTION', | |
c4d.OBJECT_NOCHILDEXPRESSIONS : 'OBJECT_NOCHILDEXPRESSIONS', | |
c4d.OBJECT_FIELDOBJECT : 'OBJECT_FIELDOBJECT' | |
}, | |
c4d.PLUGINTYPE_BITMAPLOADER : { | |
# SceneLoaderData / SceneSaverDataWriter | |
c4d.PLUGINFLAG_SCENELOADER_MERGEORIGINAL : 'PLUGINFLAG_SCENELOADER_MERGEORIGINAL', | |
c4d.PLUGINFLAG_SCENEFILTER_DIALOGCONTROL : 'PLUGINFLAG_SCENEFILTER_DIALOGCONTROL' | |
}, | |
c4d.PLUGINTYPE_BITMAPSAVER : { | |
# SceneLoaderData / SceneSaverDataWriter | |
c4d.PLUGINFLAG_SCENELOADER_MERGEORIGINAL : 'PLUGINFLAG_SCENELOADER_MERGEORIGINAL', | |
c4d.PLUGINFLAG_SCENEFILTER_DIALOGCONTROL : 'PLUGINFLAG_SCENEFILTER_DIALOGCONTROL' | |
}, | |
c4d.PLUGINTYPE_SCENEHOOK : { | |
# SceneHookData flags | |
c4d.PLUGINFLAG_SCENEHOOK_NOTDRAGGABLE : 'PLUGINFLAG_SCENEHOOK_NOTDRAGGABLE', | |
c4d.PLUGINFLAG_SCENEHOOK_SUPPORT_DOCUMENT_DESCRIPTION : 'PLUGINFLAG_SCENEHOOK_SUPPORT_DOCUMENT_DESCRIPTION', | |
c4d.PLUGINFLAG_SCENEHOOK_SUPPORT_ANIMATION : 'PLUGINFLAG_SCENEHOOK_SUPPORT_ANIMATION' | |
}, | |
c4d.PLUGINTYPE_MATERIAL : { | |
# MaterialData flags | |
c4d.PLUGINFLAG_MATERIAL_GLIMAGE : 'PLUGINFLAG_MATERIAL_GLIMAGE', | |
c4d.PLUGINFLAG_MATERIAL_NO_MATERIALEDITOR : 'PLUGINFLAG_MATERIAL_NO_MATERIALEDITOR', | |
c4d.PLUGINFLAG_MATERIAL_HIDE_IN_MATERIALMANAGER : 'PLUGINFLAG_MATERIAL_HIDE_IN_MATERIALMANAGER', | |
c4d.PLUGINFLAG_MATERIAL_GLIMAGE_TIMECHANGE : 'PLUGINFLAG_MATERIAL_GLIMAGE_TIMECHANGE', | |
c4d.PLUGINFLAG_MATERIAL_GLIMAGE_WITH_ALPHA : 'PLUGINFLAG_MATERIAL_GLIMAGE_WITH_ALPHA' | |
}, | |
c4d.PLUGINTYPE_SHADER : { | |
# MaterialData flags | |
c4d.PLUGINFLAG_MATERIAL_GLIMAGE : 'PLUGINFLAG_MATERIAL_GLIMAGE', | |
c4d.PLUGINFLAG_MATERIAL_NO_MATERIALEDITOR : 'PLUGINFLAG_MATERIAL_NO_MATERIALEDITOR', | |
c4d.PLUGINFLAG_MATERIAL_HIDE_IN_MATERIALMANAGER : 'PLUGINFLAG_MATERIAL_HIDE_IN_MATERIALMANAGER', | |
c4d.PLUGINFLAG_MATERIAL_GLIMAGE_TIMECHANGE : 'PLUGINFLAG_MATERIAL_GLIMAGE_TIMECHANGE', | |
c4d.PLUGINFLAG_MATERIAL_GLIMAGE_WITH_ALPHA : 'PLUGINFLAG_MATERIAL_GLIMAGE_WITH_ALPHA' | |
}, | |
c4d.PLUGINTYPE_VIDEOPOST : { | |
# VideopostData flags | |
c4d.PLUGINFLAG_VIDEOPOST_MULTIPLE : 'PLUGINFLAG_VIDEOPOST_MULTIPLE', | |
c4d.PLUGINFLAG_VIDEOPOST_INHERENT : 'PLUGINFLAG_VIDEOPOST_INHERENT', | |
c4d.PLUGINFLAG_VIDEOPOST_GL : 'PLUGINFLAG_VIDEOPOST_GL', | |
c4d.PLUGINFLAG_VIDEOPOST_ISRENDERER : 'PLUGINFLAG_VIDEOPOST_ISRENDERER', | |
c4d.PLUGINFLAG_VIDEOPOST_STEREO_EDITOR : 'PLUGINFLAG_VIDEOPOST_STEREO_EDITOR', | |
c4d.PLUGINFLAG_VIDEOPOST_STEREO_RENDERING : 'PLUGINFLAG_VIDEOPOST_STEREO_RENDERING', | |
c4d.PLUGINFLAG_VIDEOPOST_STEREO : 'PLUGINFLAG_VIDEOPOST_STEREO', | |
c4d.PLUGINFLAG_VIDEOPOST_ISRENDERER_NET : 'PLUGINFLAG_VIDEOPOST_ISRENDERER_NET', | |
c4d.PLUGINFLAG_VIDEOPOST_MULTIPASS : 'PLUGINFLAG_VIDEOPOST_MULTIPASS' | |
}, | |
c4d.PLUGINTYPE_SNAP : { | |
# SnapData flags | |
c4d.PLUGINFLAG_SNAP_INFERRED_POINT : 'PLUGINFLAG_SNAP_INFERRED_POINT', | |
c4d.PLUGINFLAG_SNAP_INFERRED_AXIS : 'PLUGINFLAG_SNAP_INFERRED_AXIS', | |
c4d.PLUGINFLAG_SNAP_MIDPOINT : 'PLUGINFLAG_SNAP_MIDPOINT' | |
} | |
} | |
# Get plugin type & info | |
foundPlugin = c4d.plugins.FindPlugin(bl.GetType()) | |
if foundPlugin is not None: | |
blPluginType = foundPlugin.GetType() | |
else: | |
blPluginType = 0 | |
blInfo = bl.GetInfo() | |
# General flags | |
flagList = [] | |
for flag in sorted(flagInfoDict[c4d.PLUGINTYPE_ANY].keys()): | |
if blInfo&flag: | |
flagList.append(flagInfoDict[c4d.PLUGINTYPE_ANY][flag]) | |
# Plugin type specific flags | |
for pluginType in flagInfoDict.keys(): | |
if pluginType == blPluginType: | |
# Iterate dictionary to find out which flags are set | |
# Store set flags in list | |
for flag in sorted(flagInfoDict[blPluginType].keys()): | |
if blInfo&flag: | |
flagList.append(flagInfoDict[blPluginType][flag]) | |
# Build result string | |
if len(flagList) == 0: | |
resultStr = 'NONE' | |
else: | |
resultStr = '|'.join(flagList) | |
return resultStr |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment