2023-12-14 21:33:22 +08:00
|
|
|
import bpy
|
|
|
|
import typing
|
|
|
|
from . import PROP_preferences, PROP_virtools_mesh, PROP_virtools_group, PROP_bme_material
|
2023-12-16 22:27:31 +08:00
|
|
|
from . import UTIL_functions, UTIL_icons_manager, UTIL_bme
|
2023-12-14 21:33:22 +08:00
|
|
|
|
|
|
|
#region BME Adder
|
|
|
|
|
2023-12-16 22:27:31 +08:00
|
|
|
_g_EnumHelper_BmeStructType: UTIL_bme.EnumPropHelper = UTIL_bme.EnumPropHelper()
|
|
|
|
|
2023-12-14 21:33:22 +08:00
|
|
|
class BBP_PG_bme_adder_params(bpy.types.PropertyGroup):
|
|
|
|
prop_int: bpy.props.IntProperty(
|
|
|
|
name = 'Single Int', description = 'Single Int',
|
|
|
|
min = 0, max = 64,
|
|
|
|
soft_min = 0, soft_max = 32,
|
|
|
|
default = 1,
|
|
|
|
)
|
|
|
|
prop_float: bpy.props.FloatProperty(
|
|
|
|
name = 'Single Float', description = 'Single Float',
|
|
|
|
min = 0.0, max = 1024.0,
|
|
|
|
soft_min = 0.0, soft_max = 64.0,
|
|
|
|
default = 5.0,
|
|
|
|
)
|
|
|
|
prop_str: bpy.props.StringProperty(
|
|
|
|
name = 'Single Str', description = 'Single Str',
|
|
|
|
default = ''
|
|
|
|
)
|
|
|
|
prop_bool: bpy.props.BoolProperty(
|
|
|
|
name = 'Single Bool', description = 'Single Bool',
|
|
|
|
default = True
|
|
|
|
)
|
|
|
|
|
|
|
|
class BBP_OT_add_bme_struct(bpy.types.Operator):
|
|
|
|
"""Add BME Struct"""
|
|
|
|
bl_idname = "bbp.dd_bme_struct"
|
|
|
|
bl_label = "Add BME Struct"
|
|
|
|
bl_options = {'REGISTER', 'UNDO'}
|
|
|
|
|
|
|
|
# the updator for default side value
|
|
|
|
def bme_struct_type_updated(self, context):
|
|
|
|
# get floor prototype
|
|
|
|
#floor_prototype = UTILS_constants.floor_blockDict[self.floor_type]
|
|
|
|
|
|
|
|
# try sync default value
|
|
|
|
#default_sides = floor_prototype['DefaultSideConfig']
|
|
|
|
#self.use_2d_top = default_sides['UseTwoDTop']
|
|
|
|
#self.use_2d_right = default_sides['UseTwoDRight']
|
|
|
|
#self.use_2d_bottom = default_sides['UseTwoDBottom']
|
|
|
|
#self.use_2d_left = default_sides['UseTwoDLeft']
|
|
|
|
#self.use_3d_top = default_sides['UseThreeDTop']
|
|
|
|
#self.use_3d_bottom = default_sides['UseThreeDBottom']
|
|
|
|
|
|
|
|
# init data collection
|
|
|
|
# todo: this state will add 32 items in each call.
|
|
|
|
# please clear it or resize it.
|
|
|
|
for i in range(32):
|
|
|
|
item = self.data_floats.add()
|
|
|
|
|
|
|
|
# blender required
|
|
|
|
return None
|
|
|
|
|
|
|
|
bme_struct_type: bpy.props.EnumProperty(
|
|
|
|
name = "Type",
|
|
|
|
description = "BME struct type",
|
2023-12-16 22:27:31 +08:00
|
|
|
items = _g_EnumHelper_BmeStructType.generate_items(),
|
2023-12-14 21:33:22 +08:00
|
|
|
update = bme_struct_type_updated
|
|
|
|
)
|
|
|
|
|
|
|
|
data_floats : bpy.props.CollectionProperty(
|
|
|
|
name = "Floats",
|
|
|
|
description = "Float collection.",
|
|
|
|
type = BBP_PG_bme_adder_params,
|
|
|
|
)
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def poll(self, context):
|
|
|
|
return PROP_preferences.get_raw_preferences().has_valid_blc_tex_folder()
|
|
|
|
|
|
|
|
def invoke(self, context, event):
|
|
|
|
# trigger default bme struct type updator
|
|
|
|
self.bme_struct_type_updated(context)
|
|
|
|
# run execute() function
|
|
|
|
return self.execute(context)
|
|
|
|
|
|
|
|
def execute(self, context):
|
|
|
|
# todo: call general creator
|
|
|
|
return {'FINISHED'}
|
|
|
|
|
|
|
|
def draw(self, context):
|
|
|
|
layout = self.layout
|
|
|
|
# show type
|
2023-12-16 22:27:31 +08:00
|
|
|
layout.prop(self, 'bme_struct_type')
|
|
|
|
# show type
|
2023-12-14 21:33:22 +08:00
|
|
|
for i in self.data_floats:
|
|
|
|
layout.prop(i, 'prop_bool')
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def draw_blc_menu(self, layout: bpy.types.UILayout):
|
2023-12-16 22:27:31 +08:00
|
|
|
for ident in _g_EnumHelper_BmeStructType.get_bme_identifiers():
|
|
|
|
# draw operator
|
|
|
|
cop = layout.operator(
|
|
|
|
self.bl_idname,
|
|
|
|
text = _g_EnumHelper_BmeStructType.get_bme_showcase_title(ident),
|
|
|
|
icon_value = _g_EnumHelper_BmeStructType.get_bme_showcase_icon(ident)
|
|
|
|
)
|
|
|
|
# and assign its init type value
|
|
|
|
cop.bme_struct_type = _g_EnumHelper_BmeStructType.to_selection(ident)
|
2023-12-14 21:33:22 +08:00
|
|
|
"""
|
|
|
|
for item in PROP_ballance_element.BallanceElementType:
|
|
|
|
item_name: str = PROP_ballance_element.get_ballance_element_name(item)
|
|
|
|
|
|
|
|
cop = layout.operator(
|
|
|
|
self.bl_idname, text = item_name,
|
|
|
|
icon_value = UTIL_icons_manager.get_component_icon(item_name)
|
|
|
|
)
|
|
|
|
cop.component_type = EnumPropHelper.to_selection(item)
|
|
|
|
"""
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
def register():
|
|
|
|
bpy.utils.register_class(BBP_PG_bme_adder_params)
|
|
|
|
bpy.utils.register_class(BBP_OT_add_bme_struct)
|
|
|
|
|
|
|
|
def unregister():
|
|
|
|
bpy.utils.unregister_class(BBP_OT_add_bme_struct)
|
|
|
|
bpy.utils.unregister_class(BBP_PG_bme_adder_params)
|