mantis_dataclasses.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. from dataclasses import dataclass, field
  2. from typing import List, Any, Tuple
  3. @dataclass
  4. class MantisSocketTemplate():
  5. name : str = field(default="")
  6. bl_idname : str = field(default="")
  7. traverse_target : str = field(default="")
  8. identifier : str = field(default="")
  9. display_shape : str = field(default="") # for arrays
  10. category : str = field(default="") # for use in display update
  11. blender_property : str | tuple[str] = field(default="") # for props_sockets -> evaluate sockets
  12. is_input : bool = field(default=False)
  13. hide : bool = field(default=False)
  14. use_multi_input : bool = field(default=False)
  15. ui_only : bool = field(default=False)
  16. default_value : Any = field(default=None)
  17. # this is a hint for the props_sockets system for complex situations
  18. # where multiple blender objects own the properties, like e.g. bone/posebone
  19. prop_owner_group : str = field(default="")
  20. # do? add versioning fields for Mantis, Blender version min/max
  21. @dataclass
  22. class xForm_info():
  23. object_type : str = field(default="")
  24. root_armature : str = field(default="")
  25. parent_pose_name : str = field(default="")
  26. parent_edit_name : str = field(default="")
  27. self_pose_name : str = field(default="")
  28. self_edit_name : str = field(default="")
  29. # should I add node signatures to this?
  30. @dataclass
  31. class custom_prop_template():
  32. name : str = field(default="")
  33. prop_type : str = field(default="")
  34. default_value_string : str = field(default="")
  35. default_value_bool : bool = field(default=False)
  36. default_value_int : int = field(default=0)
  37. default_value_float : float = field(default=0.0)
  38. default_value_vector : List[float] = field(default_factory=list)
  39. min : float|int = field(default=0)
  40. max : float|int = field(default=1)
  41. soft_min : float|int = field(default=1)
  42. soft_max : float|int = field(default=1)
  43. description : str = field(default="")
  44. @dataclass
  45. class MantisBoneTransform():
  46. matrix : Any = field(default=[1,0,0,0,
  47. 0,1,0,0,
  48. 0,0,1,0,
  49. 0,0,0,1,]),
  50. # I would like to have an intelligent way of handling
  51. # object- vs. world- space matrices
  52. matrix_space : str = field(default="OBJECT")
  53. length : float = field(default=1.0),
  54. @dataclass
  55. class MantisBBoneTransform():
  56. num_bbone_segmetns: int = field(default=1)
  57. # Offsets & Curve Handles
  58. bbone_curveinx: float = field(default=0.0)
  59. bbone_curveiny: float = field(default=0.0)
  60. bbone_curveoutx: float = field(default=0.0)
  61. bbone_curveouty: float = field(default=0.0)
  62. # Easing
  63. bbone_easein: float = field(default=1.0)
  64. bbone_easeout: float = field(default=1.0)
  65. # Roll
  66. bbone_rollin: float = field(default=0.0)
  67. bbone_rollout: float = field(default=0.0)
  68. # Scale Vectors
  69. bbone_scalein: Tuple[float, float, float] = field(
  70. default_factory=lambda: (1.0, 1.0, 1.0) )
  71. bbone_scaleout: Tuple[float, float, float] = field(
  72. default_factory=lambda: (1.0, 1.0, 1.0) )
  73. # Custom Handles
  74. use_bbone_custom_handles: bool = field(default=False)
  75. bbone_custom_handle_start: str = field(default=None)
  76. bbone_custom_handle_end: str = field(default=None)