60 lines
2.2 KiB
Python
60 lines
2.2 KiB
Python
import bpy
|
|
from .version import blender_version
|
|
|
|
|
|
def get_prop_setting(node, prop_name, setting):
|
|
if blender_version._float >= 300:
|
|
return node.id_properties_ui(prop_name).as_dict()[setting]
|
|
else:
|
|
return node['_RNA_UI'][prop_name][setting]
|
|
|
|
|
|
def set_prop_setting(node, prop_name, setting, value):
|
|
if blender_version._float >= 300:
|
|
ui_data = node.id_properties_ui(prop_name)
|
|
if setting == 'default':
|
|
ui_data.update(default=value)
|
|
elif setting == 'min':
|
|
ui_data.update(min=value)
|
|
elif setting == 'max':
|
|
ui_data.update(max=value)
|
|
elif setting == 'soft_min':
|
|
ui_data.update(soft_min=value)
|
|
elif setting == 'soft_max':
|
|
ui_data.update(soft_max=value)
|
|
elif setting == 'description':
|
|
ui_data.update(description=value)
|
|
|
|
else:
|
|
if not "_RNA_UI" in node.keys():
|
|
node["_RNA_UI"] = {}
|
|
node['_RNA_UI'][prop_name][setting] = value
|
|
|
|
|
|
def create_custom_prop(node=None, prop_name="", prop_val=1.0, prop_min=0.0, prop_max=1.0, prop_description="", soft_min=None, soft_max=None, default=None):
|
|
if soft_min == None:
|
|
soft_min = prop_min
|
|
if soft_max == None:
|
|
soft_max = prop_max
|
|
|
|
if blender_version._float < 300:
|
|
if not "_RNA_UI" in node.keys():
|
|
node["_RNA_UI"] = {}
|
|
|
|
node[prop_name] = prop_val
|
|
|
|
if default == None:
|
|
default = prop_val
|
|
|
|
if blender_version._float < 300:
|
|
node["_RNA_UI"][prop_name] = {'use_soft_limits':True, 'min': prop_min, 'max': prop_max, 'description': prop_description, 'soft_min':soft_min, 'soft_max':soft_max, 'default':default}
|
|
else:
|
|
set_prop_setting(node, prop_name, 'min', prop_min)
|
|
set_prop_setting(node, prop_name, 'max', prop_max)
|
|
set_prop_setting(node, prop_name, 'description', prop_description)
|
|
set_prop_setting(node, prop_name, 'soft_min', soft_min)
|
|
set_prop_setting(node, prop_name, 'soft_max', soft_max)
|
|
set_prop_setting(node, prop_name, 'default', default)
|
|
|
|
# set as overridable
|
|
node.property_overridable_library_set('["'+prop_name+'"]', True) |