874 lines
50 KiB
Python
874 lines
50 KiB
Python
# This program is free software; you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
# the Free Software Foundation; either version 3 of the License, or
|
||
# (at your option) any later version.
|
||
#
|
||
# This program is distributed in the hope that it will be useful, but
|
||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
# General Public License for more details.
|
||
#
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
||
bl_info = {
|
||
"name" : "Legolizer",
|
||
"author" : "Alberrvfx, Al-Dezel",
|
||
"description" : " Convert all your 3D models into Lego brick style.",
|
||
"blender" : (4, 0, 0),
|
||
"version" : (2, 0, 1),
|
||
"location" : "",
|
||
"warning" : "",
|
||
"doc_url": "",
|
||
"tracker_url": "",
|
||
"category" : "3D View"
|
||
}
|
||
|
||
|
||
import bpy
|
||
import bpy.utils.previews
|
||
import os
|
||
from bpy.app.handlers import persistent
|
||
|
||
|
||
addon_keymaps = {}
|
||
_icons = None
|
||
visual_scripting_editor = {'sna_new_variable': False, }
|
||
|
||
|
||
def property_exists(prop_path, glob, loc):
|
||
try:
|
||
eval(prop_path, glob, loc)
|
||
return True
|
||
except:
|
||
return False
|
||
|
||
|
||
def find_user_keyconfig(key):
|
||
km, kmi = addon_keymaps[key]
|
||
for item in bpy.context.window_manager.keyconfigs.user.keymaps[km.name].keymap_items:
|
||
found_item = False
|
||
if kmi.idname == item.idname:
|
||
found_item = True
|
||
for name in dir(kmi.properties):
|
||
if not name in ["bl_rna", "rna_type"] and not name[0] == "_":
|
||
if name in kmi.properties and name in item.properties and not kmi.properties[name] == item.properties[name]:
|
||
found_item = False
|
||
if found_item:
|
||
return item
|
||
print(f"Couldn't find keymap item for {key}, using addon keymap instead. This won't be saved across sessions!")
|
||
return kmi
|
||
|
||
|
||
def ShowMessageBoxer(title, icon, message):
|
||
scene = bpy.context.scene
|
||
# Access the 2D cursor location
|
||
cursor_location = scene.cursor.location
|
||
|
||
def draw(self, context):
|
||
self.layout.label(text=message)
|
||
bpy.context.window_manager.popup_menu(draw, title=title, icon=icon)
|
||
|
||
|
||
def sna_update_sna_legolizer_material_9D59F(self, context):
|
||
sna_updated_prop = self.sna_legolizer_material
|
||
bpy.data.node_groups[bpy.context.object.modifiers.active.node_group.name].nodes['Set Material'].inputs[2].default_value = sna_updated_prop
|
||
bpy.context.view_layer.objects.active.update_tag(refresh={'DATA'}, )
|
||
|
||
|
||
def sna_update_sna_landscape_material_E64B9(self, context):
|
||
sna_updated_prop = self.sna_landscape_material
|
||
bpy.data.node_groups[bpy.context.object.modifiers.active.node_group.name].nodes['Switch'].inputs[23].default_value = sna_updated_prop
|
||
bpy.context.view_layer.objects.active.update_tag(refresh={'DATA'}, )
|
||
|
||
|
||
class SNA_OT_Operator_88521(bpy.types.Operator):
|
||
bl_idname = "sna.operator_88521"
|
||
bl_label = "Operator"
|
||
bl_description = ""
|
||
bl_options = {"REGISTER", "UNDO"}
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
if bpy.app.version >= (3, 0, 0) and True:
|
||
cls.poll_message_set('')
|
||
return not False
|
||
|
||
def execute(self, context):
|
||
for i_F4E5A in range(len(bpy.context.screen.areas)):
|
||
if (bpy.context.screen.areas[i_F4E5A].type == 'PROPERTIES'):
|
||
for i_EE2BD in range(len(bpy.context.screen.areas[i_F4E5A].regions)):
|
||
if (bpy.context.screen.areas[i_F4E5A].regions[i_EE2BD].type == 'WINDOW'):
|
||
area_07961 = bpy.context.screen.areas[i_F4E5A]
|
||
region_07961 = bpy.context.screen.areas[i_F4E5A].regions[i_EE2BD]
|
||
with bpy.context.temp_override(area=area_07961, region=region_07961, ):
|
||
bpy.context.scene.cycles.bake_type = 'DIFFUSE'
|
||
bpy.context.scene.render.bake.use_pass_direct = False
|
||
bpy.context.scene.render.bake.use_pass_indirect = False
|
||
bpy.context.scene.render.bake.margin = 4
|
||
bpy.ops.object.bake('INVOKE_DEFAULT', type='DIFFUSE')
|
||
bpy.ops.object.light_add('INVOKE_DEFAULT', type='SUN', location=(1.0, 1.0, 10.0))
|
||
bpy.ops.object.delete()
|
||
if bpy.context and bpy.context.screen:
|
||
for a in bpy.context.screen.areas:
|
||
a.tag_redraw()
|
||
return {"FINISHED"}
|
||
|
||
def invoke(self, context, event):
|
||
return self.execute(context)
|
||
|
||
|
||
def sna_function_interface_7D9FC(layout_function, ):
|
||
op = layout_function.operator('sna.operator_88521', text='Bake', icon_value=192, emboss=True, depress=False)
|
||
|
||
|
||
class SNA_PT_LEGOLIZER_D7609(bpy.types.Panel):
|
||
bl_label = 'Legolizer'
|
||
bl_idname = 'SNA_PT_LEGOLIZER_D7609'
|
||
bl_space_type = 'VIEW_3D'
|
||
bl_region_type = 'UI'
|
||
bl_context = ''
|
||
bl_category = 'Legolizer'
|
||
bl_order = 0
|
||
bl_ui_units_x=0
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
return not (False)
|
||
|
||
def draw_header(self, context):
|
||
layout = self.layout
|
||
|
||
def draw(self, context):
|
||
layout = self.layout
|
||
col_CDA22 = layout.column(heading='', align=False)
|
||
col_CDA22.alert = False
|
||
col_CDA22.enabled = bool(len(bpy.context.view_layer.objects.selected))
|
||
col_CDA22.active = True
|
||
col_CDA22.use_property_split = False
|
||
col_CDA22.use_property_decorate = False
|
||
col_CDA22.scale_x = 1.0
|
||
col_CDA22.scale_y = 1.0
|
||
col_CDA22.alignment = 'Expand'.upper()
|
||
if not True: col_CDA22.operator_context = "EXEC_DEFAULT"
|
||
op = col_CDA22.operator('sna.operator_79c5b', text='Legolize', icon_value=0, emboss=True, depress=False)
|
||
op = col_CDA22.operator('sna.operator002_5e694', text='Lego Landscape Generator', icon_value=0, emboss=True, depress=False)
|
||
col_3E229 = layout.column(heading='', align=False)
|
||
col_3E229.alert = False
|
||
col_3E229.enabled = True
|
||
col_3E229.active = True
|
||
col_3E229.use_property_split = False
|
||
col_3E229.use_property_decorate = False
|
||
col_3E229.scale_x = 1.0
|
||
col_3E229.scale_y = 1.149999976158142
|
||
col_3E229.alignment = 'Expand'.upper()
|
||
if not True: col_3E229.operator_context = "EXEC_DEFAULT"
|
||
if (not bpy.context.scene.sna_new_property):
|
||
col_70AAD = col_3E229.column(heading='', align=False)
|
||
col_70AAD.alert = False
|
||
col_70AAD.enabled = True
|
||
col_70AAD.active = True
|
||
col_70AAD.use_property_split = False
|
||
col_70AAD.use_property_decorate = False
|
||
col_70AAD.scale_x = 1.0
|
||
col_70AAD.scale_y = 1.0
|
||
col_70AAD.alignment = 'Expand'.upper()
|
||
if not True: col_70AAD.operator_context = "EXEC_DEFAULT"
|
||
op = col_70AAD.operator('sna.add_legolizer_setup_b16ae', text='Add Setup', icon_value=0, emboss=True, depress=True)
|
||
col_70AAD.separator(factor=2.049999952316284)
|
||
|
||
|
||
class SNA_OT_Operator_79C5B(bpy.types.Operator):
|
||
bl_idname = "sna.operator_79c5b"
|
||
bl_label = "Operator"
|
||
bl_description = ""
|
||
bl_options = {"REGISTER", "UNDO"}
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
if bpy.app.version >= (3, 0, 0) and True:
|
||
cls.poll_message_set('')
|
||
return not False
|
||
|
||
def execute(self, context):
|
||
if property_exists("bpy.data.node_groups['Legolizer']", globals(), locals()):
|
||
modifier_EC83B = bpy.context.active_object.modifiers.new(name='Legolizer', type='NODES', )
|
||
modifier_EC83B.node_group = bpy.data.node_groups['Legolizer']
|
||
else:
|
||
before_data = list(bpy.data.node_groups)
|
||
bpy.ops.wm.append(directory=os.path.join(os.path.dirname(__file__), 'assets', 'Legolizer_Full_Version3 main.blend') + r'\NodeTree', filename='Legolizer', link=False)
|
||
new_data = list(filter(lambda d: not d in before_data, list(bpy.data.node_groups)))
|
||
appended_54BCA = None if not new_data else new_data[0]
|
||
modifier_45945 = bpy.context.active_object.modifiers.new(name='Legolizer', type='NODES', )
|
||
modifier_45945.node_group = appended_54BCA
|
||
sna_legolizer_function_AA320()
|
||
bpy.context.view_layer.objects.active.modifiers['Legolizer']['Input_6'] = bpy.context.view_layer.objects.active.data.uv_layers.active.name
|
||
bpy.context.view_layer.objects.active.active_material.node_tree.nodes['Attribute'].attribute_name = bpy.context.view_layer.objects.active.data.uv_layers.active.name
|
||
return {"FINISHED"}
|
||
|
||
def invoke(self, context, event):
|
||
return self.execute(context)
|
||
|
||
|
||
class SNA_OT_Operator002_5E694(bpy.types.Operator):
|
||
bl_idname = "sna.operator002_5e694"
|
||
bl_label = "Operator.002"
|
||
bl_description = ""
|
||
bl_options = {"REGISTER", "UNDO"}
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
if bpy.app.version >= (3, 0, 0) and True:
|
||
cls.poll_message_set('')
|
||
return not False
|
||
|
||
def execute(self, context):
|
||
if property_exists("bpy.data.node_groups['Lego_Landscape_Generator']", globals(), locals()):
|
||
modifier_095E3 = bpy.context.active_object.modifiers.new(name='Lego_Landscape_Generator', type='NODES', )
|
||
modifier_095E3.node_group = bpy.data.node_groups['Lego_Landscape_Generator']
|
||
else:
|
||
before_data = list(bpy.data.node_groups)
|
||
bpy.ops.wm.append(directory=os.path.join(os.path.dirname(__file__), 'assets', 'Legolizer_Full_Version3 main.blend') + r'\NodeTree', filename='Lego_Landscape_Generator', link=False)
|
||
new_data = list(filter(lambda d: not d in before_data, list(bpy.data.node_groups)))
|
||
appended_1A324 = None if not new_data else new_data[0]
|
||
modifier_3345B = bpy.context.active_object.modifiers.new(name='Lego_Landscape_Generator', type='NODES', )
|
||
modifier_3345B.node_group = appended_1A324
|
||
sna_landscape_material_function_5D422()
|
||
return {"FINISHED"}
|
||
|
||
def invoke(self, context, event):
|
||
return self.execute(context)
|
||
|
||
|
||
class SNA_AddonPreferences_2E6BD(bpy.types.AddonPreferences):
|
||
bl_idname = 'legolizer'
|
||
|
||
def draw(self, context):
|
||
if not (False):
|
||
layout = self.layout
|
||
row_A16F5 = layout.row(heading='', align=False)
|
||
row_A16F5.alert = False
|
||
row_A16F5.enabled = True
|
||
row_A16F5.active = True
|
||
row_A16F5.use_property_split = False
|
||
row_A16F5.use_property_decorate = False
|
||
row_A16F5.scale_x = 1.0
|
||
row_A16F5.scale_y = 1.0
|
||
row_A16F5.alignment = 'Expand'.upper()
|
||
if not True: row_A16F5.operator_context = "EXEC_DEFAULT"
|
||
op = row_A16F5.operator('wm.url_open', text='Alberrvfx (Blender Market)', icon_value=72, emboss=True, depress=False)
|
||
op.url = 'https://blendermarket.com/creators/alberrvfx'
|
||
op = row_A16F5.operator('wm.url_open', text='Addon Developer (Al-Dezel)', icon_value=72, emboss=True, depress=False)
|
||
op.url = 'https://blendermarket.com/creators/13lfh3mn4gnlm7q_umj3vf34yueooo8q8'
|
||
col_ACBFB = layout.column(heading='', align=True)
|
||
col_ACBFB.alert = False
|
||
col_ACBFB.enabled = True
|
||
col_ACBFB.active = True
|
||
col_ACBFB.use_property_split = False
|
||
col_ACBFB.use_property_decorate = False
|
||
col_ACBFB.scale_x = 1.0
|
||
col_ACBFB.scale_y = 1.0
|
||
col_ACBFB.alignment = 'Expand'.upper()
|
||
if not True: col_ACBFB.operator_context = "EXEC_DEFAULT"
|
||
col_ACBFB.prop(find_user_keyconfig('27F5F'), 'type', text='Apply Legolizer Shortcut', full_event=True)
|
||
col_ACBFB.prop(find_user_keyconfig('94A0F'), 'type', text='Apply Lego Landscape Gen. Shortcut', full_event=True)
|
||
col_ACBFB.prop(find_user_keyconfig('4D60F'), 'type', text='Add Set Up Shortcut', full_event=True)
|
||
|
||
|
||
class SNA_OT_Material_Properties_A10D8(bpy.types.Operator):
|
||
bl_idname = "sna.material_properties_a10d8"
|
||
bl_label = "Material Properties"
|
||
bl_description = ""
|
||
bl_options = {"REGISTER", "UNDO"}
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
if bpy.app.version >= (3, 0, 0) and True:
|
||
cls.poll_message_set('')
|
||
return not False
|
||
|
||
def execute(self, context):
|
||
ShowMessageBoxer('Info',
|
||
'NONE',
|
||
'The properties of the Materials will appear if you select the object that has the Material applied to it.')
|
||
return {"FINISHED"}
|
||
|
||
def invoke(self, context, event):
|
||
return self.execute(context)
|
||
|
||
|
||
class SNA_OT_Geometry_Properties_87F4A(bpy.types.Operator):
|
||
bl_idname = "sna.geometry_properties_87f4a"
|
||
bl_label = "Geometry Properties"
|
||
bl_description = ""
|
||
bl_options = {"REGISTER", "UNDO"}
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
if bpy.app.version >= (3, 0, 0) and True:
|
||
cls.poll_message_set('')
|
||
return not False
|
||
|
||
def execute(self, context):
|
||
ShowMessageBoxer('Info',
|
||
'NONE',
|
||
'The properties of the Geometry node will appear if you select the object that has the Geo Modifier applied to it.')
|
||
return {"FINISHED"}
|
||
|
||
def invoke(self, context, event):
|
||
return self.execute(context)
|
||
|
||
|
||
@persistent
|
||
def load_post_handler_E1A6F(dummy):
|
||
visual_scripting_editor['sna_new_variable'] = False
|
||
|
||
|
||
class SNA_OT_Add_Legolizer_Setup_B16Ae(bpy.types.Operator):
|
||
bl_idname = "sna.add_legolizer_setup_b16ae"
|
||
bl_label = "Add Legolizer Setup?"
|
||
bl_description = ""
|
||
bl_options = {"REGISTER", "UNDO"}
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
if bpy.app.version >= (3, 0, 0) and True:
|
||
cls.poll_message_set('')
|
||
return not visual_scripting_editor['sna_new_variable']
|
||
|
||
def execute(self, context):
|
||
before_data = list(bpy.data.node_groups)
|
||
bpy.ops.wm.append(directory=os.path.join(os.path.dirname(__file__), 'assets', 'Legolizer_Full_Version.blend') + r'\NodeTree', filename='Legolizer', link=False)
|
||
new_data = list(filter(lambda d: not d in before_data, list(bpy.data.node_groups)))
|
||
appended_67BC6 = None if not new_data else new_data[0]
|
||
bpy.ops.object.move_to_collection('INVOKE_DEFAULT', collection_index=0, is_new=True, new_collection_name='Bricks')
|
||
bpy.ops.object.hide_view_set()
|
||
bpy.context.view_layer.layer_collection.children['Bricks'].exclude = True
|
||
visual_scripting_editor['sna_new_variable'] = True
|
||
before_data = list(bpy.data.node_groups)
|
||
bpy.ops.wm.append(directory=os.path.join(os.path.dirname(__file__), 'assets', 'Legolizer_Full_Version.blend') + r'\NodeTree', filename='Lego_Landscape_Generator', link=False)
|
||
new_data = list(filter(lambda d: not d in before_data, list(bpy.data.node_groups)))
|
||
appended_34A26 = None if not new_data else new_data[0]
|
||
bpy.ops.object.delete()
|
||
bpy.context.scene.sna_new_property = True
|
||
before_data = list(bpy.data.materials)
|
||
bpy.ops.wm.append(directory=os.path.join(os.path.dirname(__file__), 'assets', 'Legolizer_Full_Version.blend') + r'\Material', filename='PBR_Plastic_Material', link=False)
|
||
new_data = list(filter(lambda d: not d in before_data, list(bpy.data.materials)))
|
||
appended_2A67E = None if not new_data else new_data[0]
|
||
before_data = list(bpy.data.materials)
|
||
bpy.ops.wm.append(directory=os.path.join(os.path.dirname(__file__), 'assets', 'Legolizer_Full_Version3 main.blend') + r'\Material', filename='PBR_Trans_Plastic_Material_v03', link=False)
|
||
new_data = list(filter(lambda d: not d in before_data, list(bpy.data.materials)))
|
||
appended_85DEE = None if not new_data else new_data[0]
|
||
before_data = list(bpy.data.materials)
|
||
bpy.ops.wm.append(directory=os.path.join(os.path.dirname(__file__), 'assets', 'Legolizer_Full_Version.blend') + r'\Material', filename='legolizer_tools', link=False)
|
||
new_data = list(filter(lambda d: not d in before_data, list(bpy.data.materials)))
|
||
appended_3381B = None if not new_data else new_data[0]
|
||
ShowMessageBoxer('Info',
|
||
'INFO',
|
||
'Completed')
|
||
return {"FINISHED"}
|
||
|
||
def invoke(self, context, event):
|
||
return context.window_manager.invoke_confirm(self, event)
|
||
|
||
|
||
def sna_landscape_material_function_5D422():
|
||
if False:
|
||
bpy.context.scene.sna_landscape_material = bpy.data.node_groups[bpy.context.object.modifiers.active.node_group.name].nodes['Switch'].inputs[23].default_value
|
||
|
||
|
||
def sna_legolizer_function_AA320():
|
||
if False:
|
||
bpy.context.scene.sna_legolizer_material = bpy.data.node_groups[bpy.context.object.modifiers.active.node_group.name].nodes['Set Material'].inputs[2].default_value
|
||
|
||
|
||
class SNA_OT_Operator001_67831(bpy.types.Operator):
|
||
bl_idname = "sna.operator001_67831"
|
||
bl_label = "Operator.001"
|
||
bl_description = ""
|
||
bl_options = {"REGISTER", "UNDO"}
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
if bpy.app.version >= (3, 0, 0) and True:
|
||
cls.poll_message_set('')
|
||
return not False
|
||
|
||
def execute(self, context):
|
||
bpy.ops.object.mode_set('INVOKE_DEFAULT', mode='EDIT')
|
||
bpy.ops.mesh.select_all('INVOKE_DEFAULT', action='SELECT')
|
||
bpy.ops.uv.smart_project(angle_limit=66.0, margin_method='SCALED', island_margin=0.0010000000474974513, area_weight=0.0, correct_aspect=True, scale_to_bounds=False)
|
||
bpy.ops.object.mode_set('INVOKE_DEFAULT', mode='OBJECT')
|
||
return {"FINISHED"}
|
||
|
||
def invoke(self, context, event):
|
||
return self.execute(context)
|
||
|
||
|
||
class SNA_OT_Operator_E20D3(bpy.types.Operator):
|
||
bl_idname = "sna.operator_e20d3"
|
||
bl_label = "Operator"
|
||
bl_description = ""
|
||
bl_options = {"REGISTER", "UNDO"}
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
if bpy.app.version >= (3, 0, 0) and True:
|
||
cls.poll_message_set('')
|
||
return not False
|
||
|
||
def execute(self, context):
|
||
exec('bpy.ops.node.add_node(use_transform=True, type="ShaderNodeTexImage")')
|
||
image_0DB6A = bpy.data.images.new(name=bpy.context.active_object.name, width=bpy.context.scene.sna_resolution_width, height=bpy.context.scene.sna_resolution_height, alpha=True, )
|
||
bpy.ops.transform.translate('INVOKE_DEFAULT', )
|
||
bpy.context.scene.render.engine = 'CYCLES'
|
||
bpy.context.scene.cycles.device = 'GPU'
|
||
bpy.context.scene.cycles.samples = 10
|
||
return {"FINISHED"}
|
||
|
||
def invoke(self, context, event):
|
||
return self.execute(context)
|
||
|
||
|
||
class SNA_PT_BAKE_79642(bpy.types.Panel):
|
||
bl_label = 'Bake'
|
||
bl_idname = 'SNA_PT_BAKE_79642'
|
||
bl_space_type = 'NODE_EDITOR'
|
||
bl_region_type = 'UI'
|
||
bl_context = ''
|
||
bl_category = 'Bake Legolizer'
|
||
bl_order = 1
|
||
bl_ui_units_x=0
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
return not (False)
|
||
|
||
def draw_header(self, context):
|
||
layout = self.layout
|
||
|
||
def draw(self, context):
|
||
layout = self.layout
|
||
col_F1A82 = layout.column(heading='', align=False)
|
||
col_F1A82.alert = False
|
||
col_F1A82.enabled = True
|
||
col_F1A82.active = True
|
||
col_F1A82.use_property_split = False
|
||
col_F1A82.use_property_decorate = False
|
||
col_F1A82.scale_x = 1.0
|
||
col_F1A82.scale_y = 1.5
|
||
col_F1A82.alignment = 'Expand'.upper()
|
||
if not True: col_F1A82.operator_context = "EXEC_DEFAULT"
|
||
op = col_F1A82.operator('sna.operator_e20d3', text='Add Texture', icon_value=126, emboss=True, depress=False)
|
||
op = col_F1A82.operator('sna.operator001_67831', text='Smart UV', icon_value=128, emboss=True, depress=False)
|
||
layout_function = col_F1A82
|
||
sna_function_interface_7D9FC(layout_function, )
|
||
col_7419D = layout.column(heading='', align=False)
|
||
col_7419D.alert = False
|
||
col_7419D.enabled = True
|
||
col_7419D.active = True
|
||
col_7419D.use_property_split = False
|
||
col_7419D.use_property_decorate = False
|
||
col_7419D.scale_x = 1.0
|
||
col_7419D.scale_y = 1.2000000476837158
|
||
col_7419D.alignment = 'Center'.upper()
|
||
if not True: col_7419D.operator_context = "EXEC_DEFAULT"
|
||
col_7419D.label(text='Resolution', icon_value=0)
|
||
col_7419D.prop(bpy.context.scene, 'sna_resolution_width', text='Resolution Width', icon_value=0, emboss=True)
|
||
col_7419D.prop(bpy.context.scene, 'sna_resolution_height', text='Resolution Height', icon_value=0, emboss=True)
|
||
|
||
|
||
class SNA_PT_MATERIAL_PROPERTIES_63A83(bpy.types.Panel):
|
||
bl_label = 'Material Properties'
|
||
bl_idname = 'SNA_PT_MATERIAL_PROPERTIES_63A83'
|
||
bl_space_type = 'VIEW_3D'
|
||
bl_region_type = 'UI'
|
||
bl_context = ''
|
||
bl_order = 2
|
||
bl_options = {'DEFAULT_CLOSED'}
|
||
bl_parent_id = 'SNA_PT_LEGOLIZER_D7609'
|
||
bl_ui_units_x=0
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
return not (False)
|
||
|
||
def draw_header(self, context):
|
||
layout = self.layout
|
||
|
||
def draw(self, context):
|
||
layout = self.layout
|
||
box_5AE89 = layout.box()
|
||
box_5AE89.alert = False
|
||
box_5AE89.enabled = True
|
||
box_5AE89.active = True
|
||
box_5AE89.use_property_split = False
|
||
box_5AE89.use_property_decorate = False
|
||
box_5AE89.alignment = 'Expand'.upper()
|
||
box_5AE89.scale_x = 1.0
|
||
box_5AE89.scale_y = 1.0
|
||
if not True: box_5AE89.operator_context = "EXEC_DEFAULT"
|
||
if (bpy.context.view_layer.objects.active and bpy.context.object.active_material):
|
||
if bpy.context.object.active_material.use_nodes:
|
||
for i_53F1C in range(len(bpy.context.active_object.active_material.node_tree.nodes)):
|
||
if (bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].type == 'GROUP'):
|
||
box_5AE89.separator(factor=0.10000000149011612)
|
||
col_9F17B = box_5AE89.column(heading='', align=False)
|
||
col_9F17B.alert = False
|
||
col_9F17B.enabled = True
|
||
col_9F17B.active = True
|
||
col_9F17B.use_property_split = False
|
||
col_9F17B.use_property_decorate = False
|
||
col_9F17B.scale_x = 1.0
|
||
col_9F17B.scale_y = 1.0
|
||
col_9F17B.alignment = 'Center'.upper()
|
||
if not True: col_9F17B.operator_context = "EXEC_DEFAULT"
|
||
for i_99B79 in range(len(bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs)):
|
||
row_7FA06 = col_9F17B.row(heading='', align=True)
|
||
row_7FA06.alert = False
|
||
row_7FA06.enabled = True
|
||
row_7FA06.active = True
|
||
row_7FA06.use_property_split = False
|
||
row_7FA06.use_property_decorate = False
|
||
row_7FA06.scale_x = 1.0
|
||
row_7FA06.scale_y = 1.0
|
||
row_7FA06.alignment = 'Expand'.upper()
|
||
if not True: row_7FA06.operator_context = "EXEC_DEFAULT"
|
||
row_7FA06.label(text=bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79].name, icon_value=0)
|
||
if ((bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79].type == 'VALUE') or (bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79].type == 'RGB') or (bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79].type == 'VECTOR') or (bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79].type == 'STRING') or (bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79].type == 'BOOLEAN') or (bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79].type == 'INT') or (bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79].type == 'RGBA') or (bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79].type == 'SHADER')):
|
||
row_7FA06.prop(bpy.context.active_object.active_material.node_tree.nodes[i_53F1C].inputs[i_99B79], 'default_value', text='', icon_value=0, emboss=True, expand=False)
|
||
row_1B3AF = box_5AE89.row(heading='', align=False)
|
||
row_1B3AF.alert = False
|
||
row_1B3AF.enabled = True
|
||
row_1B3AF.active = True
|
||
row_1B3AF.use_property_split = False
|
||
row_1B3AF.use_property_decorate = False
|
||
row_1B3AF.scale_x = 1.0
|
||
row_1B3AF.scale_y = 1.0
|
||
row_1B3AF.alignment = 'Center'.upper()
|
||
if not True: row_1B3AF.operator_context = "EXEC_DEFAULT"
|
||
row_1B3AF.label(text='Material Properties', icon_value=0)
|
||
op = row_1B3AF.operator('sna.material_properties_a10d8', text='', icon_value=1, emboss=False, depress=False)
|
||
|
||
|
||
class SNA_PT_PROPERTIES_1DA39(bpy.types.Panel):
|
||
bl_label = 'Properties'
|
||
bl_idname = 'SNA_PT_PROPERTIES_1DA39'
|
||
bl_space_type = 'VIEW_3D'
|
||
bl_region_type = 'UI'
|
||
bl_context = ''
|
||
bl_order = 1
|
||
bl_parent_id = 'SNA_PT_LEGOLIZER_D7609'
|
||
bl_ui_units_x=0
|
||
|
||
@classmethod
|
||
def poll(cls, context):
|
||
return not ((not ((len(bpy.context.active_object.modifiers) > 0) and bool(len(bpy.context.view_layer.objects.selected)))))
|
||
|
||
def draw_header(self, context):
|
||
layout = self.layout
|
||
|
||
def draw(self, context):
|
||
layout = self.layout
|
||
box_A3043 = layout.box()
|
||
box_A3043.alert = False
|
||
box_A3043.enabled = True
|
||
box_A3043.active = True
|
||
box_A3043.use_property_split = False
|
||
box_A3043.use_property_decorate = False
|
||
box_A3043.alignment = 'Expand'.upper()
|
||
box_A3043.scale_x = 1.0
|
||
box_A3043.scale_y = 1.0
|
||
if not True: box_A3043.operator_context = "EXEC_DEFAULT"
|
||
if (len(bpy.context.active_object.modifiers) > 0):
|
||
if (bpy.context.active_object.modifiers.active.name == 'Legolizer'):
|
||
col_F7B09 = box_A3043.column(heading='', align=False)
|
||
col_F7B09.alert = False
|
||
col_F7B09.enabled = True
|
||
col_F7B09.active = True
|
||
col_F7B09.use_property_split = False
|
||
col_F7B09.use_property_decorate = False
|
||
col_F7B09.scale_x = 1.0
|
||
col_F7B09.scale_y = 1.0
|
||
col_F7B09.alignment = 'Expand'.upper()
|
||
if not True: col_F7B09.operator_context = "EXEC_DEFAULT"
|
||
row_D7469 = col_F7B09.row(heading='', align=False)
|
||
row_D7469.alert = False
|
||
row_D7469.enabled = True
|
||
row_D7469.active = True
|
||
row_D7469.use_property_split = False
|
||
row_D7469.use_property_decorate = False
|
||
row_D7469.scale_x = 1.0
|
||
row_D7469.scale_y = 0.949999988079071
|
||
row_D7469.alignment = 'Center'.upper()
|
||
if not True: row_D7469.operator_context = "EXEC_DEFAULT"
|
||
row_D7469.label(text='Legolizer', icon_value=0)
|
||
col_F7B09.prop(bpy.context.scene, 'sna_legolizer_material', text='Material', icon_value=0, emboss=True)
|
||
attr_C45D9 = '["' + str('Input_5' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_C45D9, text='Brick Size (Render)', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_E30E8 = '["' + str('Input_2' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_E30E8, text='Brick Size (Viewport)', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_533AF = '["' + str('Input_46' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_533AF, text='Mesh Resolution', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_2308D = '["' + str('Input_29' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_2308D, text='Brick Length X', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_56D47 = '["' + str('Input_30' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_56D47, text='Brick Length Y', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_5BBD2 = '["' + str('Input_31' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_5BBD2, text='Brick Length Z', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_FED9E = '["' + str('Input_10' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_FED9E, text='Fill Volume', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_3700D = '["' + str('Input_6' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_3700D, text='UV´s Name', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_DCF90 = '["' + str('Input_8' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_DCF90, text='LAYERS DESINTEGRATION', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_C7F28 = '["' + str('Input_9' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_C7F28, text='Animate Layers', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_D11ED = '["' + str('Input_44' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_D11ED, text='Randomness', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_F5B3C = '["' + str('Input_43' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_F5B3C, text='Animation Axis', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_58C85 = '["' + str('Input_45' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_58C85, text='Switch Direction', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_1EB3A = '["' + str('Input_47' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_1EB3A, text='Seed', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_A9DB5 = '["' + str('Input_25' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_A9DB5, text='Animation Speed', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_1BC78 = '["' + str('Input_32' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_1BC78, text='LEGO BRICKS ASSEMBLY', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_A3B13 = '["' + str('Input_38' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_A3B13, text='Anim. Effector', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_36233 = '["' + str('Input_40' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_36233, text='Animate Assembly', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_E7A47 = '["' + str('Input_35' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_E7A47, text='Randomness', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_B380A = '["' + str('Input_37' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_B380A, text='Spread Max. Distance', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_9A02E = '["' + str('Input_42' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_9A02E, text='Animation Axis', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_D9D9B = '["' + str('Input_39' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_D9D9B, text='Switch Direction', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_EA9D3 = '["' + str('Input_48' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_EA9D3, text='Seed', icon_value=0, emboss=True)
|
||
col_F7B09.separator(factor=0.5)
|
||
attr_FEF16 = '["' + str('Input_41' + '"]')
|
||
col_F7B09.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_FEF16, text='Animation Speed', icon_value=0, emboss=True)
|
||
else:
|
||
if (bpy.context.active_object.modifiers.active.name == 'Lego_Landscape_Generator'):
|
||
col_258B7 = box_A3043.column(heading='', align=False)
|
||
col_258B7.alert = False
|
||
col_258B7.enabled = True
|
||
col_258B7.active = True
|
||
col_258B7.use_property_split = False
|
||
col_258B7.use_property_decorate = False
|
||
col_258B7.scale_x = 1.0
|
||
col_258B7.scale_y = 1.0
|
||
col_258B7.alignment = 'Expand'.upper()
|
||
if not True: col_258B7.operator_context = "EXEC_DEFAULT"
|
||
row_9BF52 = col_258B7.row(heading='', align=False)
|
||
row_9BF52.alert = False
|
||
row_9BF52.enabled = True
|
||
row_9BF52.active = True
|
||
row_9BF52.use_property_split = False
|
||
row_9BF52.use_property_decorate = False
|
||
row_9BF52.scale_x = 1.0
|
||
row_9BF52.scale_y = 0.949999988079071
|
||
row_9BF52.alignment = 'Center'.upper()
|
||
if not True: row_9BF52.operator_context = "EXEC_DEFAULT"
|
||
row_9BF52.label(text='Lego_Landscape_Generator', icon_value=0)
|
||
col_258B7.prop(bpy.context.scene, 'sna_landscape_material', text='Material', icon_value=0, emboss=True)
|
||
attr_3DD35 = '["' + str('Input_2' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_3DD35, text='Brick Length X', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_FD116 = '["' + str('Input_3' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_FD116, text='Brick Length Y', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_7E942 = '["' + str('Input_4' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_7E942, text='Brick Length Z', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_9808F = '["' + str('Input_8' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_9808F, text='Landscape Size', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_4476E = '["' + str('Input_40' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_4476E, text='Biome Toggle', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_622A9 = '["' + str('Input_12' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_622A9, text='Scale', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_9DCE5 = '["' + str('Input_11' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_9DCE5, text='Seed', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_F166A = '["' + str('Input_10' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_F166A, text='Base Level', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_CFFC7 = '["' + str('Input_13' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_CFFC7, text='Depression', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_A2D6E = '["' + str('Input_42' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_A2D6E, text='Maximum Height', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_7041F = '["' + str('Input_14' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_7041F, text='Micro-relief', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_A591F = '["' + str('Socket_2' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_A591F, text='Rotate', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_9B939 = '["' + str('Input_43' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_9B939, text='Material Replace', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_54B13 = '["' + str('Input_17' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_54B13, text='LANDSCAPE ANIMATION', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_CA5F6 = '["' + str('Input_16' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_CA5F6, text='Animate Landscape', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_5F8CE = '["' + str('Input_19' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_5F8CE, text='Switch Direction', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_B33FE = '["' + str('Input_18' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_B33FE, text='Animation Speed', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_5394A = '["' + str('Input_36' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_5394A, text='LAYER DESINTEGRATION', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_BE2B6 = '["' + str('Input_30' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_BE2B6, text='Animate Layers', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_A0D48 = '["' + str('Input_31' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_A0D48, text='Randomness', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_B3B38 = '["' + str('Input_32' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_B3B38, text='Animation Axis', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_B19C2 = '["' + str('Input_33' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_B19C2, text='Switch Direction', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_DEAF4 = '["' + str('Input_34' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_DEAF4, text='Seed', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_247D8 = '["' + str('Input_35' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_247D8, text='Animation Speed', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_33F3D = '["' + str('Input_23' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_33F3D, text='BRICKS ASSEMBLY', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_80F00 = '["' + str('Input_38' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_80F00, text='Anim. Effector', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_6353D = '["' + str('Input_24' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_6353D, text='Animate Assembly', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_5996A = '["' + str('Input_37' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_5996A, text='Randomness', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_36F9C = '["' + str('Input_25' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_36F9C, text='Spread Max. Distance', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_95ECF = '["' + str('Input_26' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_95ECF, text='Animation Axis', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_FBB2C = '["' + str('Input_27' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_FBB2C, text='Switch Direction', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_B5DAF = '["' + str('Input_28' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_B5DAF, text='Seed', icon_value=0, emboss=True)
|
||
col_258B7.separator(factor=0.5)
|
||
attr_75D9A = '["' + str('Input_29' + '"]')
|
||
col_258B7.prop(bpy.context.view_layer.objects.active.modifiers[bpy.context.active_object.modifiers.active.name], attr_75D9A, text='Animation Speed', icon_value=0, emboss=True)
|
||
else:
|
||
box_A3043.label(text='Please Select Legolizer/Landscape Modifier', icon_value=0)
|
||
else:
|
||
box_A3043.label(text='Please Add Legolizer/Landscape Modifier', icon_value=0)
|
||
|
||
|
||
def register():
|
||
global _icons
|
||
_icons = bpy.utils.previews.new()
|
||
bpy.types.Scene.sna_new_property = bpy.props.BoolProperty(name='New Property', description='', default=False)
|
||
bpy.types.Scene.sna_resolution_width = bpy.props.IntProperty(name='Resolution Width', description='', default=1024, subtype='NONE')
|
||
bpy.types.Scene.sna_aldezel_properties = bpy.props.StringProperty(name='Al-Dezel Properties', description='Al-Dezel Properties', default='', subtype='NONE', maxlen=0)
|
||
bpy.types.Scene.sna_resolution_height = bpy.props.IntProperty(name='Resolution Height', description='', default=1024, subtype='NONE')
|
||
bpy.types.Scene.sna_legolizer_material = bpy.props.PointerProperty(name='Legolizer Material', description='', type=bpy.types.Material, update=sna_update_sna_legolizer_material_9D59F)
|
||
bpy.types.Scene.sna_landscape_material = bpy.props.PointerProperty(name='Landscape Material', description='', type=bpy.types.Material, update=sna_update_sna_landscape_material_E64B9)
|
||
bpy.utils.register_class(SNA_OT_Operator_88521)
|
||
bpy.utils.register_class(SNA_PT_LEGOLIZER_D7609)
|
||
bpy.utils.register_class(SNA_OT_Operator_79C5B)
|
||
bpy.utils.register_class(SNA_OT_Operator002_5E694)
|
||
bpy.utils.register_class(SNA_AddonPreferences_2E6BD)
|
||
bpy.utils.register_class(SNA_OT_Material_Properties_A10D8)
|
||
bpy.utils.register_class(SNA_OT_Geometry_Properties_87F4A)
|
||
bpy.app.handlers.load_post.append(load_post_handler_E1A6F)
|
||
bpy.utils.register_class(SNA_OT_Add_Legolizer_Setup_B16Ae)
|
||
bpy.utils.register_class(SNA_OT_Operator001_67831)
|
||
bpy.utils.register_class(SNA_OT_Operator_E20D3)
|
||
bpy.utils.register_class(SNA_PT_BAKE_79642)
|
||
bpy.utils.register_class(SNA_PT_MATERIAL_PROPERTIES_63A83)
|
||
bpy.utils.register_class(SNA_PT_PROPERTIES_1DA39)
|
||
kc = bpy.context.window_manager.keyconfigs.addon
|
||
km = kc.keymaps.new(name='Window', space_type='EMPTY')
|
||
kmi = km.keymap_items.new('sna.operator_79c5b', 'L', 'PRESS',
|
||
ctrl=False, alt=False, shift=False, repeat=False)
|
||
addon_keymaps['27F5F'] = (km, kmi)
|
||
kc = bpy.context.window_manager.keyconfigs.addon
|
||
km = kc.keymaps.new(name='Window', space_type='EMPTY')
|
||
kmi = km.keymap_items.new('sna.operator002_5e694', 'P', 'PRESS',
|
||
ctrl=False, alt=False, shift=False, repeat=False)
|
||
addon_keymaps['94A0F'] = (km, kmi)
|
||
kc = bpy.context.window_manager.keyconfigs.addon
|
||
km = kc.keymaps.new(name='Window', space_type='EMPTY')
|
||
kmi = km.keymap_items.new('sna.add_legolizer_setup_b16ae', 'A', 'PRESS',
|
||
ctrl=True, alt=False, shift=True, repeat=False)
|
||
addon_keymaps['4D60F'] = (km, kmi)
|
||
|
||
|
||
def unregister():
|
||
global _icons
|
||
bpy.utils.previews.remove(_icons)
|
||
wm = bpy.context.window_manager
|
||
kc = wm.keyconfigs.addon
|
||
for km, kmi in addon_keymaps.values():
|
||
km.keymap_items.remove(kmi)
|
||
addon_keymaps.clear()
|
||
del bpy.types.Scene.sna_landscape_material
|
||
del bpy.types.Scene.sna_legolizer_material
|
||
del bpy.types.Scene.sna_resolution_height
|
||
del bpy.types.Scene.sna_aldezel_properties
|
||
del bpy.types.Scene.sna_resolution_width
|
||
del bpy.types.Scene.sna_new_property
|
||
bpy.utils.unregister_class(SNA_OT_Operator_88521)
|
||
bpy.utils.unregister_class(SNA_PT_LEGOLIZER_D7609)
|
||
bpy.utils.unregister_class(SNA_OT_Operator_79C5B)
|
||
bpy.utils.unregister_class(SNA_OT_Operator002_5E694)
|
||
bpy.utils.unregister_class(SNA_AddonPreferences_2E6BD)
|
||
bpy.utils.unregister_class(SNA_OT_Material_Properties_A10D8)
|
||
bpy.utils.unregister_class(SNA_OT_Geometry_Properties_87F4A)
|
||
bpy.app.handlers.load_post.remove(load_post_handler_E1A6F)
|
||
bpy.utils.unregister_class(SNA_OT_Add_Legolizer_Setup_B16Ae)
|
||
bpy.utils.unregister_class(SNA_OT_Operator001_67831)
|
||
bpy.utils.unregister_class(SNA_OT_Operator_E20D3)
|
||
bpy.utils.unregister_class(SNA_PT_BAKE_79642)
|
||
bpy.utils.unregister_class(SNA_PT_MATERIAL_PROPERTIES_63A83)
|
||
bpy.utils.unregister_class(SNA_PT_PROPERTIES_1DA39)
|