| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | 
							- from . import ( ops_nodegroup,
 
-                 base_definitions,
 
-                 socket_definitions,
 
-                 link_definitions,
 
-                 xForm_definitions,
 
-                 nodes_generic,
 
-                 primitives_definitions,
 
-                 deformer_definitions,
 
-                 math_definitions,
 
-                 i_o,
 
-                 schema_definitions,
 
-               )
 
- from .ops_generate_tree import GenerateMantisTree
 
- from bpy.types import NodeSocket
 
- from .utilities import prRed
 
- classLists = [module.TellClasses() for module in [
 
-  link_definitions,
 
-  xForm_definitions,
 
-  base_definitions,
 
-  nodes_generic,
 
-  socket_definitions,
 
-  ops_nodegroup,
 
-  primitives_definitions,
 
-  deformer_definitions,
 
-  math_definitions,
 
-  i_o,
 
-  schema_definitions,
 
- ]]
 
- # lol
 
- classLists.append( [GenerateMantisTree] )
 
- #
 
- classes = []
 
- while (classLists):
 
-     classes.extend(classLists.pop())
 
- interface_classes = []
 
- from bpy import app
 
- # if app.version[0]  == 3:
 
- #     for cls in [cls for cls in socket_definitions.TellClasses() if issubclass(cls, NodeSocket)]:
 
- #         name = cls.__name__+"Interface"
 
- #         from bpy.types import NodeSocketInterface
 
- #         def default_draw_color(self, context,):
 
- #             return self.color
 
- #         def default_draw(self, context, layout):
 
- #             return
 
- #         interface = type(
 
- #                       name,
 
- #                       (NodeSocketInterface,),
 
- #                       {
 
- #                           "color"            : cls.color,
 
- #                           "draw_color"       : default_draw_color,
 
- #                           "draw"             : default_draw,
 
- #                           "bl_idname"        : name,
 
- #                           "bl_socket_idname" : cls.__name__,
 
- #                       },
 
- #                   )
 
- #         interface_classes.append(interface)
 
- #     classes.extend(interface_classes)
 
- import nodeitems_utils
 
- from nodeitems_utils import NodeCategory, NodeItem
 
- class MantisNodeCategory(NodeCategory):
 
-     @classmethod
 
-     def poll(cls, context):
 
-         return (context.space_data.tree_type in ['MantisTree', 'SchemaTree'])
 
- class SchemaNodeCategory(NodeCategory):
 
-     @classmethod
 
-     def poll(cls, context):
 
-         # doesn't seem to work tho
 
-         try:
 
-             return (context.space_data.path[len(path)-1].node_tree.bl_idname == 'SchemaTree')
 
-         except:
 
-             return True
 
- input_category=[
 
-             NodeItem("InputFloatNode"),
 
-             NodeItem("InputVectorNode"),
 
-             NodeItem("InputBooleanNode"),
 
-             # NodeItem("InputBooleanThreeTupleNode"),
 
-             # NodeItem("InputRotationOrderNode"),
 
-             # NodeItem("InputTransformSpaceNode"),
 
-             NodeItem("InputStringNode"),
 
-             NodeItem("InputIntNode"),
 
-             # NodeItem("InputQuaternionNode"),
 
-             # NodeItem("InputQuaternionNodeAA"),
 
-             NodeItem("InputMatrixNode"),
 
-             NodeItem("InputLayerMaskNode"),
 
-             NodeItem("InputExistingGeometryObject"),
 
-             NodeItem("InputExistingGeometryData"),
 
-     ]
 
- link_transform_category = [
 
-         NodeItem("LinkCopyLocation"),
 
-         NodeItem("LinkCopyRotation"),
 
-         NodeItem("LinkCopyScale"),
 
-         NodeItem("LinkCopyTransforms"),
 
-         NodeItem("LinkLimitLocation"),
 
-         NodeItem("LinkLimitScale"),
 
-         NodeItem("LinkLimitRotation"),
 
-         NodeItem("LinkLimitDistance"),
 
-         NodeItem("LinkTransformation"),
 
-     ]
 
- link_tracking_category = [
 
-         NodeItem("LinkInverseKinematics"),
 
-         NodeItem("LinkSplineIK"),
 
-         NodeItem("LinkStretchTo"),
 
-         NodeItem("LinkDampedTrack"),
 
-         NodeItem("LinkLockedTrack"),
 
-         NodeItem("LinkTrackTo"),
 
-     ]
 
- link_relationship_category = [
 
-         NodeItem("linkInherit"),
 
-         NodeItem("LinkInheritConstraint"),
 
-         NodeItem("LinkArmature"),
 
-     ]
 
- deformer_category=[NodeItem(cls.bl_idname) for cls in deformer_definitions.TellClasses()]
 
- xForm_category = [
 
-          NodeItem("xFormGeometryObject"),
 
-         # NodeItem("xFormNullNode"),
 
-         NodeItem("xFormBoneNode"),
 
-         NodeItem("xFormRootNode"),
 
-         NodeItem("xFormArmatureNode"),
 
-     ]
 
- driver_category = [
 
-         NodeItem("LinkDrivenParameter"),
 
-         NodeItem("UtilityFCurve"),
 
-         NodeItem("UtilityBoneProperties"),
 
-         NodeItem("UtilityDriverVariable"),
 
-         NodeItem("UtilitySwitch"),
 
-         NodeItem("UtilityDriver"),
 
-         NodeItem("UtilityKeyframe"),
 
-     ]
 
- geometry_category = [
 
-         NodeItem("GeometryCirclePrimitive"),
 
-     ]
 
- utility_category = [
 
-         NodeItem("MathStaticInt"),
 
-         NodeItem("MathStaticFloat"),
 
-         NodeItem("MathStaticVector"),
 
-         NodeItem("UtilityCatStrings"),
 
-         NodeItem("UtilityCombineThreeBool"),
 
-         NodeItem("UtilityCombineVector"),
 
-         NodeItem("UtilityIntToString"),
 
-         NodeItem("UtilityArrayGet"),
 
-         NodeItem("UtilityChoose"),
 
-         NodeItem("UtilityCompare"),
 
-         NodeItem("UtilityPrint"),
 
-     ]
 
- matrix_category = [
 
-         NodeItem("UtilityMetaRig"),
 
-         NodeItem("UtilityMatrixFromCurve"),
 
-         NodeItem("UtilityMatricesFromCurve"),
 
-         NodeItem("UtilityPointFromBoneMatrix"),
 
-         NodeItem("UtilitySetBoneLength"),
 
-         NodeItem("UtilityGetBoneLength"),
 
-         NodeItem("UtilityBoneMatrixHeadTailFlip"),
 
-         NodeItem("UtilityMatrixSetLocation"),
 
-         NodeItem("UtilityMatrixGetLocation"),
 
-         NodeItem("UtilityMatrixFromXForm"),
 
-         NodeItem("UtilityAxesFromMatrix"),
 
-         NodeItem("UtilityMatrixTransform"),
 
-         NodeItem("UtilityTransformationMatrix"),
 
-     ]
 
- groups_category = [
 
-         NodeItem("MantisNodeGroup"),
 
-         NodeItem("MantisSchemaGroup"),
 
-     ]
 
- # THIS is stupid, should be filled out automatically
 
- node_categories = [
 
-     # identifier, label, items list
 
-     MantisNodeCategory('INPUT', "Input", items=input_category),
 
-     # MantisNodeCategory('LINK', "Link", items=[]),
 
-     # MantisNodeCategory('LINK_TRACKING', "Link", items=[]),
 
-     MantisNodeCategory('LINK_TRANSFORM', "Link (Transform)", items=link_transform_category),
 
-     MantisNodeCategory('LINK_TRACKING', "Link (Tracking)", items=link_tracking_category),
 
-     MantisNodeCategory('LINK_RELATIONSHIP', "Link (Inheritance)", items=link_relationship_category),
 
-     MantisNodeCategory('DEFORMER', "Deformer", items=deformer_category),
 
-     MantisNodeCategory('XFORM', "Transform", items=xForm_category),
 
-     MantisNodeCategory('DRIVER', "Driver", items=driver_category),
 
-     MantisNodeCategory('GEOMETRY', "Geometry", items =geometry_category),
 
-     MantisNodeCategory('UTILITIES', "Utility", items=utility_category),
 
-     MantisNodeCategory('MATRIX', "Matrix", items=matrix_category),
 
-     MantisNodeCategory('GROUPS', "Groups", items=groups_category),
 
- ]
 
- schema_category=[NodeItem(cls.bl_idname) for cls in schema_definitions.TellClasses()]
 
- schema_categories = [
 
-     SchemaNodeCategory('SCHEMA_SCHEMA', "Schema", items=schema_category),
 
- ]
 
- import bpy
 
- def init_keymaps():
 
-     kc = bpy.context.window_manager.keyconfigs.addon
 
-     km = kc.keymaps.new(name="Node Generic", space_type='NODE_EDITOR')
 
-     kmi = [
 
-         # Normal operation
 
-         km.keymap_items.new("mantis.group_nodes", 'G', 'PRESS', ctrl=True),
 
-         km.keymap_items.new("mantis.edit_group", 'TAB', 'PRESS'),
 
-         km.keymap_items.new("mantis.execute_node_tree", 'E', 'PRESS'),
 
-         km.keymap_items.new("mantis.mute_node", 'M', 'PRESS'),
 
-         km.keymap_items.new("mantis.nodes_cleanup", "C", 'PRESS', shift=True,),
 
-         # Testing
 
-         km.keymap_items.new("mantis.query_sockets", 'Q', 'PRESS'),
 
-         km.keymap_items.new("mantis.test_operator", 'T', 'PRESS'),
 
-         km.keymap_items.new("mantis.visualize_output", 'V', 'PRESS'),
 
-         # Saving, Loading, Reloading, etc.
 
-         km.keymap_items.new("mantis.export_save_choose", "S", 'PRESS', alt=True,),
 
-         km.keymap_items.new("mantis.export_save_as", "S", 'PRESS', alt=True, shift=True),
 
-         km.keymap_items.new("mantis.reload_tree", "R", 'PRESS', alt=True,),
 
-         km.keymap_items.new("mantis.import_tree", "O", 'PRESS', ctrl=True,),
 
-     ]
 
-     return km, kmi
 
- addon_keymaps = []
 
- def register():
 
-     from bpy.utils import register_class
 
-     
 
-     for cls in classes:
 
-         try:
 
-             register_class(cls)
 
-         except RuntimeError as e:
 
-             prRed(cls.__name__)
 
-             raise e
 
-     nodeitems_utils.register_node_categories('MantisNodeCategories', node_categories)
 
-     nodeitems_utils.register_node_categories('SchemaNodeCategories', schema_categories)
 
-     if (not bpy.app.background):
 
-         km, kmi = init_keymaps()
 
-         for k in kmi:
 
-             k.active = True
 
-             addon_keymaps.append((km, k))
 
-     
 
- def unregister():
 
-     nodeitems_utils.unregister_node_categories('MantisNodeCategories')
 
-     nodeitems_utils.unregister_node_categories('SchemaNodeCategories')
 
-     from bpy.utils import unregister_class
 
-     for cls in reversed(classes):
 
-         unregister_class(cls)
 
-     
 
-     for km, kmi in addon_keymaps:
 
-         km.keymap_items.remove(kmi)
 
-     addon_keymaps.clear()
 
 
  |