-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproperties.py
More file actions
131 lines (106 loc) · 3.65 KB
/
properties.py
File metadata and controls
131 lines (106 loc) · 3.65 KB
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import bpy
from bpy.types import PropertyGroup
from bpy.props import (
BoolProperty,
PointerProperty
)
from .model_validator import ModelValidator, ModelValidatorGPU
def enable_depsgraph_handler(self, context):
if self.check_data:
if context.object is None:
self.check_data = False
else:
ModelValidator.set_mode(context.object.mode)
ModelValidator.add_callback()
else:
ModelValidator.remove_callback()
def update_overlay(self, context):
if self.show_overlay:
ModelValidatorGPU.setup_handler()
else:
ModelValidatorGPU.remove_handler()
def mc_object_datas_updater(attr):
def updater(self, context):
if getattr(self, attr):
ModelValidator.update_mc_object_datas(
attr
)
return None
return updater
class ModelValidatorProperties(PropertyGroup):
check_data: BoolProperty(
name="Check Data",
default=False,
update=enable_depsgraph_handler
)
show_overlay: BoolProperty(
name="Show Overlay",
default=False,
update=update_overlay
)
non_manifold: BoolProperty(
name="Non manifold",
default=False,
description="Display non manifold edges",
update=mc_object_datas_updater("non_manifold")
)
triangles: BoolProperty(
name="Triangles",
default=True,
description="Display triangles",
update=mc_object_datas_updater("triangles")
)
ngons: BoolProperty(
name="Ngons",
default=False,
description="Display ngons",
update=mc_object_datas_updater("ngons")
)
e_poles: BoolProperty(
name="E poles",
default=False,
description="Display E poles",
update=mc_object_datas_updater("e_poles")
)
n_poles: BoolProperty(
name="N poles",
default=False,
description="Display N poles",
update=mc_object_datas_updater("n_poles")
)
more_poles: BoolProperty(
name="Poles > 5",
default=False,
description="Display poles with more than 5 edges",
update=mc_object_datas_updater("more_poles")
)
isolated_verts: BoolProperty(
name="Isolated verts",
default=False,
description="Display isolated verts",
update=mc_object_datas_updater("isolated_verts")
)
checker_options = ("non_manifold", "triangles", "ngons",
"n_poles", "e_poles", "more_poles", "isolated_verts"
)
def draw_options(self, layout):
layout.label(text="Items to check:")
row = layout.row(align=True)
split = row.split(factor=0.02)
split.separator()
col_1 = split.column()
col_2 = split.column()
for i, checker in enumerate(self.checker_options):
col = col_1 if i <= 2 else col_2
row = col.row()
row.alignment = 'LEFT'
icon = 'CHECKBOX_HLT' if getattr(self,
checker) else 'CHECKBOX_DEHLT'
row.prop(self, checker, icon=icon, emboss=False)
def register():
bpy.utils.register_class(ModelValidatorProperties)
bpy.types.WindowManager.model_validator_props = PointerProperty(
type=ModelValidatorProperties)
def unregister():
del bpy.types.WindowManager.model_validator_props
bpy.utils.unregister_class(ModelValidatorProperties)