-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproperties.py
91 lines (73 loc) · 4.12 KB
/
properties.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import bpy
from bpy.props import StringProperty, IntProperty, PointerProperty, BoolProperty, CollectionProperty, FloatVectorProperty, EnumProperty
from mathutils import Matrix
from . utils.math import flatten_matrix
from . items import align_mode_items
class PlugLibsCollection(bpy.types.PropertyGroup):
name: StringProperty()
isvisible: BoolProperty(default=True, description="Show in MESHmachine Menu")
islocked: BoolProperty(default=False, description="Prevent Plug Creation. Requires Library Reload")
class PlugEmptiesCollection(bpy.types.PropertyGroup):
name: StringProperty()
index: IntProperty()
location: FloatVectorProperty(name="Location")
class PlugScalesCollection(bpy.types.PropertyGroup):
name: StringProperty()
index: IntProperty()
scale: FloatVectorProperty(name="Scale")
empties: CollectionProperty(type=PlugEmptiesCollection)
class StashCollection(bpy.types.PropertyGroup):
def update_name(self, context):
if self.avoid_update:
self.avoid_update = False
return
if self.obj:
if self.name:
self.obj.MM.stashname = self.name
else:
self.avoid_update = True
self.name = f"stash_{self.index}"
self.obj.MM.stashname = ''
name: StringProperty(update=update_name)
index: IntProperty()
version: StringProperty(name="stash version", default='0.0.0')
uuid: StringProperty(name="stash uuid")
obj: PointerProperty(name="Stash Object", type=bpy.types.Object)
self_stash: BoolProperty(name="Self Stash", default=False)
flipped: BoolProperty(name="Flipped Normals", default=False)
mark_delete: BoolProperty(default=False)
avoid_update: BoolProperty()
class MeshSceneProperties(bpy.types.PropertyGroup):
debug: BoolProperty(default=False)
register_panel_help: BoolProperty(default=True)
align_mode: EnumProperty(name="Align Mode", items=align_mode_items, default="RAYCAST", description="Insert Plug at Mouse or Cursor position")
plugscales: CollectionProperty(type=PlugScalesCollection)
def update_active_stash_drawing_batch(self, context):
if self.draw_active_stash:
from . import handlers
handlers.oldstashuuid = None
draw_active_stash: BoolProperty(name="Draw Active Stash in 3D View", default=False, update=update_active_stash_drawing_batch)
draw_active_stash_xray: BoolProperty(name="Draw Active Stash in X-Ray", default=False, update=update_active_stash_drawing_batch)
revision: StringProperty()
class MeshObjectProperties(bpy.types.PropertyGroup):
stashes: CollectionProperty(type=StashCollection)
active_stash_idx: IntProperty()
stashuuid: StringProperty(name="stash uuid")
isstashobj: BoolProperty(name="is stash object", default=False)
stashdeltamx: FloatVectorProperty(name="Delta Matrix", subtype="MATRIX", size=16, default=flatten_matrix(Matrix()))
stashorphanmx: FloatVectorProperty(name="Orphan Matrix", subtype="MATRIX", size=16, default=flatten_matrix(Matrix()))
stashname: StringProperty(name="stash name")
stashmx: FloatVectorProperty(name="Stash Matrix", subtype="MATRIX", size=16, default=flatten_matrix(Matrix()))
stashtargetmx: FloatVectorProperty(name="Target Matrix", subtype="MATRIX", size=16, default=flatten_matrix(Matrix()))
uuid: StringProperty(name="plug uuid")
isplug: BoolProperty(name="is plug", default=False)
isplughandle: BoolProperty(name="is plug handle", default=False)
isplugdeformer: BoolProperty(name="is plug deformer", default=False)
isplugsubset: BoolProperty(name="is plug subset", default=False)
isplugoccluder: BoolProperty(name="is plug occluder", default=False)
hasfillet: BoolProperty(name="has fillet", default=False)
deformerprecision: IntProperty(name="Deformer Precision", default=4)
usedeformer: BoolProperty(name="Use Deformer", default=False)
forcesubsetdeform: BoolProperty(name="Force Subset Deform", default=False)
plugcreator: StringProperty(name="Plug Creator")
dup_hash: StringProperty(description="Hash to find associated duplicate, after running bpy.ops.object.duplicate()")