schema_containers.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. from .node_container_common import *
  2. from math import pi, tau
  3. from .base_definitions import MantisNode, NodeSocket
  4. def TellClasses():
  5. return [
  6. SchemaIndex,
  7. SchemaArrayInput,
  8. SchemaArrayInputGet,
  9. SchemaArrayOutput,
  10. SchemaConstInput,
  11. SchemaConstOutput,
  12. SchemaOutgoingConnection,
  13. SchemaIncomingConnection,
  14. ]
  15. def schema_init_sockets(nc, is_input = True, in_out='INPUT', category=''):
  16. from .utilities import tree_from_nc
  17. parent_tree = tree_from_nc(nc.signature, nc.base_tree)
  18. if is_input:
  19. sockets=nc.inputs
  20. else:
  21. sockets=nc.outputs
  22. if category in ['Constant', 'Array', 'Connection']:
  23. for item in parent_tree.interface.items_tree:
  24. if item.item_type == 'PANEL': continue
  25. if item.parent and item.parent.name == category:
  26. if item.in_out == in_out:
  27. sockets[item.name] = NodeSocket(
  28. is_input=is_input,
  29. name=item.name,
  30. node=nc)
  31. nc.init_parameters()
  32. class SchemaNode(MantisNode):
  33. def __init__(self, signature, base_tree):
  34. super().__init__(signature, base_tree)
  35. self.node_type = 'SCHEMA'
  36. self.prepared = True
  37. self.executed = True
  38. class SchemaIndex(SchemaNode):
  39. def __init__(self, signature, base_tree):
  40. super().__init__(signature, base_tree)
  41. outputs = [
  42. "Index",
  43. "Schema Length",
  44. ]
  45. self.outputs.init_sockets(outputs)
  46. self.init_parameters()
  47. class SchemaArrayInput(SchemaNode):
  48. def __init__(self, signature, base_tree):
  49. super().__init__(signature, base_tree)
  50. schema_init_sockets(self, is_input=False, in_out='INPUT', category='Array')
  51. class SchemaArrayInputGet(SchemaNode):
  52. def __init__(self, signature, base_tree):
  53. super().__init__(signature, base_tree)
  54. inputs = [
  55. "OoB Behaviour" ,
  56. "Index" ,
  57. ]
  58. self.inputs.init_sockets(inputs)
  59. schema_init_sockets(self, is_input=False, in_out='INPUT', category='Array')
  60. class SchemaArrayOutput(SchemaNode):
  61. def __init__(self, signature, base_tree):
  62. super().__init__(signature, base_tree)
  63. schema_init_sockets(self, is_input=True, in_out='OUTPUT', category='Array')
  64. class SchemaConstInput(SchemaNode):
  65. def __init__(self, signature, base_tree):
  66. super().__init__(signature, base_tree)
  67. schema_init_sockets(self, is_input=False, in_out='INPUT', category='Constant')
  68. class SchemaConstOutput(SchemaNode):
  69. def __init__(self, signature, base_tree):
  70. super().__init__(signature, base_tree)
  71. inputs = [
  72. "Expose when N==",
  73. ]
  74. self.inputs.init_sockets(inputs)
  75. schema_init_sockets(self, is_input=True, in_out='OUTPUT', category='Constant')
  76. class SchemaOutgoingConnection(SchemaNode):
  77. def __init__(self, signature, base_tree):
  78. super().__init__(signature, base_tree)
  79. schema_init_sockets(self, is_input=True, in_out='INPUT', category='Connection')
  80. class SchemaIncomingConnection(SchemaNode):
  81. def __init__(self, signature, base_tree):
  82. super().__init__(signature, base_tree)
  83. schema_init_sockets(self, is_input=False, in_out='OUTPUT', category='Connection')