Mesh: Replace auto smooth with node group #108014

Merged
Hans Goudey merged 149 commits from HooglyBoogly/blender:refactor-mesh-corner-normals-lazy into main 2023-10-20 16:54:20 +02:00
79 changed files with 1084 additions and 716 deletions
Showing only changes of commit 230177ce73 - Show all commits

View File

@ -489,8 +489,7 @@ check_wiki_file_structure: .FORCE
"$(BLENDER_DIR)/tools/check_wiki/check_wiki_file_structure.py"
check_spelling_py: .FORCE
@cd "$(BUILD_DIR)" ; \
PYTHONIOENCODING=utf_8 $(PYTHON) \
@PYTHONIOENCODING=utf_8 $(PYTHON) \
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
--cache-file=$(CHECK_SPELLING_CACHE) \
--match=".*\.(py)$$" \
@ -499,8 +498,7 @@ check_spelling_py: .FORCE
"$(BLENDER_DIR)/tools"
check_spelling_c: .FORCE
@cd "$(BUILD_DIR)" ; \
PYTHONIOENCODING=utf_8 $(PYTHON) \
@PYTHONIOENCODING=utf_8 $(PYTHON) \
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
--cache-file=$(CHECK_SPELLING_CACHE) \
--match=".*\.(c|cc|cpp|cxx|h|hh|hpp|hxx|inl|m|mm)$$" \
@ -510,8 +508,7 @@ check_spelling_c: .FORCE
"$(BLENDER_DIR)/intern/ghost"
check_spelling_shaders: .FORCE
@cd "$(BUILD_DIR)" ; \
PYTHONIOENCODING=utf_8 $(PYTHON) \
@PYTHONIOENCODING=utf_8 $(PYTHON) \
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
--cache-file=$(CHECK_SPELLING_CACHE) \
--match=".*\.(osl|metal|msl|glsl)$$" \

View File

@ -7,6 +7,8 @@
#include "util/log.h"
#include "util/math.h"
#include <ostream>
CCL_NAMESPACE_BEGIN
std::ostream &operator<<(std::ostream &os, const TileSize &tile_size)

View File

@ -1533,6 +1533,11 @@ GHOST_TSuccess GHOST_WindowWayland::setWindowCursorShape(GHOST_TStandardCursor s
#endif
const GHOST_TSuccess ok = system_->cursor_shape_set(shape);
m_cursorShape = (ok == GHOST_kSuccess) ? shape : GHOST_kStandardCursorDefault;
if (ok == GHOST_kSuccess) {
/* For the cursor to display when the event queue isn't being handled. */
wl_display_flush(system_->wl_display_get());
}
return ok;
}
@ -1550,7 +1555,14 @@ GHOST_TSuccess GHOST_WindowWayland::setWindowCustomCursorShape(
#ifdef USE_EVENT_BACKGROUND_THREAD
std::lock_guard lock_server_guard{*system_->server_mutex};
#endif
return system_->cursor_shape_custom_set(bitmap, mask, sizex, sizey, hotX, hotY, canInvertColor);
const GHOST_TSuccess ok = system_->cursor_shape_custom_set(
bitmap, mask, sizex, sizey, hotX, hotY, canInvertColor);
if (ok == GHOST_kSuccess) {
/* For the cursor to display when the event queue isn't being handled. */
wl_display_flush(system_->wl_display_get());
}
return ok;
}
GHOST_TSuccess GHOST_WindowWayland::getCursorBitmap(GHOST_CursorBitmapRef *bitmap)
@ -1695,7 +1707,12 @@ GHOST_TSuccess GHOST_WindowWayland::setWindowCursorVisibility(bool visible)
#ifdef USE_EVENT_BACKGROUND_THREAD
std::lock_guard lock_server_guard{*system_->server_mutex};
#endif
return system_->cursor_visibility_set(visible);
const GHOST_TSuccess ok = system_->cursor_visibility_set(visible);
if (ok == GHOST_kSuccess) {
/* For the cursor to display when the event queue isn't being handled. */
wl_display_flush(system_->wl_display_get());
}
return ok;
}
GHOST_TSuccess GHOST_WindowWayland::setState(GHOST_TWindowState state)

View File

@ -55,6 +55,18 @@ class BakeOptions:
do_clean: bool
"""Remove redundant keyframes after baking."""
do_location: bool
"""Bake location channels"""
do_rotation: bool
"""Bake rotation channels"""
do_scale: bool
"""Bake scale channels"""
do_bbone: bool
"""Bake b-bone channels"""
def bake_action(
obj,
@ -307,13 +319,17 @@ def bake_action_iter(
paths_bbprops = [(base_fcurve_path + bbprop) for bbprop in BBONE_PROPS]
keyframes = KeyframesCo()
keyframes.add_paths(path_location, 3)
keyframes.add_paths(path_quaternion, 4)
keyframes.add_paths(path_axis_angle, 4)
keyframes.add_paths(path_euler, 3)
keyframes.add_paths(path_scale, 3)
if pbone.bone.bbone_segments > 1:
if bake_options.do_location:
keyframes.add_paths(path_location, 3)
if bake_options.do_rotation:
keyframes.add_paths(path_quaternion, 4)
keyframes.add_paths(path_axis_angle, 4)
keyframes.add_paths(path_euler, 3)
if bake_options.do_scale:
keyframes.add_paths(path_scale, 3)
if bake_options.do_bbone and pbone.bone.bbone_segments > 1:
for prop_name, path in zip(BBONE_PROPS, paths_bbprops):
keyframes.add_paths(path, BBONE_PROPS_LENGTHS[prop_name])
@ -322,32 +338,35 @@ def bake_action_iter(
for (f, matrix, bbones) in pose_info:
pbone.matrix_basis = matrix[name].copy()
keyframes.extend_co_values(path_location, 3, f, pbone.location)
if bake_options.do_location:
keyframes.extend_co_values(path_location, 3, f, pbone.location)
if rotation_mode == 'QUATERNION':
if quat_prev is not None:
quat = pbone.rotation_quaternion.copy()
quat.make_compatible(quat_prev)
pbone.rotation_quaternion = quat
quat_prev = quat
del quat
else:
quat_prev = pbone.rotation_quaternion.copy()
keyframes.extend_co_values(path_quaternion, 4, f, pbone.rotation_quaternion)
elif rotation_mode == 'AXIS_ANGLE':
keyframes.extend_co_values(path_axis_angle, 4, f, pbone.rotation_axis_angle)
else: # euler, XYZ, ZXY etc
if euler_prev is not None:
euler = pbone.matrix_basis.to_euler(pbone.rotation_mode, euler_prev)
pbone.rotation_euler = euler
del euler
euler_prev = pbone.rotation_euler.copy()
keyframes.extend_co_values(path_euler, 3, f, pbone.rotation_euler)
if bake_options.do_rotation:
if rotation_mode == 'QUATERNION':
if quat_prev is not None:
quat = pbone.rotation_quaternion.copy()
quat.make_compatible(quat_prev)
pbone.rotation_quaternion = quat
quat_prev = quat
del quat
else:
quat_prev = pbone.rotation_quaternion.copy()
keyframes.extend_co_values(path_quaternion, 4, f, pbone.rotation_quaternion)
elif rotation_mode == 'AXIS_ANGLE':
keyframes.extend_co_values(path_axis_angle, 4, f, pbone.rotation_axis_angle)
else: # euler, XYZ, ZXY etc
if euler_prev is not None:
euler = pbone.matrix_basis.to_euler(pbone.rotation_mode, euler_prev)
pbone.rotation_euler = euler
del euler
euler_prev = pbone.rotation_euler.copy()
keyframes.extend_co_values(path_euler, 3, f, pbone.rotation_euler)
keyframes.extend_co_values(path_scale, 3, f, pbone.scale)
if bake_options.do_scale:
keyframes.extend_co_values(path_scale, 3, f, pbone.scale)
# Bendy Bones
if pbone.bone.bbone_segments > 1:
if bake_options.do_bbone and pbone.bone.bbone_segments > 1:
bbone_shape = bbones[name]
for prop_index, prop_name in enumerate(BBONE_PROPS):
prop_len = BBONE_PROPS_LENGTHS[prop_name]
@ -382,11 +401,14 @@ def bake_action_iter(
path_scale = "scale"
keyframes = KeyframesCo()
keyframes.add_paths(path_location, 3)
keyframes.add_paths(path_quaternion, 4)
keyframes.add_paths(path_axis_angle, 4)
keyframes.add_paths(path_euler, 3)
keyframes.add_paths(path_scale, 3)
if bake_options.do_location:
keyframes.add_paths(path_location, 3)
if bake_options.do_rotation:
keyframes.add_paths(path_quaternion, 4)
keyframes.add_paths(path_axis_angle, 4)
keyframes.add_paths(path_euler, 3)
if bake_options.do_scale:
keyframes.add_paths(path_scale, 3)
rotation_mode = obj.rotation_mode
total_new_keys = len(obj_info)
@ -394,28 +416,31 @@ def bake_action_iter(
name = "Action Bake" # XXX: placeholder
obj.matrix_basis = matrix
keyframes.extend_co_values(path_location, 3, f, obj.location)
if bake_options.do_location:
keyframes.extend_co_values(path_location, 3, f, obj.location)
if rotation_mode == 'QUATERNION':
if quat_prev is not None:
quat = obj.rotation_quaternion.copy()
quat.make_compatible(quat_prev)
obj.rotation_quaternion = quat
quat_prev = quat
del quat
else:
quat_prev = obj.rotation_quaternion.copy()
keyframes.extend_co_values(path_quaternion, 4, f, obj.rotation_quaternion)
if bake_options.do_rotation:
if rotation_mode == 'QUATERNION':
if quat_prev is not None:
quat = obj.rotation_quaternion.copy()
quat.make_compatible(quat_prev)
obj.rotation_quaternion = quat
quat_prev = quat
del quat
else:
quat_prev = obj.rotation_quaternion.copy()
keyframes.extend_co_values(path_quaternion, 4, f, obj.rotation_quaternion)
elif rotation_mode == 'AXIS_ANGLE':
keyframes.extend_co_values(path_axis_angle, 4, f, obj.rotation_axis_angle)
else: # euler, XYZ, ZXY etc
if euler_prev is not None:
obj.rotation_euler = matrix.to_euler(obj.rotation_mode, euler_prev)
euler_prev = obj.rotation_euler.copy()
keyframes.extend_co_values(path_euler, 3, f, obj.rotation_euler)
elif rotation_mode == 'AXIS_ANGLE':
keyframes.extend_co_values(path_axis_angle, 4, f, obj.rotation_axis_angle)
else: # euler, XYZ, ZXY etc
if euler_prev is not None:
obj.rotation_euler = matrix.to_euler(obj.rotation_mode, euler_prev)
euler_prev = obj.rotation_euler.copy()
keyframes.extend_co_values(path_euler, 3, f, obj.rotation_euler)
keyframes.extend_co_values(path_scale, 3, f, obj.scale)
if bake_options.do_scale:
keyframes.extend_co_values(path_scale, 3, f, obj.scale)
if is_new_action:
keyframes.insert_keyframes_into_new_action(total_new_keys, action, name)

View File

@ -397,8 +397,10 @@ class InfoPropertyRNA:
type_str = (mathutils_fmt % "Euler") + " rotation" + dimension_str
elif self.array_length == 4:
type_str = (mathutils_fmt % "Quaternion") + " rotation" + dimension_str
elif self.subtype in {"COORDINATES", "TRANSLATION", "DIRECTION", "VELOCITY",
"ACCELERATION", "XYZ", "XYZ_LENGTH"}:
elif self.subtype in {
'COORDINATES', 'TRANSLATION', 'DIRECTION', 'VELOCITY',
'ACCELERATION', 'XYZ', 'XYZ_LENGTH',
}:
if 2 <= self.array_length <= 4:
type_str = (mathutils_fmt % "Vector") + dimension_str

View File

@ -4799,7 +4799,7 @@ def km_pose(params):
op_menu("VIEW3D_MT_bone_options_toggle", {"type": 'W', "value": 'PRESS', "shift": True}),
op_menu("VIEW3D_MT_bone_options_enable", {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True}),
op_menu("VIEW3D_MT_bone_options_disable", {"type": 'W', "value": 'PRESS', "alt": True}),
("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None),
("armature.collection_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None),
op_menu("VIEW3D_MT_bone_collections", {"type": 'M', "value": 'PRESS', "shift": True}),
("armature.move_to_collection", {"type": 'M', "value": 'PRESS'}, None),
("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
@ -5745,7 +5745,7 @@ def km_edit_armature(params):
op_menu("VIEW3D_MT_bone_options_enable", {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True}),
op_menu("VIEW3D_MT_bone_options_disable", {"type": 'W', "value": 'PRESS', "alt": True}),
# Armature/bone layers.
("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None),
("armature.collection_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None),
op_menu("VIEW3D_MT_bone_collections", {"type": 'M', "value": 'PRESS', "shift": True}),
("armature.move_to_collection", {"type": 'M', "value": 'PRESS'}, None),
# Special transforms.

View File

@ -447,8 +447,8 @@ def km_property_editor(params):
("object.modifier_remove", {"type": 'DEL', "value": 'PRESS'}, {"properties": [("report", True)]}),
("object.modifier_copy", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
# Grease pencil modifier panels
("object.gpencil_modifier_remove", {"type": 'BACK_SPACE',
"value": 'PRESS'}, {"properties": [("report", True)]}),
("object.gpencil_modifier_remove",
{"type": 'BACK_SPACE', "value": 'PRESS'}, {"properties": [("report", True)]}),
("object.gpencil_modifier_remove", {"type": 'DEL', "value": 'PRESS'}, {"properties": [("report", True)]}),
("object.gpencil_modifier_copy", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
# ShaderFX panels

View File

@ -252,6 +252,18 @@ class NLA_OT_bake(Operator):
),
default={'POSE'},
)
channel_types: EnumProperty(
name="Channels",
description="Which channels to bake",
options={'ENUM_FLAG'},
items=(
('LOCATION', "Location", "Bake location channels"),
('ROTATION', "Rotation", "Bake rotation channels"),
('SCALE', "Scale", "Bake scale channels"),
('BBONE', "B-Bone", "Bake b-bone channels"),
),
default={'LOCATION', 'ROTATION', 'SCALE', 'BBONE'},
)
def execute(self, context):
from bpy_extras import anim_utils
@ -263,7 +275,11 @@ class NLA_OT_bake(Operator):
do_visual_keying=self.visual_keying,
do_constraint_clear=self.clear_constraints,
do_parents_clear=self.clear_parents,
do_clean=self.clean_curves
do_clean=self.clean_curves,
do_location = 'LOCATION' in self.channel_types,
do_rotation = 'ROTATION' in self.channel_types,
do_scale = 'SCALE' in self.channel_types,
do_bbone = 'BBONE' in self.channel_types,
)
if bake_options.do_pose and self.only_selected:

View File

@ -89,15 +89,18 @@ def elems_depth_search(ele_init, depths, other_edges_over_cb, results_init=None)
if type(ele_init) is bmesh.types.BMFace:
test_ele = {
l.face for v, depth in vert_depths.items()
if depth >= depth_min for l in v.link_loops}
if depth >= depth_min for l in v.link_loops
}
elif type(ele_init) is bmesh.types.BMEdge:
test_ele = {
e for v, depth in vert_depths.items()
if depth >= depth_min for e in v.link_edges if not e.is_wire}
if depth >= depth_min for e in v.link_edges if not e.is_wire
}
else:
test_ele = {
v for v, depth in vert_depths.items()
if depth >= depth_min}
if depth >= depth_min
}
result_ele = set()

View File

@ -882,11 +882,12 @@ class CLIP_OT_setup_tracking_scene(Operator):
@staticmethod
def _getPlaneVertices(half_size, z):
return [(-half_size, -half_size, z),
(half_size, -half_size, z),
(half_size, half_size, z),
(-half_size, half_size, z)]
return [
(-half_size, -half_size, z),
(half_size, -half_size, z),
(half_size, half_size, z),
(-half_size, half_size, z),
]
def _createGround(self, collection):
vertices = self._getPlaneVertices(4.0, 0.0)

View File

@ -141,8 +141,10 @@ class MeshMirrorUV(Operator):
if is_editmode:
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
meshes = [ob.data for ob in context.view_layer.objects.selected
if ob.type == 'MESH' and ob.data.library is None]
meshes = [
ob.data for ob in context.view_layer.objects.selected
if ob.type == 'MESH' and ob.data.library is None
]
for mesh in meshes:
mesh.tag = False

View File

@ -280,10 +280,11 @@ class NODE_OT_interface_item_new(NodeInterfaceOperator, Operator):
item_type: EnumProperty(
name="Item Type",
description="Type of the item to create",
items=[
items=(
('INPUT', "Input", ""),
('OUTPUT', "Output", ""),
('PANEL', "Panel", "")],
('PANEL', "Panel", ""),
),
default='INPUT',
)

View File

@ -383,8 +383,7 @@ class ShapeTransfer(Operator):
ob_add_shape(ob_other, orig_key_name)
# editing the final coords, only list that stores wrapped coords
target_shape_coords = [v.co for v in
ob_other.active_shape_key.data]
target_shape_coords = [v.co for v in ob_other.active_shape_key.data]
median_coords = [[] for i in range(len(me.vertices))]
@ -464,8 +463,10 @@ class ShapeTransfer(Operator):
def execute(self, context):
ob_act = context.active_object
objects = [ob for ob in context.selected_editable_objects
if ob != ob_act]
objects = [
ob for ob in context.selected_editable_objects
if ob != ob_act
]
if 1: # swap from/to, means we can't copy to many at once.
if len(objects) != 1:
@ -603,9 +604,11 @@ class MakeDupliFace(Operator):
linked[obj.instance_collection].append(obj)
for data, objects in linked.items():
face_verts = [axis for obj in objects
for v in matrix_to_quad(obj.matrix_world)
for axis in v]
face_verts = [
axis for obj in objects
for v in matrix_to_quad(obj.matrix_world)
for axis in v
]
nbr_verts = len(face_verts) // 3
nbr_faces = nbr_verts // 4

View File

@ -265,8 +265,10 @@ class QuickExplode(ObjectModeOperator, Operator):
self.report({'ERROR'}, "Active object is not a mesh")
return {'CANCELLED'}
mesh_objects = [obj for obj in context.selected_objects
if obj.type == 'MESH' and obj != obj_act]
mesh_objects = [
obj for obj in context.selected_objects
if obj.type == 'MESH' and obj != obj_act
]
mesh_objects.insert(0, obj_act)
if self.style == 'BLEND' and len(mesh_objects) != 2:
@ -441,8 +443,10 @@ class QuickSmoke(ObjectModeOperator, Operator):
return {'CANCELLED'}
context_override = context.copy()
mesh_objects = [obj for obj in context.selected_objects
if obj.type == 'MESH']
mesh_objects = [
obj for obj in context.selected_objects
if obj.type == 'MESH'
]
min_co = Vector((100000.0, 100000.0, 100000.0))
max_co = -min_co
@ -547,8 +551,10 @@ class QuickLiquid(Operator):
return {'CANCELLED'}
context_override = context.copy()
mesh_objects = [obj for obj in context.selected_objects
if obj.type == 'MESH']
mesh_objects = [
obj for obj in context.selected_objects
if obj.type == 'MESH'
]
min_co = Vector((100000.0, 100000.0, 100000.0))
max_co = -min_co

View File

@ -147,7 +147,7 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
# to use the user setting, see: #61637
# "orient_type": 'NORMAL',
# Not a popular choice, too restrictive for retopo.
# "constraint_axis": (True, True, False)})
# "constraint_axis": (True, True, False),
"constraint_axis": (False, False, False),
"release_confirm": False,
"alt_navigation": alt_navigation,

View File

@ -3195,13 +3195,12 @@ class WM_MT_splash_quick_setup(Menu):
col = split.column()
col.operator(
"preferences.copy_prev",
text=iface_(
"Load Blender %d.%d Settings",
"Operator") %
old_version, icon='DUPLICATE',
translate=False)
text=iface_("Load Blender %d.%d Settings", "Operator") % old_version,
icon='DUPLICATE',
translate=False,
)
col.operator(
"wm.url_open", text="See What's New...", icon='URL'
"wm.url_open", text="See What's New...", icon='URL',
).url = "https://wiki.blender.org/wiki/Reference/Release_Notes/4.0"
col.separator(factor=2.0)

View File

@ -535,7 +535,8 @@ class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_property_type = bpy.types.Bone, bpy.types.EditBone, bpy.types.PoseBone
@property

View File

@ -29,7 +29,8 @@ class CAMERA_PT_presets(PresetPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
class CAMERA_PT_safe_areas_presets(PresetPanel, Panel):
@ -41,7 +42,8 @@ class CAMERA_PT_safe_areas_presets(PresetPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
class DATA_PT_context_camera(CameraButtonsPanel, Panel):
@ -51,7 +53,8 @@ class DATA_PT_context_camera(CameraButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -73,7 +76,8 @@ class DATA_PT_lens(CameraButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -146,7 +150,8 @@ class DATA_PT_camera_stereoscopy(CameraButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -199,7 +204,8 @@ class DATA_PT_camera(CameraButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header_preset(self, _context):
CAMERA_PT_presets.draw_panel_header(self.layout)
@ -284,7 +290,8 @@ class DATA_PT_camera_background_image(CameraButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
cam = context.camera
@ -395,7 +402,8 @@ class DATA_PT_camera_display(CameraButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -432,7 +440,8 @@ class DATA_PT_camera_display_composition_guides(CameraButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -463,7 +472,8 @@ class DATA_PT_camera_safe_areas(CameraButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
cam = context.camera
@ -497,7 +507,8 @@ class DATA_PT_camera_safe_areas_center_cut(CameraButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
cam = context.camera
@ -525,7 +536,8 @@ class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.Camera

View File

@ -123,7 +123,8 @@ class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -501,7 +502,8 @@ class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.Curve

View File

@ -25,7 +25,8 @@ class DATA_PT_context_curves(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -46,7 +47,8 @@ class DATA_PT_curves_surface(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -133,7 +135,8 @@ class DATA_PT_CURVES_attributes(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
curves = context.curves
@ -162,7 +165,8 @@ class DATA_PT_custom_props_curves(DataButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.Curves if hasattr(bpy.types, "Curves") else None

View File

@ -175,31 +175,31 @@ class DATA_PT_gpencil_layers(DataButtonsPanel, Panel):
class DATA_PT_gpencil_layer_masks(LayerDataButtonsPanel, GreasePencilLayerMasksPanel, Panel):
bl_label = "Masks"
bl_parent_id = 'DATA_PT_gpencil_layers'
bl_parent_id = "DATA_PT_gpencil_layers"
bl_options = {'DEFAULT_CLOSED'}
class DATA_PT_gpencil_layer_transform(LayerDataButtonsPanel, GreasePencilLayerTransformPanel, Panel):
bl_label = "Transform"
bl_parent_id = 'DATA_PT_gpencil_layers'
bl_parent_id = "DATA_PT_gpencil_layers"
bl_options = {'DEFAULT_CLOSED'}
class DATA_PT_gpencil_layer_adjustments(LayerDataButtonsPanel, GreasePencilLayerAdjustmentsPanel, Panel):
bl_label = "Adjustments"
bl_parent_id = 'DATA_PT_gpencil_layers'
bl_parent_id = "DATA_PT_gpencil_layers"
bl_options = {'DEFAULT_CLOSED'}
class DATA_PT_gpencil_layer_relations(LayerDataButtonsPanel, GreasePencilLayerRelationsPanel, Panel):
bl_label = "Relations"
bl_parent_id = 'DATA_PT_gpencil_layers'
bl_parent_id = "DATA_PT_gpencil_layers"
bl_options = {'DEFAULT_CLOSED'}
class DATA_PT_gpencil_layer_display(LayerDataButtonsPanel, GreasePencilLayerDisplayPanel, Panel):
bl_label = "Display"
bl_parent_id = 'DATA_PT_gpencil_layers'
bl_parent_id = "DATA_PT_gpencil_layers"
bl_options = {'DEFAULT_CLOSED'}
@ -390,7 +390,7 @@ class DATA_PT_gpencil_display(DataButtonsPanel, Panel):
class DATA_PT_gpencil_canvas(DataButtonsPanel, Panel):
bl_label = "Canvas"
bl_parent_id = 'DATA_PT_gpencil_display'
bl_parent_id = "DATA_PT_gpencil_display"
bl_options = {'DEFAULT_CLOSED'}
def draw(self, context):

View File

@ -71,7 +71,8 @@ class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.Lattice

View File

@ -26,7 +26,8 @@ class DATA_PT_context_light(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE_NEXT',
'BLENDER_EEVEE',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -251,7 +252,8 @@ class DATA_PT_spot(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE_NEXT',
'BLENDER_EEVEE',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -278,7 +280,8 @@ class DATA_PT_custom_props_light(DataButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE_NEXT',
'BLENDER_EEVEE',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.Light

View File

@ -167,7 +167,8 @@ class DATA_PT_context_mesh(MeshButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -189,7 +190,8 @@ class DATA_PT_texture_space(MeshButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -213,7 +215,8 @@ class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -275,7 +278,8 @@ class DATA_PT_shape_keys(MeshButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -376,7 +380,8 @@ class DATA_PT_uv_texture(MeshButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -402,7 +407,8 @@ class DATA_PT_remesh(MeshButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -436,7 +442,8 @@ class DATA_PT_customdata(MeshButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -460,7 +467,8 @@ class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.Mesh
@ -513,7 +521,8 @@ class DATA_PT_mesh_attributes(MeshButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
mesh = context.mesh
@ -646,7 +655,8 @@ class DATA_PT_vertex_colors(DATA_PT_mesh_attributes, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
mesh = context.mesh

View File

@ -63,7 +63,8 @@ class DATA_PT_mball_texture_space(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -122,7 +123,8 @@ class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.MetaBall

View File

@ -14,10 +14,14 @@ class ModifierButtonsPanel:
class ModifierAddMenu:
MODIFIER_TYPES_TO_LABELS = {enum_it.identifier: enum_it.name
for enum_it in bpy.types.Modifier.bl_rna.properties['type'].enum_items_static}
MODIFIER_TYPES_TO_ICONS = {enum_it.identifier: enum_it.icon
for enum_it in bpy.types.Modifier.bl_rna.properties['type'].enum_items_static}
MODIFIER_TYPES_TO_LABELS = {
enum_it.identifier: enum_it.name
for enum_it in bpy.types.Modifier.bl_rna.properties['type'].enum_items_static
}
MODIFIER_TYPES_TO_ICONS = {
enum_it.identifier: enum_it.icon
for enum_it in bpy.types.Modifier.bl_rna.properties['type'].enum_items_static
}
MODIFIER_TYPES_I18N_CONTEXT = bpy.types.Modifier.bl_rna.properties['type'].translation_context
@classmethod

View File

@ -25,7 +25,8 @@ class DATA_PT_context_pointcloud(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -108,7 +109,8 @@ class DATA_PT_pointcloud_attributes(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
pointcloud = context.pointcloud
@ -137,7 +139,8 @@ class DATA_PT_custom_props_pointcloud(DataButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.PointCloud if hasattr(bpy.types, "PointCloud") else None

View File

@ -25,7 +25,8 @@ class DATA_PT_context_speaker(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -46,7 +47,8 @@ class DATA_PT_speaker(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -72,7 +74,8 @@ class DATA_PT_distance(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -100,7 +103,8 @@ class DATA_PT_cone(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -126,7 +130,8 @@ class DATA_PT_custom_props_speaker(DataButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.Speaker

View File

@ -25,7 +25,8 @@ class DATA_PT_context_volume(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -46,7 +47,8 @@ class DATA_PT_volume_file(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -95,7 +97,8 @@ class DATA_PT_volume_grids(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -112,7 +115,8 @@ class DATA_PT_volume_render(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -148,7 +152,8 @@ class DATA_PT_volume_viewport_display(DataButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -171,12 +176,13 @@ class DATA_PT_volume_viewport_display(DataButtonsPanel, Panel):
class DATA_PT_volume_viewport_display_slicing(DataButtonsPanel, Panel):
bl_label = ""
bl_parent_id = 'DATA_PT_volume_viewport_display'
bl_parent_id = "DATA_PT_volume_viewport_display"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
layout = self.layout
@ -206,7 +212,8 @@ class DATA_PT_custom_props_volume(DataButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "object.data"
_property_type = bpy.types.Volume

View File

@ -68,7 +68,8 @@ class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "material"
_property_type = bpy.types.Material

View File

@ -115,7 +115,7 @@ class MATERIAL_PT_gpencil_surface(GPMaterialButtonsPanel, Panel):
class MATERIAL_PT_gpencil_strokecolor(GPMaterialButtonsPanel, Panel):
bl_label = "Stroke"
bl_parent_id = 'MATERIAL_PT_gpencil_surface'
bl_parent_id = "MATERIAL_PT_gpencil_surface"
def draw_header(self, context):
ma = context.material
@ -164,7 +164,7 @@ class MATERIAL_PT_gpencil_strokecolor(GPMaterialButtonsPanel, Panel):
class MATERIAL_PT_gpencil_fillcolor(GPMaterialButtonsPanel, Panel):
bl_label = "Fill"
bl_parent_id = 'MATERIAL_PT_gpencil_surface'
bl_parent_id = "MATERIAL_PT_gpencil_surface"
def draw_header(self, context):
ma = context.material

View File

@ -49,7 +49,8 @@ class RENDER_PT_format(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_frame_rate_args_prev = None
_preset_class = None
@ -131,7 +132,8 @@ class RENDER_PT_frame_range(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -154,7 +156,8 @@ class RENDER_PT_time_stretching(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -175,7 +178,8 @@ class RENDER_PT_post_processing(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -197,7 +201,8 @@ class RENDER_PT_stamp(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -235,7 +240,8 @@ class RENDER_PT_stamp_note(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
rd = context.scene.render
@ -259,7 +265,8 @@ class RENDER_PT_stamp_burn(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
rd = context.scene.render
@ -287,7 +294,8 @@ class RENDER_PT_output(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -320,7 +328,8 @@ class RENDER_PT_output_views(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -344,7 +353,8 @@ class RENDER_PT_output_color_management(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
scene = context.scene
@ -383,7 +393,8 @@ class RENDER_PT_encoding(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header_preset(self, _context):
RENDER_PT_ffmpeg_presets.draw_panel_header(self.layout)
@ -412,7 +423,8 @@ class RENDER_PT_encoding_video(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -492,7 +504,8 @@ class RENDER_PT_encoding_audio(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -538,7 +551,8 @@ class RENDER_PT_stereoscopy(RenderOutputButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
bl_options = {'DEFAULT_CLOSED'}
def draw_header(self, context):

View File

@ -59,7 +59,8 @@ class PARTICLE_MT_context_menu(Menu):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -102,7 +103,8 @@ class PARTICLE_PT_hair_dynamics_presets(PresetPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
class ParticleButtonsPanel:
@ -160,7 +162,8 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -258,7 +261,8 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -314,7 +318,8 @@ class PARTICLE_PT_emission_source(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -355,7 +360,8 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -442,7 +448,8 @@ class PARTICLE_PT_hair_dynamics_collision(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -478,7 +485,8 @@ class PARTICLE_PT_hair_dynamics_structure(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -513,7 +521,8 @@ class PARTICLE_PT_hair_dynamics_volume(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -548,7 +557,8 @@ class PARTICLE_PT_cache(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -585,7 +595,8 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -638,7 +649,8 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -697,7 +709,8 @@ class PARTICLE_PT_rotation_angular_velocity(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -726,7 +739,8 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -783,7 +797,8 @@ class PARTICLE_PT_physics_fluid_advanced(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -832,7 +847,8 @@ class PARTICLE_PT_physics_fluid_springs(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -860,7 +876,8 @@ class PARTICLE_PT_physics_fluid_springs_viscoelastic(ParticleButtonsPanel, Panel
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -900,7 +917,8 @@ class PARTICLE_PT_physics_fluid_springs_advanced(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -928,7 +946,8 @@ class PARTICLE_PT_physics_boids_movement(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -985,7 +1004,8 @@ class PARTICLE_PT_physics_boids_battle(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1016,7 +1036,8 @@ class PARTICLE_PT_physics_boids_misc(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1045,7 +1066,8 @@ class PARTICLE_PT_physics_relations(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1104,7 +1126,8 @@ class PARTICLE_PT_physics_fluid_interaction(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1149,7 +1172,8 @@ class PARTICLE_PT_physics_deflection(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1179,7 +1203,8 @@ class PARTICLE_PT_physics_forces(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1210,7 +1235,8 @@ class PARTICLE_PT_physics_integration(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1248,7 +1274,8 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1350,7 +1377,8 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1401,7 +1429,8 @@ class PARTICLE_PT_render_extra(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1429,7 +1458,8 @@ class PARTICLE_PT_render_path(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1455,7 +1485,8 @@ class PARTICLE_PT_render_path_timing(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1487,7 +1518,8 @@ class PARTICLE_PT_render_object(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1516,7 +1548,8 @@ class PARTICLE_PT_render_collection(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1550,7 +1583,8 @@ class PARTICLE_PT_render_collection_use_count(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1602,7 +1636,8 @@ class PARTICLE_PT_draw(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1665,7 +1700,8 @@ class PARTICLE_PT_children(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1722,7 +1758,8 @@ class PARTICLE_PT_children_parting(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1757,7 +1794,8 @@ class PARTICLE_PT_children_clumping(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1797,7 +1835,8 @@ class PARTICLE_PT_children_clumping_noise(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
@ -1825,7 +1864,8 @@ class PARTICLE_PT_children_roughness(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1870,7 +1910,8 @@ class PARTICLE_PT_children_kink(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1924,7 +1965,8 @@ class PARTICLE_PT_field_weights(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1949,7 +1991,8 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -1969,7 +2012,8 @@ class PARTICLE_PT_force_fields_type1(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -1990,7 +2034,8 @@ class PARTICLE_PT_force_fields_type2(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -2012,7 +2057,8 @@ class PARTICLE_PT_force_fields_type1_falloff(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -2032,7 +2078,8 @@ class PARTICLE_PT_force_fields_type2_falloff(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -2051,7 +2098,8 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -2144,7 +2192,8 @@ class PARTICLE_PT_textures(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -2180,7 +2229,8 @@ class PARTICLE_PT_hair_shape(ParticleButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -2212,7 +2262,8 @@ class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "particle_system.settings"
_property_type = bpy.types.ParticleSettings

View File

@ -41,7 +41,8 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header_preset(self, _context):
CLOTH_PT_presets.draw_panel_header(self.layout)
@ -65,12 +66,13 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_physical_properties(PhysicButtonsPanel, Panel):
bl_label = "Physical Properties"
bl_parent_id = 'PHYSICS_PT_cloth'
bl_parent_id = "PHYSICS_PT_cloth"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -93,12 +95,13 @@ class PHYSICS_PT_cloth_physical_properties(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel):
bl_label = "Stiffness"
bl_parent_id = 'PHYSICS_PT_cloth_physical_properties'
bl_parent_id = "PHYSICS_PT_cloth_physical_properties"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -128,12 +131,13 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_damping(PhysicButtonsPanel, Panel):
bl_label = "Damping"
bl_parent_id = 'PHYSICS_PT_cloth_physical_properties'
bl_parent_id = "PHYSICS_PT_cloth_physical_properties"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -163,12 +167,13 @@ class PHYSICS_PT_cloth_damping(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_internal_springs(PhysicButtonsPanel, Panel):
bl_label = "Internal Springs"
bl_parent_id = 'PHYSICS_PT_cloth_physical_properties'
bl_parent_id = "PHYSICS_PT_cloth_physical_properties"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
cloth = context.cloth.settings
@ -209,12 +214,13 @@ class PHYSICS_PT_cloth_internal_springs(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_pressure(PhysicButtonsPanel, Panel):
bl_label = "Pressure"
bl_parent_id = 'PHYSICS_PT_cloth_physical_properties'
bl_parent_id = "PHYSICS_PT_cloth_physical_properties"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
cloth = context.cloth.settings
@ -256,13 +262,14 @@ class PHYSICS_PT_cloth_pressure(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, Panel):
bl_label = "Cache"
bl_parent_id = 'PHYSICS_PT_cloth'
bl_parent_id = "PHYSICS_PT_cloth"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
md = context.cloth
@ -271,13 +278,14 @@ class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_shape(PhysicButtonsPanel, Panel):
bl_label = "Shape"
bl_parent_id = 'PHYSICS_PT_cloth'
bl_parent_id = "PHYSICS_PT_cloth"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -325,13 +333,14 @@ class PHYSICS_PT_cloth_shape(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel):
bl_label = "Collisions"
bl_parent_id = 'PHYSICS_PT_cloth'
bl_parent_id = "PHYSICS_PT_cloth"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -350,12 +359,13 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_object_collision(PhysicButtonsPanel, Panel):
bl_label = "Object Collisions"
bl_parent_id = 'PHYSICS_PT_cloth_collision'
bl_parent_id = "PHYSICS_PT_cloth_collision"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
cloth = context.cloth.collision_settings
@ -390,12 +400,13 @@ class PHYSICS_PT_cloth_object_collision(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_self_collision(PhysicButtonsPanel, Panel):
bl_label = "Self Collisions"
bl_parent_id = 'PHYSICS_PT_cloth_collision'
bl_parent_id = "PHYSICS_PT_cloth_collision"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
cloth = context.cloth.collision_settings
@ -430,13 +441,14 @@ class PHYSICS_PT_cloth_self_collision(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_property_weights(PhysicButtonsPanel, Panel):
bl_label = "Property Weights"
bl_parent_id = 'PHYSICS_PT_cloth'
bl_parent_id = "PHYSICS_PT_cloth"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -488,13 +500,14 @@ class PHYSICS_PT_cloth_property_weights(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel, Panel):
bl_label = "Field Weights"
bl_parent_id = 'PHYSICS_PT_cloth'
bl_parent_id = "PHYSICS_PT_cloth"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
cloth = context.cloth.settings

View File

@ -57,7 +57,8 @@ class PHYSICS_PT_add(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout

View File

@ -89,7 +89,8 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -109,12 +110,13 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
class PHYSICS_PT_dynamic_paint_settings(PhysicButtonsPanel, Panel):
bl_label = "Settings"
bl_parent_id = 'PHYSICS_PT_dynamic_paint'
bl_parent_id = "PHYSICS_PT_dynamic_paint"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -202,7 +204,8 @@ class PHYSICS_PT_dp_surface_canvas(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -269,7 +272,8 @@ class PHYSICS_PT_dp_surface_canvas_paint_dry(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -309,7 +313,8 @@ class PHYSICS_PT_dp_surface_canvas_paint_dissolve(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -350,7 +355,8 @@ class PHYSICS_PT_dp_canvas_output(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -430,7 +436,8 @@ class PHYSICS_PT_dp_canvas_output_paintmaps(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -464,7 +471,8 @@ class PHYSICS_PT_dp_canvas_output_wetmaps(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -498,7 +506,8 @@ class PHYSICS_PT_dp_canvas_initial_color(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -536,13 +545,14 @@ class PHYSICS_PT_dp_canvas_initial_color(PhysicButtonsPanel, Panel):
class PHYSICS_PT_dp_effects(PhysicButtonsPanel, Panel):
bl_label = "Effects"
bl_parent_id = 'PHYSICS_PT_dynamic_paint'
bl_parent_id = "PHYSICS_PT_dynamic_paint"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -563,7 +573,8 @@ class PHYSICS_PT_dp_effects_spread(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -602,7 +613,8 @@ class PHYSICS_PT_dp_effects_drip(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -642,7 +654,8 @@ class PHYSICS_PT_dp_effects_drip_weights(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -670,7 +683,8 @@ class PHYSICS_PT_dp_effects_shrink(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -704,7 +718,8 @@ class PHYSICS_PT_dp_cache(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -728,7 +743,8 @@ class PHYSICS_PT_dp_brush_source(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -795,7 +811,8 @@ class PHYSICS_PT_dp_brush_source_color_ramp(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -826,7 +843,8 @@ class PHYSICS_PT_dp_brush_velocity(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -861,7 +879,8 @@ class PHYSICS_PT_dp_brush_velocity_color_ramp(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -886,7 +905,8 @@ class PHYSICS_PT_dp_brush_velocity_smudge(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -918,7 +938,8 @@ class PHYSICS_PT_dp_brush_wave(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):

View File

@ -33,7 +33,8 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -54,12 +55,13 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
class PHYSICS_PT_field_settings(PhysicButtonsPanel, Panel):
bl_label = "Settings"
bl_parent_id = 'PHYSICS_PT_field'
bl_parent_id = "PHYSICS_PT_field"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -145,12 +147,13 @@ class PHYSICS_PT_field_settings(PhysicButtonsPanel, Panel):
class PHYSICS_PT_field_settings_kink(PhysicButtonsPanel, Panel):
bl_label = "Kink"
bl_parent_id = 'PHYSICS_PT_field_settings'
bl_parent_id = "PHYSICS_PT_field_settings"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -183,12 +186,13 @@ class PHYSICS_PT_field_settings_kink(PhysicButtonsPanel, Panel):
class PHYSICS_PT_field_settings_texture_select(PhysicButtonsPanel, Panel):
bl_label = "Texture"
bl_parent_id = 'PHYSICS_PT_field_settings'
bl_parent_id = "PHYSICS_PT_field_settings"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -214,7 +218,8 @@ class PHYSICS_PT_field_falloff(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -243,7 +248,8 @@ class PHYSICS_PT_field_falloff_angular(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -286,7 +292,8 @@ class PHYSICS_PT_field_falloff_radial(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -334,7 +341,8 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -369,7 +377,8 @@ class PHYSICS_PT_collision_particle(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -419,7 +428,8 @@ class PHYSICS_PT_collision_softbody(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):

View File

@ -102,7 +102,8 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -125,12 +126,13 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
class PHYSICS_PT_settings(PhysicButtonsPanel, Panel):
bl_label = "Settings"
bl_parent_id = 'PHYSICS_PT_fluid'
bl_parent_id = "PHYSICS_PT_fluid"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -292,12 +294,13 @@ class PHYSICS_PT_settings(PhysicButtonsPanel, Panel):
class PHYSICS_PT_borders(PhysicButtonsPanel, Panel):
bl_label = "Border Collisions"
bl_parent_id = 'PHYSICS_PT_settings'
bl_parent_id = "PHYSICS_PT_settings"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -329,12 +332,13 @@ class PHYSICS_PT_borders(PhysicButtonsPanel, Panel):
class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
bl_label = "Gas"
bl_parent_id = 'PHYSICS_PT_fluid'
bl_parent_id = "PHYSICS_PT_fluid"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -365,13 +369,14 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
class PHYSICS_PT_smoke_dissolve(PhysicButtonsPanel, Panel):
bl_label = "Dissolve"
bl_parent_id = 'PHYSICS_PT_smoke'
bl_parent_id = "PHYSICS_PT_smoke"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -413,13 +418,14 @@ class PHYSICS_PT_smoke_dissolve(PhysicButtonsPanel, Panel):
class PHYSICS_PT_fire(PhysicButtonsPanel, Panel):
bl_label = "Fire"
bl_parent_id = 'PHYSICS_PT_smoke'
bl_parent_id = "PHYSICS_PT_smoke"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -457,12 +463,13 @@ class PHYSICS_PT_fire(PhysicButtonsPanel, Panel):
class PHYSICS_PT_liquid(PhysicButtonsPanel, Panel):
bl_label = "Liquid"
bl_parent_id = 'PHYSICS_PT_fluid'
bl_parent_id = "PHYSICS_PT_fluid"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -523,13 +530,14 @@ class PHYSICS_PT_liquid(PhysicButtonsPanel, Panel):
class PHYSICS_PT_flow_source(PhysicButtonsPanel, Panel):
bl_label = "Flow Source"
bl_parent_id = 'PHYSICS_PT_settings'
bl_parent_id = "PHYSICS_PT_settings"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -569,12 +577,13 @@ class PHYSICS_PT_flow_source(PhysicButtonsPanel, Panel):
class PHYSICS_PT_flow_initial_velocity(PhysicButtonsPanel, Panel):
bl_label = "Initial Velocity"
bl_parent_id = 'PHYSICS_PT_settings'
bl_parent_id = "PHYSICS_PT_settings"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -614,13 +623,14 @@ class PHYSICS_PT_flow_initial_velocity(PhysicButtonsPanel, Panel):
class PHYSICS_PT_flow_texture(PhysicButtonsPanel, Panel):
bl_label = "Texture"
bl_parent_id = 'PHYSICS_PT_settings'
bl_parent_id = "PHYSICS_PT_settings"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -669,13 +679,14 @@ class PHYSICS_PT_flow_texture(PhysicButtonsPanel, Panel):
class PHYSICS_PT_adaptive_domain(PhysicButtonsPanel, Panel):
bl_label = "Adaptive Domain"
bl_parent_id = 'PHYSICS_PT_settings'
bl_parent_id = "PHYSICS_PT_settings"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -725,13 +736,14 @@ class PHYSICS_PT_adaptive_domain(PhysicButtonsPanel, Panel):
class PHYSICS_PT_noise(PhysicButtonsPanel, Panel):
bl_label = "Noise"
bl_parent_id = 'PHYSICS_PT_smoke'
bl_parent_id = "PHYSICS_PT_smoke"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -809,13 +821,14 @@ class PHYSICS_PT_noise(PhysicButtonsPanel, Panel):
class PHYSICS_PT_mesh(PhysicButtonsPanel, Panel):
bl_label = "Mesh"
bl_parent_id = 'PHYSICS_PT_liquid'
bl_parent_id = "PHYSICS_PT_liquid"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -908,13 +921,14 @@ class PHYSICS_PT_mesh(PhysicButtonsPanel, Panel):
class PHYSICS_PT_particles(PhysicButtonsPanel, Panel):
bl_label = "Particles"
bl_parent_id = 'PHYSICS_PT_liquid'
bl_parent_id = "PHYSICS_PT_liquid"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1043,13 +1057,14 @@ class PHYSICS_PT_particles(PhysicButtonsPanel, Panel):
class PHYSICS_PT_viscosity(PhysicButtonsPanel, Panel):
bl_label = "Viscosity"
bl_parent_id = 'PHYSICS_PT_liquid'
bl_parent_id = "PHYSICS_PT_liquid"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1087,13 +1102,14 @@ class PHYSICS_PT_viscosity(PhysicButtonsPanel, Panel):
class PHYSICS_PT_diffusion(PhysicButtonsPanel, Panel):
bl_label = "Diffusion"
bl_parent_id = 'PHYSICS_PT_liquid'
bl_parent_id = "PHYSICS_PT_liquid"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1138,13 +1154,14 @@ class PHYSICS_PT_diffusion(PhysicButtonsPanel, Panel):
class PHYSICS_PT_guide(PhysicButtonsPanel, Panel):
bl_label = "Guides"
bl_parent_id = 'PHYSICS_PT_fluid'
bl_parent_id = "PHYSICS_PT_fluid"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1208,13 +1225,14 @@ class PHYSICS_PT_guide(PhysicButtonsPanel, Panel):
class PHYSICS_PT_collections(PhysicButtonsPanel, Panel):
bl_label = "Collections"
bl_parent_id = 'PHYSICS_PT_fluid'
bl_parent_id = "PHYSICS_PT_fluid"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1240,12 +1258,13 @@ class PHYSICS_PT_collections(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cache(PhysicButtonsPanel, Panel):
bl_label = "Cache"
bl_parent_id = 'PHYSICS_PT_fluid'
bl_parent_id = "PHYSICS_PT_fluid"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1327,13 +1346,14 @@ class PHYSICS_PT_cache(PhysicButtonsPanel, Panel):
class PHYSICS_PT_export(PhysicButtonsPanel, Panel):
bl_label = "Advanced"
bl_parent_id = 'PHYSICS_PT_cache'
bl_parent_id = "PHYSICS_PT_cache"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1376,13 +1396,14 @@ class PHYSICS_PT_export(PhysicButtonsPanel, Panel):
class PHYSICS_PT_field_weights(PhysicButtonsPanel, Panel):
bl_label = "Field Weights"
bl_parent_id = 'PHYSICS_PT_fluid'
bl_parent_id = "PHYSICS_PT_fluid"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -1398,7 +1419,7 @@ class PHYSICS_PT_field_weights(PhysicButtonsPanel, Panel):
class PHYSICS_PT_viewport_display(PhysicButtonsPanel, Panel):
bl_label = "Viewport Display"
bl_parent_id = 'PHYSICS_PT_fluid'
bl_parent_id = "PHYSICS_PT_fluid"
bl_options = {'DEFAULT_CLOSED'}
@classmethod
@ -1428,7 +1449,7 @@ class PHYSICS_PT_viewport_display(PhysicButtonsPanel, Panel):
class PHYSICS_PT_viewport_display_slicing(PhysicButtonsPanel, Panel):
bl_label = "Slice"
bl_parent_id = 'PHYSICS_PT_viewport_display'
bl_parent_id = "PHYSICS_PT_viewport_display"
bl_options = {'DEFAULT_CLOSED'}
@classmethod
@ -1460,7 +1481,7 @@ class PHYSICS_PT_viewport_display_slicing(PhysicButtonsPanel, Panel):
class PHYSICS_PT_viewport_display_color(PhysicButtonsPanel, Panel):
bl_label = "Grid Display"
bl_parent_id = 'PHYSICS_PT_viewport_display'
bl_parent_id = "PHYSICS_PT_viewport_display"
bl_options = {'DEFAULT_CLOSED'}
@classmethod
@ -1493,7 +1514,7 @@ class PHYSICS_PT_viewport_display_color(PhysicButtonsPanel, Panel):
class PHYSICS_PT_viewport_display_debug(PhysicButtonsPanel, Panel):
bl_label = "Vector Display"
bl_parent_id = 'PHYSICS_PT_viewport_display'
bl_parent_id = "PHYSICS_PT_viewport_display"
bl_options = {'DEFAULT_CLOSED'}
@classmethod
@ -1534,7 +1555,7 @@ class PHYSICS_PT_viewport_display_debug(PhysicButtonsPanel, Panel):
class PHYSICS_PT_viewport_display_advanced(PhysicButtonsPanel, Panel):
bl_label = "Advanced"
bl_parent_id = 'PHYSICS_PT_viewport_display'
bl_parent_id = "PHYSICS_PT_viewport_display"
bl_options = {'DEFAULT_CLOSED'}
@classmethod
@ -1569,13 +1590,14 @@ class PHYSICS_PT_viewport_display_advanced(PhysicButtonsPanel, Panel):
class PHYSICS_PT_fluid_domain_render(PhysicButtonsPanel, Panel):
bl_label = "Render"
bl_parent_id = 'PHYSICS_PT_fluid'
bl_parent_id = "PHYSICS_PT_fluid"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):

View File

@ -25,7 +25,8 @@ class PHYSICS_PT_rigid_body(PHYSICS_PT_rigidbody_panel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -59,12 +60,13 @@ class PHYSICS_PT_rigid_body(PHYSICS_PT_rigidbody_panel, Panel):
class PHYSICS_PT_rigid_body_settings(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Settings"
bl_parent_id = 'PHYSICS_PT_rigid_body'
bl_parent_id = "PHYSICS_PT_rigid_body"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -95,12 +97,13 @@ class PHYSICS_PT_rigid_body_settings(PHYSICS_PT_rigidbody_panel, Panel):
class PHYSICS_PT_rigid_body_collisions(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Collisions"
bl_parent_id = 'PHYSICS_PT_rigid_body'
bl_parent_id = "PHYSICS_PT_rigid_body"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -148,13 +151,14 @@ class PHYSICS_PT_rigid_body_collisions(PHYSICS_PT_rigidbody_panel, Panel):
class PHYSICS_PT_rigid_body_collisions_surface(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Surface Response"
bl_parent_id = 'PHYSICS_PT_rigid_body_collisions'
bl_parent_id = "PHYSICS_PT_rigid_body_collisions"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -180,13 +184,14 @@ class PHYSICS_PT_rigid_body_collisions_surface(PHYSICS_PT_rigidbody_panel, Panel
class PHYSICS_PT_rigid_body_collisions_sensitivity(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Sensitivity"
bl_parent_id = 'PHYSICS_PT_rigid_body_collisions'
bl_parent_id = "PHYSICS_PT_rigid_body_collisions"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -221,13 +226,14 @@ class PHYSICS_PT_rigid_body_collisions_sensitivity(PHYSICS_PT_rigidbody_panel, P
class PHYSICS_PT_rigid_body_collisions_collections(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Collections"
bl_parent_id = 'PHYSICS_PT_rigid_body_collisions'
bl_parent_id = "PHYSICS_PT_rigid_body_collisions"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -247,13 +253,14 @@ class PHYSICS_PT_rigid_body_collisions_collections(PHYSICS_PT_rigidbody_panel, P
class PHYSICS_PT_rigid_body_dynamics(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Dynamics"
bl_parent_id = 'PHYSICS_PT_rigid_body'
bl_parent_id = "PHYSICS_PT_rigid_body"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -284,13 +291,14 @@ class PHYSICS_PT_rigid_body_dynamics(PHYSICS_PT_rigidbody_panel, Panel):
class PHYSICS_PT_rigid_body_dynamics_deactivation(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Deactivation"
bl_parent_id = 'PHYSICS_PT_rigid_body_dynamics'
bl_parent_id = "PHYSICS_PT_rigid_body_dynamics"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):

View File

@ -19,7 +19,8 @@ class PHYSICS_PT_rigid_body_constraint(PHYSICS_PT_rigidbody_constraint_panel, Pa
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -38,12 +39,13 @@ class PHYSICS_PT_rigid_body_constraint(PHYSICS_PT_rigidbody_constraint_panel, Pa
class PHYSICS_PT_rigid_body_constraint_settings(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Settings"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -73,12 +75,13 @@ class PHYSICS_PT_rigid_body_constraint_settings(PHYSICS_PT_rigidbody_constraint_
class PHYSICS_PT_rigid_body_constraint_objects(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Objects"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -98,12 +101,13 @@ class PHYSICS_PT_rigid_body_constraint_objects(PHYSICS_PT_rigidbody_constraint_p
class PHYSICS_PT_rigid_body_constraint_override_iterations(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Override Iterations"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -128,12 +132,13 @@ class PHYSICS_PT_rigid_body_constraint_override_iterations(PHYSICS_PT_rigidbody_
class PHYSICS_PT_rigid_body_constraint_limits(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Limits"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -149,12 +154,13 @@ class PHYSICS_PT_rigid_body_constraint_limits(PHYSICS_PT_rigidbody_constraint_pa
class PHYSICS_PT_rigid_body_constraint_limits_linear(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Linear"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_limits'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint_limits"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -210,12 +216,13 @@ class PHYSICS_PT_rigid_body_constraint_limits_linear(PHYSICS_PT_rigidbody_constr
class PHYSICS_PT_rigid_body_constraint_limits_angular(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Angular"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_limits'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint_limits"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -280,12 +287,13 @@ class PHYSICS_PT_rigid_body_constraint_limits_angular(PHYSICS_PT_rigidbody_const
class PHYSICS_PT_rigid_body_constraint_motor(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Motor"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -301,12 +309,13 @@ class PHYSICS_PT_rigid_body_constraint_motor(PHYSICS_PT_rigidbody_constraint_pan
class PHYSICS_PT_rigid_body_constraint_motor_angular(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Angular"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_motor'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint_motor"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -341,12 +350,13 @@ class PHYSICS_PT_rigid_body_constraint_motor_angular(PHYSICS_PT_rigidbody_constr
class PHYSICS_PT_rigid_body_constraint_motor_linear(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Linear"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_motor'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint_motor"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -381,12 +391,13 @@ class PHYSICS_PT_rigid_body_constraint_motor_linear(PHYSICS_PT_rigidbody_constra
class PHYSICS_PT_rigid_body_constraint_springs(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Springs"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -409,12 +420,13 @@ class PHYSICS_PT_rigid_body_constraint_springs(PHYSICS_PT_rigidbody_constraint_p
class PHYSICS_PT_rigid_body_constraint_springs_angular(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Angular"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_springs'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint_springs"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -461,12 +473,13 @@ class PHYSICS_PT_rigid_body_constraint_springs_angular(PHYSICS_PT_rigidbody_cons
class PHYSICS_PT_rigid_body_constraint_springs_linear(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Linear"
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_springs'
bl_parent_id = "PHYSICS_PT_rigid_body_constraint_springs"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):

View File

@ -34,7 +34,8 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -48,13 +49,14 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_object(PhysicButtonsPanel, Panel):
bl_label = "Object"
bl_parent_id = 'PHYSICS_PT_softbody'
bl_parent_id = "PHYSICS_PT_softbody"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -80,13 +82,14 @@ class PHYSICS_PT_softbody_object(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_simulation(PhysicButtonsPanel, Panel):
bl_label = "Simulation"
bl_parent_id = 'PHYSICS_PT_softbody'
bl_parent_id = "PHYSICS_PT_softbody"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -102,13 +105,14 @@ class PHYSICS_PT_softbody_simulation(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, Panel):
bl_label = "Cache"
bl_parent_id = 'PHYSICS_PT_softbody'
bl_parent_id = "PHYSICS_PT_softbody"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
md = context.soft_body
@ -117,13 +121,14 @@ class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel):
bl_label = "Goal"
bl_parent_id = 'PHYSICS_PT_softbody'
bl_parent_id = "PHYSICS_PT_softbody"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
softbody = context.soft_body.settings
@ -146,13 +151,14 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_goal_strengths(PhysicButtonsPanel, Panel):
bl_label = "Strengths"
bl_parent_id = 'PHYSICS_PT_softbody_goal'
bl_parent_id = "PHYSICS_PT_softbody_goal"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -176,13 +182,14 @@ class PHYSICS_PT_softbody_goal_strengths(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_goal_settings(PhysicButtonsPanel, Panel):
bl_label = "Settings"
bl_parent_id = 'PHYSICS_PT_softbody_goal'
bl_parent_id = "PHYSICS_PT_softbody_goal"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -203,13 +210,14 @@ class PHYSICS_PT_softbody_goal_settings(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
bl_label = "Edges"
bl_parent_id = 'PHYSICS_PT_softbody'
bl_parent_id = "PHYSICS_PT_softbody"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
softbody = context.soft_body.settings
@ -258,13 +266,14 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_edge_aerodynamics(PhysicButtonsPanel, Panel):
bl_label = "Aerodynamics"
bl_parent_id = 'PHYSICS_PT_softbody_edge'
bl_parent_id = "PHYSICS_PT_softbody_edge"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -285,13 +294,14 @@ class PHYSICS_PT_softbody_edge_aerodynamics(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_edge_stiffness(PhysicButtonsPanel, Panel):
bl_label = "Stiffness"
bl_parent_id = 'PHYSICS_PT_softbody_edge'
bl_parent_id = "PHYSICS_PT_softbody_edge"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
softbody = context.soft_body.settings
@ -313,13 +323,14 @@ class PHYSICS_PT_softbody_edge_stiffness(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
bl_label = "Self Collision"
bl_parent_id = 'PHYSICS_PT_softbody'
bl_parent_id = "PHYSICS_PT_softbody"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
softbody = context.soft_body.settings
@ -352,13 +363,14 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
bl_label = "Solver"
bl_parent_id = 'PHYSICS_PT_softbody'
bl_parent_id = "PHYSICS_PT_softbody"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -381,13 +393,14 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_solver_diagnostics(PhysicButtonsPanel, Panel):
bl_label = "Diagnostics"
bl_parent_id = 'PHYSICS_PT_softbody_solver'
bl_parent_id = "PHYSICS_PT_softbody_solver"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -404,13 +417,14 @@ class PHYSICS_PT_softbody_solver_diagnostics(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_solver_helpers(PhysicButtonsPanel, Panel):
bl_label = "Helpers"
bl_parent_id = 'PHYSICS_PT_softbody_solver'
bl_parent_id = "PHYSICS_PT_softbody_solver"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -431,13 +445,14 @@ class PHYSICS_PT_softbody_solver_helpers(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, Panel):
bl_label = "Field Weights"
bl_parent_id = 'PHYSICS_PT_softbody'
bl_parent_id = "PHYSICS_PT_softbody"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
md = context.soft_body

View File

@ -54,7 +54,8 @@ class RENDER_PT_color_management(RenderButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
@ -92,7 +93,8 @@ class RENDER_PT_color_management_display_settings(RenderButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -122,7 +124,8 @@ class RENDER_PT_color_management_curves(RenderButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
@ -1057,7 +1060,8 @@ class RENDER_PT_gpencil(RenderButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -1149,7 +1153,8 @@ class RENDER_PT_simplify(RenderButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
rd = context.scene.render
@ -1166,7 +1171,8 @@ class RENDER_PT_simplify_viewport(RenderButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -1199,7 +1205,8 @@ class RENDER_PT_simplify_render(RenderButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout

View File

@ -74,7 +74,8 @@ class TEXTURE_PT_preview(TextureButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -107,7 +108,8 @@ class TEXTURE_PT_context(TextureButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -150,7 +152,8 @@ class TEXTURE_PT_node(TextureButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -183,7 +186,8 @@ class TEXTURE_PT_clouds(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -219,7 +223,8 @@ class TEXTURE_PT_wood(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -260,7 +265,8 @@ class TEXTURE_PT_marble(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -298,7 +304,8 @@ class TEXTURE_PT_magic(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -321,7 +328,8 @@ class TEXTURE_PT_blend(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -347,7 +355,8 @@ class TEXTURE_PT_stucci(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -382,7 +391,8 @@ class TEXTURE_PT_image(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, _context):
# TODO: maybe expose the template_ID from the template image here.
@ -392,13 +402,14 @@ class TEXTURE_PT_image(TextureTypePanel, Panel):
class TEXTURE_PT_image_settings(TextureTypePanel, Panel):
bl_label = "Settings"
bl_parent_id = 'TEXTURE_PT_image'
bl_parent_id = "TEXTURE_PT_image"
tex_type = 'IMAGE'
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -424,7 +435,7 @@ def texture_filter_common(tex, layout):
class TEXTURE_PT_image_sampling(TextureTypePanel, Panel):
bl_label = "Sampling"
bl_options = {'DEFAULT_CLOSED'}
bl_parent_id = 'TEXTURE_PT_image'
bl_parent_id = "TEXTURE_PT_image"
tex_type = 'IMAGE'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@ -454,7 +465,7 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, Panel):
class TEXTURE_PT_image_alpha(TextureTypePanel, Panel):
bl_label = "Alpha"
bl_options = {'DEFAULT_CLOSED'}
bl_parent_id = 'TEXTURE_PT_image'
bl_parent_id = "TEXTURE_PT_image"
tex_type = 'IMAGE'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@ -477,7 +488,7 @@ class TEXTURE_PT_image_alpha(TextureTypePanel, Panel):
class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
bl_label = "Mapping"
bl_options = {'DEFAULT_CLOSED'}
bl_parent_id = 'TEXTURE_PT_image'
bl_parent_id = "TEXTURE_PT_image"
tex_type = 'IMAGE'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@ -529,7 +540,7 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
class TEXTURE_PT_image_mapping_crop(TextureTypePanel, Panel):
bl_label = "Crop"
bl_options = {'DEFAULT_CLOSED'}
bl_parent_id = 'TEXTURE_PT_image_mapping'
bl_parent_id = "TEXTURE_PT_image_mapping"
tex_type = 'IMAGE'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@ -557,7 +568,8 @@ class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -606,7 +618,8 @@ class TEXTURE_PT_voronoi(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -643,7 +656,8 @@ class TEXTURE_PT_voronoi_feature_weights(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -668,7 +682,8 @@ class TEXTURE_PT_distortednoise(TextureTypePanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -697,7 +712,8 @@ class TextureSlotPanel(TextureButtonsPanel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -713,7 +729,8 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -785,7 +802,8 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -871,7 +889,8 @@ class TEXTURE_PT_colors(TextureButtonsPanel, TextureColorsPoll, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout
@ -899,12 +918,13 @@ class TEXTURE_PT_colors(TextureButtonsPanel, TextureColorsPoll, Panel):
class TEXTURE_PT_colors_ramp(TextureButtonsPanel, TextureColorsPoll, Panel):
bl_label = "Color Ramp"
bl_options = {'DEFAULT_CLOSED'}
bl_parent_id = 'TEXTURE_PT_colors'
bl_parent_id = "TEXTURE_PT_colors"
COMPAT_ENGINES = {
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw_header(self, context):
tex = context.texture
@ -929,7 +949,8 @@ class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "texture"
_property_type = Texture

View File

@ -34,7 +34,8 @@ class VIEWLAYER_PT_layer(ViewLayerButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
def draw(self, context):
layout = self.layout

View File

@ -27,7 +27,8 @@ class WORLD_PT_context_world(WorldButtonsPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
@classmethod
def poll(cls, context):
@ -75,7 +76,8 @@ class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, Panel):
'BLENDER_RENDER',
'BLENDER_EEVEE',
'BLENDER_EEVEE_NEXT',
'BLENDER_WORKBENCH'}
'BLENDER_WORKBENCH',
}
_context_path = "world"
_property_type = bpy.types.World

View File

@ -45,7 +45,7 @@ class CLIP_PT_marker_display(Panel):
bl_space_type = 'CLIP_EDITOR'
bl_region_type = 'HEADER'
bl_label = "Marker Display"
bl_parent_id = 'CLIP_PT_display'
bl_parent_id = "CLIP_PT_display"
bl_ui_units_x = 13
def draw(self, context):
@ -77,7 +77,7 @@ class CLIP_PT_clip_display(Panel):
bl_space_type = 'CLIP_EDITOR'
bl_region_type = 'HEADER'
bl_label = "Clip Display"
bl_parent_id = 'CLIP_PT_display'
bl_parent_id = "CLIP_PT_display"
bl_ui_units_x = 13
def draw(self, context):
@ -849,7 +849,7 @@ class CLIP_PT_track_settings_extras(CLIP_PT_tracking_panel, Panel):
bl_region_type = 'UI'
bl_category = "Track"
bl_label = "Tracking Settings Extras"
bl_parent_id = 'CLIP_PT_track_settings'
bl_parent_id = "CLIP_PT_track_settings"
bl_options = {'DEFAULT_CLOSED'}
@classmethod
@ -915,7 +915,7 @@ class CLIP_PT_tracking_lens(Panel):
bl_category = "Track"
bl_label = "Lens"
bl_translation_context = i18n_contexts.id_camera
bl_parent_id = 'CLIP_PT_tracking_camera'
bl_parent_id = "CLIP_PT_tracking_camera"
bl_options = {'DEFAULT_CLOSED'}
@classmethod

View File

@ -846,31 +846,31 @@ class DOPESHEET_PT_gpencil_mode(LayersDopeSheetPanel, Panel):
class DOPESHEET_PT_gpencil_layer_masks(LayersDopeSheetPanel, GreasePencilLayerMasksPanel, Panel):
bl_label = "Masks"
bl_parent_id = 'DOPESHEET_PT_gpencil_mode'
bl_parent_id = "DOPESHEET_PT_gpencil_mode"
bl_options = {'DEFAULT_CLOSED'}
class DOPESHEET_PT_gpencil_layer_transform(LayersDopeSheetPanel, GreasePencilLayerTransformPanel, Panel):
bl_label = "Transform"
bl_parent_id = 'DOPESHEET_PT_gpencil_mode'
bl_parent_id = "DOPESHEET_PT_gpencil_mode"
bl_options = {'DEFAULT_CLOSED'}
class DOPESHEET_PT_gpencil_layer_adjustments(LayersDopeSheetPanel, GreasePencilLayerAdjustmentsPanel, Panel):
bl_label = "Adjustments"
bl_parent_id = 'DOPESHEET_PT_gpencil_mode'
bl_parent_id = "DOPESHEET_PT_gpencil_mode"
bl_options = {'DEFAULT_CLOSED'}
class DOPESHEET_PT_gpencil_layer_relations(LayersDopeSheetPanel, GreasePencilLayerRelationsPanel, Panel):
bl_label = "Relations"
bl_parent_id = 'DOPESHEET_PT_gpencil_mode'
bl_parent_id = "DOPESHEET_PT_gpencil_mode"
bl_options = {'DEFAULT_CLOSED'}
class DOPESHEET_PT_gpencil_layer_display(LayersDopeSheetPanel, GreasePencilLayerDisplayPanel, Panel):
bl_label = "Display"
bl_parent_id = 'DOPESHEET_PT_gpencil_mode'
bl_parent_id = "DOPESHEET_PT_gpencil_mode"
bl_options = {'DEFAULT_CLOSED'}

View File

@ -1528,7 +1528,7 @@ class IMAGE_PT_overlay_guides(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'HEADER'
bl_label = "Guides"
bl_parent_id = 'IMAGE_PT_overlay'
bl_parent_id = "IMAGE_PT_overlay"
@classmethod
def poll(cls, context):
@ -1569,7 +1569,7 @@ class IMAGE_PT_overlay_uv_edit(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'HEADER'
bl_label = "UV Editing"
bl_parent_id = 'IMAGE_PT_overlay'
bl_parent_id = "IMAGE_PT_overlay"
@classmethod
def poll(cls, context):
@ -1597,7 +1597,7 @@ class IMAGE_PT_overlay_uv_edit_geometry(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'HEADER'
bl_label = "Geometry"
bl_parent_id = 'IMAGE_PT_overlay'
bl_parent_id = "IMAGE_PT_overlay"
@classmethod
def poll(cls, context):
@ -1629,7 +1629,7 @@ class IMAGE_PT_overlay_texture_paint(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'HEADER'
bl_label = "Geometry"
bl_parent_id = 'IMAGE_PT_overlay'
bl_parent_id = "IMAGE_PT_overlay"
@classmethod
def poll(cls, context):
@ -1651,7 +1651,7 @@ class IMAGE_PT_overlay_image(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'HEADER'
bl_label = "Image"
bl_parent_id = 'IMAGE_PT_overlay'
bl_parent_id = "IMAGE_PT_overlay"
def draw(self, context):
layout = self.layout

View File

@ -64,8 +64,9 @@ class NODE_HT_header(Header):
layout.separator_spacer()
types_that_support_material = {'MESH', 'CURVE', 'SURFACE', 'FONT', 'META',
'GPENCIL', 'VOLUME', 'CURVES', 'POINTCLOUD'}
types_that_support_material = {
'MESH', 'CURVE', 'SURFACE', 'FONT', 'META', 'GPENCIL', 'VOLUME', 'CURVES', 'POINTCLOUD',
}
# disable material slot buttons when pinned, cannot find correct slot within id_from (#36589)
# disable also when the selected object does not support materials
has_material_slots = not snode.pin and ob_type in types_that_support_material
@ -324,15 +325,15 @@ class NODE_MT_node(Menu):
layout.operator("transform.resize")
layout.separator()
layout.operator("node.clipboard_copy", text="Copy", icon="COPYDOWN")
layout.operator("node.clipboard_copy", text="Copy", icon='COPYDOWN')
layout.operator_context = 'EXEC_DEFAULT'
layout.operator("node.clipboard_paste", text="Paste", icon="PASTEDOWN")
layout.operator("node.clipboard_paste", text="Paste", icon='PASTEDOWN')
layout.operator_context = 'INVOKE_REGION_WIN'
layout.operator("node.duplicate_move", icon="DUPLICATE")
layout.operator("node.duplicate_move", icon='DUPLICATE')
layout.operator("node.duplicate_move_linked")
layout.separator()
layout.operator("node.delete", icon="X")
layout.operator("node.delete", icon='X')
layout.operator("node.delete_reconnect")
layout.separator()
@ -352,7 +353,7 @@ class NODE_MT_node(Menu):
layout.operator("node.links_mute")
layout.separator()
layout.operator("node.group_make", icon="NODETREE")
layout.operator("node.group_make", icon='NODETREE')
layout.operator("node.group_insert", text="Insert Into Group")
layout.operator("node.group_edit").exit = False
layout.operator("node.group_ungroup")
@ -362,7 +363,7 @@ class NODE_MT_node(Menu):
if is_compositor:
layout.separator()
layout.operator("node.read_viewlayers", icon="RENDERLAYERS")
layout.operator("node.read_viewlayers", icon='RENDERLAYERS')
class NODE_MT_view_pie(Menu):
@ -437,8 +438,10 @@ class NODE_PT_geometry_node_tool_object_types(Panel):
snode = context.space_data
group = snode.node_tree
types = [("is_type_mesh", "Mesh", 'MESH_DATA'),
("is_type_curve", "Curves", 'CURVES_DATA')]
types = [
("is_type_mesh", "Mesh", 'MESH_DATA'),
("is_type_curve", "Curves", 'CURVES_DATA'),
]
if context.preferences.experimental.use_new_point_cloud_type:
types.append(("is_type_point_cloud", "Point Cloud", 'POINTCLOUD_DATA'))
@ -465,8 +468,10 @@ class NODE_PT_geometry_node_tool_mode(Panel):
snode = context.space_data
group = snode.node_tree
modes = [("is_mode_edit", "Edit Mode", 'EDITMODE_HLT'),
("is_mode_sculpt", "Sculpt Mode", 'SCULPTMODE_HLT')]
modes = (
("is_mode_edit", "Edit Mode", 'EDITMODE_HLT'),
("is_mode_sculpt", "Sculpt Mode", 'SCULPTMODE_HLT'),
)
col = layout.column()
col.active = group.is_tool
@ -661,7 +666,7 @@ class NODE_PT_active_node_color(Panel):
bl_category = "Node"
bl_label = "Color"
bl_options = {'DEFAULT_CLOSED'}
bl_parent_id = 'NODE_PT_active_node_generic'
bl_parent_id = "NODE_PT_active_node_generic"
@classmethod
def poll(cls, context):
@ -932,7 +937,6 @@ class NODE_PT_node_tree_interface(Panel):
if active_item.item_type == 'SOCKET':
layout.prop(active_item, "socket_type", text="Type")
layout.prop(active_item, "description")
layout.prop(active_item, "in_out", text="Input/Output")
# Display descriptions only for Geometry Nodes, since it's only used in the modifier panel.
if tree.type == 'GEOMETRY':
field_socket_types = {
@ -1175,7 +1179,7 @@ def node_panel(cls):
node_cls.bl_region_type = 'UI'
node_cls.bl_category = "Options"
if hasattr(node_cls, "bl_parent_id"):
node_cls.bl_parent_id = 'NODE_' + node_cls.bl_parent_id
node_cls.bl_parent_id = "NODE_" + node_cls.bl_parent_id
return node_cls

View File

@ -108,7 +108,7 @@ class OUTLINER_MT_context_menu(Menu):
layout.separator()
layout.menu("OUTLINER_MT_liboverride", icon="LIBRARY_DATA_OVERRIDE")
layout.menu("OUTLINER_MT_liboverride", icon='LIBRARY_DATA_OVERRIDE')
layout.separator()

View File

@ -266,7 +266,7 @@ class SEQUENCER_PT_overlay(Panel):
class SEQUENCER_PT_preview_overlay(Panel):
bl_space_type = 'SEQUENCE_EDITOR'
bl_region_type = 'HEADER'
bl_parent_id = 'SEQUENCER_PT_overlay'
bl_parent_id = "SEQUENCER_PT_overlay"
bl_label = "Preview Overlays"
@classmethod
@ -292,7 +292,7 @@ class SEQUENCER_PT_preview_overlay(Panel):
class SEQUENCER_PT_sequencer_overlay(Panel):
bl_space_type = 'SEQUENCE_EDITOR'
bl_region_type = 'HEADER'
bl_parent_id = 'SEQUENCER_PT_overlay'
bl_parent_id = "SEQUENCER_PT_overlay"
bl_label = "Sequencer Overlays"
@classmethod
@ -933,6 +933,7 @@ class SEQUENCER_MT_strip_retiming(Menu):
def draw_strip_context(self, context):
layout = self.layout
strip = context.active_sequence_strip
layout.operator("sequencer.retiming_key_add")
layout.operator("sequencer.retiming_freeze_frame_add")
@ -941,12 +942,11 @@ class SEQUENCER_MT_strip_retiming(Menu):
layout.operator("sequencer.retiming_reset")
layout.separator()
icon = "CHECKBOX_DEHLT"
if context.active_sequence_strip.show_retiming_keys:
icon = "CHECKBOX_HLT"
layout.operator("sequencer.retiming_segment_speed_set")
layout.operator("sequencer.retiming_show", icon=icon)
layout.operator(
"sequencer.retiming_show",
icon='CHECKBOX_HLT' if (strip and strip.show_retiming_keys) else 'CHECKBOX_DEHLT',
)
def draw_retiming_context(self, context):
layout = self.layout
@ -964,7 +964,7 @@ class SEQUENCER_MT_strip_retiming(Menu):
layout.separator()
layout.operator("sequencer.retiming_segment_speed_set")
layout.operator("sequencer.retiming_show", icon="CHECKBOX_HLT")
layout.operator("sequencer.retiming_show", icon='CHECKBOX_HLT')
def draw(self, context):
ed = context.scene.sequence_editor
@ -1161,8 +1161,6 @@ class SEQUENCER_MT_context_menu(Menu):
layout.separator()
strip = context.active_sequence_strip
if strip:
strip_type = strip.type
selected_sequences_count = selected_sequences_len(context)
@ -1259,11 +1257,6 @@ class SEQUENCER_MT_preview_context_menu(Menu):
# TODO: support in preview.
# layout.operator("sequencer.delete", text="Delete")
strip = context.active_sequence_strip
if strip:
pass
class SEQUENCER_MT_pivot_pie(Menu):
bl_label = "Pivot Point"

View File

@ -235,6 +235,7 @@ class USERPREF_PT_interface_text(InterfacePanel, CenterAlignMixIn, Panel):
flow.prop(view, "use_text_antialiasing", text="Anti-Aliasing")
sub = flow.column()
sub.active = view.use_text_antialiasing
sub.prop(view, "use_text_render_subpixelaa", text="Subpixel Anti-Aliasing")
sub.prop(view, "text_hinting", text="Hinting")
flow.prop(view, "font_path_ui")

View File

@ -1024,8 +1024,9 @@ class VIEW3D_MT_editor_menus(Menu):
obj = context.active_object
mode_string = context.mode
edit_object = context.edit_object
gp_edit = obj and obj.mode in {'EDIT_GPENCIL', 'PAINT_GPENCIL', 'SCULPT_GPENCIL',
'WEIGHT_GPENCIL', 'VERTEX_GPENCIL'}
gp_edit = obj and obj.mode in {
'EDIT_GPENCIL', 'PAINT_GPENCIL', 'SCULPT_GPENCIL', 'WEIGHT_GPENCIL', 'VERTEX_GPENCIL',
}
tool_settings = context.tool_settings
layout.menu("VIEW3D_MT_view")
@ -1155,8 +1156,9 @@ class VIEW3D_MT_transform_base:
layout.operator("transform.bend", text="Bend")
layout.operator("transform.push_pull", text="Push/Pull")
if context.mode in {'EDIT_MESH', 'EDIT_ARMATURE', 'EDIT_SURFACE', 'EDIT_CURVE',
'EDIT_LATTICE', 'EDIT_METABALL'}:
if context.mode in {
'EDIT_MESH', 'EDIT_ARMATURE', 'EDIT_SURFACE', 'EDIT_CURVE', 'EDIT_LATTICE', 'EDIT_METABALL',
}:
layout.operator("transform.vertex_warp", text="Warp")
layout.operator_context = 'EXEC_REGION_WIN'
layout.operator("transform.vertex_random", text="Randomize").offset = 0.1
@ -2633,7 +2635,7 @@ class VIEW3D_MT_object(Menu):
layout.separator()
layout.menu("VIEW3D_MT_object_liboverride", icon="LIBRARY_DATA_OVERRIDE")
layout.menu("VIEW3D_MT_object_liboverride", icon='LIBRARY_DATA_OVERRIDE')
layout.menu("VIEW3D_MT_object_relations")
layout.menu("VIEW3D_MT_object_parent")
layout.menu("VIEW3D_MT_object_constraints")
@ -6323,7 +6325,7 @@ class VIEW3D_PT_shading_lighting(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_label = "Lighting"
bl_parent_id = 'VIEW3D_PT_shading'
bl_parent_id = "VIEW3D_PT_shading"
@classmethod
def poll(cls, context):
@ -6445,7 +6447,7 @@ class VIEW3D_PT_shading_color(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_label = "Wire Color"
bl_parent_id = 'VIEW3D_PT_shading'
bl_parent_id = "VIEW3D_PT_shading"
def _draw_color_type(self, context):
layout = self.layout
@ -6484,7 +6486,7 @@ class VIEW3D_PT_shading_options(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_label = "Options"
bl_parent_id = 'VIEW3D_PT_shading'
bl_parent_id = "VIEW3D_PT_shading"
@classmethod
def poll(cls, context):
@ -6608,7 +6610,7 @@ class VIEW3D_PT_shading_render_pass(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_label = "Render Pass"
bl_parent_id = 'VIEW3D_PT_shading'
bl_parent_id = "VIEW3D_PT_shading"
COMPAT_ENGINES = {'BLENDER_EEVEE'}
@classmethod
@ -6629,7 +6631,7 @@ class VIEW3D_PT_shading_compositor(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_label = "Compositor"
bl_parent_id = 'VIEW3D_PT_shading'
bl_parent_id = "VIEW3D_PT_shading"
bl_order = 10
@classmethod
@ -6712,7 +6714,7 @@ class VIEW3D_PT_overlay(Panel):
class VIEW3D_PT_overlay_guides(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay'
bl_parent_id = "VIEW3D_PT_overlay"
bl_label = "Guides"
def draw(self, context):
@ -6779,7 +6781,7 @@ class VIEW3D_PT_overlay_guides(Panel):
class VIEW3D_PT_overlay_object(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay'
bl_parent_id = "VIEW3D_PT_overlay"
bl_label = "Objects"
def draw(self, context):
@ -6819,7 +6821,7 @@ class VIEW3D_PT_overlay_object(Panel):
class VIEW3D_PT_overlay_geometry(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay'
bl_parent_id = "VIEW3D_PT_overlay"
bl_label = "Geometry"
def draw(self, context):
@ -6871,7 +6873,7 @@ class VIEW3D_PT_overlay_geometry(Panel):
class VIEW3D_PT_overlay_motion_tracking(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay'
bl_parent_id = "VIEW3D_PT_overlay"
bl_label = "Motion Tracking"
def draw_header(self, context):
@ -6958,7 +6960,7 @@ class VIEW3D_PT_overlay_edit_mesh(Panel):
class VIEW3D_PT_overlay_edit_mesh_shading(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay_edit_mesh'
bl_parent_id = "VIEW3D_PT_overlay_edit_mesh"
bl_label = "Shading"
@classmethod
@ -7035,7 +7037,7 @@ class VIEW3D_PT_overlay_edit_mesh_shading(Panel):
class VIEW3D_PT_overlay_edit_mesh_measurement(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay_edit_mesh'
bl_parent_id = "VIEW3D_PT_overlay_edit_mesh"
bl_label = "Measurement"
@classmethod
@ -7066,7 +7068,7 @@ class VIEW3D_PT_overlay_edit_mesh_measurement(Panel):
class VIEW3D_PT_overlay_edit_mesh_normals(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay_edit_mesh'
bl_parent_id = "VIEW3D_PT_overlay_edit_mesh"
bl_label = "Normals"
@classmethod
@ -7101,7 +7103,7 @@ class VIEW3D_PT_overlay_edit_mesh_normals(Panel):
class VIEW3D_PT_overlay_edit_mesh_freestyle(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay_edit_mesh'
bl_parent_id = "VIEW3D_PT_overlay_edit_mesh"
bl_label = "Freestyle"
@classmethod
@ -7675,7 +7677,7 @@ class VIEW3D_PT_annotation_onion(AnnotationOnionSkin, Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "View"
bl_parent_id = 'VIEW3D_PT_grease_pencil'
bl_parent_id = "VIEW3D_PT_grease_pencil"
# NOTE: this is just a wrapper around the generic GP Panel
@ -8441,7 +8443,7 @@ class VIEW3D_PT_curves_sculpt_grow_shrink_scaling(Panel):
class VIEW3D_PT_viewport_debug(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay'
bl_parent_id = "VIEW3D_PT_overlay"
bl_label = "Viewport Debug"
@classmethod
@ -8462,7 +8464,7 @@ class VIEW3D_AST_sculpt_brushes(bpy.types.AssetShelf):
# "Asset Shelf" and the "Extended Asset Browser" experimental features are
# enabled.
bl_space_type = "VIEW_3D"
bl_space_type = 'VIEW_3D'
@classmethod
def poll(cls, context):

View File

@ -1650,7 +1650,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_settings(Panel, View3DPanel, GreasePen
class VIEW3D_PT_tools_grease_pencil_brush_advanced(View3DPanel, Panel):
bl_context = ".greasepencil_paint"
bl_label = "Advanced"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_settings'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_brush_settings"
bl_category = "Tool"
bl_options = {'DEFAULT_CLOSED'}
bl_ui_units_x = 13
@ -1730,7 +1730,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_advanced(View3DPanel, Panel):
class VIEW3D_PT_tools_grease_pencil_brush_stroke(Panel, View3DPanel):
bl_context = ".greasepencil_paint"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_settings'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_brush_settings"
bl_label = "Stroke"
bl_category = "Tool"
bl_options = {'DEFAULT_CLOSED'}
@ -1749,7 +1749,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_stroke(Panel, View3DPanel):
class VIEW3D_PT_tools_grease_pencil_brush_stabilizer(Panel, View3DPanel):
bl_context = ".greasepencil_paint"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_stroke'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_brush_stroke"
bl_label = "Stabilize Stroke"
bl_category = "Tool"
bl_options = {'DEFAULT_CLOSED'}
@ -1783,7 +1783,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_stabilizer(Panel, View3DPanel):
class VIEW3D_PT_tools_grease_pencil_brush_post_processing(View3DPanel, Panel):
bl_context = ".greasepencil_paint"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_stroke'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_brush_stroke"
bl_label = "Post-Processing"
bl_category = "Tool"
bl_options = {'DEFAULT_CLOSED'}
@ -1839,7 +1839,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_post_processing(View3DPanel, Panel):
class VIEW3D_PT_tools_grease_pencil_brush_random(View3DPanel, Panel):
bl_context = ".greasepencil_paint"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_stroke'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_brush_stroke"
bl_label = "Randomize"
bl_category = "Tool"
bl_options = {'DEFAULT_CLOSED'}
@ -1956,7 +1956,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_paint_falloff(GreasePencilBrushFalloff
class VIEW3D_PT_tools_grease_pencil_brush_gap_closure(View3DPanel, Panel):
bl_context = ".greasepencil_paint"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_advanced'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_brush_advanced"
bl_label = "Gap Closure"
bl_category = "Tool"
@ -2064,7 +2064,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_sculpt_falloff(GreasePencilBrushFallof
class VIEW3D_PT_tools_grease_pencil_sculpt_brush_advanced(GreasePencilSculptAdvancedPanel, View3DPanel, Panel):
bl_context = ".greasepencil_sculpt"
bl_label = "Advanced"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_sculpt_settings'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_sculpt_settings"
bl_category = "Tool"
bl_options = {'DEFAULT_CLOSED'}
@ -2162,7 +2162,7 @@ class VIEW3D_PT_tools_grease_pencil_weight_paint_settings(Panel, View3DPanel, Gr
class VIEW3D_PT_tools_grease_pencil_brush_weight_falloff(GreasePencilBrushFalloff, Panel, View3DPaintPanel):
bl_context = ".greasepencil_weight"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_weight_paint_settings'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_weight_paint_settings"
bl_label = "Falloff"
bl_options = {'DEFAULT_CLOSED'}
@ -2305,7 +2305,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_vertex_palette(View3DPanel, Panel):
bl_context = ".greasepencil_vertex"
bl_label = "Palette"
bl_category = "Tool"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_vertex_color'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_brush_vertex_color"
@classmethod
def poll(cls, context):
@ -2404,7 +2404,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_mix_palette(View3DPanel, Panel):
bl_context = ".greasepencil_paint"
bl_label = "Palette"
bl_category = "Tool"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_mixcolor'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_brush_mixcolor"
@classmethod
def poll(cls, context):
@ -2449,7 +2449,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_mix_palette(View3DPanel, Panel):
# Grease Pencil Brush Appearance (one for each mode)
class VIEW3D_PT_tools_grease_pencil_paint_appearance(GreasePencilDisplayPanel, Panel, View3DPanel):
bl_context = ".greasepencil_paint"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_settings'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_brush_settings"
bl_label = "Cursor"
bl_category = "Tool"
bl_ui_units_x = 15
@ -2457,21 +2457,21 @@ class VIEW3D_PT_tools_grease_pencil_paint_appearance(GreasePencilDisplayPanel, P
class VIEW3D_PT_tools_grease_pencil_sculpt_appearance(GreasePencilDisplayPanel, Panel, View3DPanel):
bl_context = ".greasepencil_sculpt"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_sculpt_settings'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_sculpt_settings"
bl_label = "Cursor"
bl_category = "Tool"
class VIEW3D_PT_tools_grease_pencil_weight_appearance(GreasePencilDisplayPanel, Panel, View3DPanel):
bl_context = ".greasepencil_weight"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_weight_paint_settings'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_weight_paint_settings"
bl_category = "Tool"
bl_label = "Cursor"
class VIEW3D_PT_tools_grease_pencil_vertex_appearance(GreasePencilDisplayPanel, Panel, View3DPanel):
bl_context = ".greasepencil_vertex"
bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_vertex_paint_settings'
bl_parent_id = "VIEW3D_PT_tools_grease_pencil_vertex_paint_settings"
bl_category = "Tool"
bl_label = "Cursor"

View File

@ -501,9 +501,11 @@ class WholeCharacterMixin:
# custom properties
def doCustomProps(self, ks, bone):
prop_type_compat = {bpy.types.BoolProperty,
bpy.types.IntProperty,
bpy.types.FloatProperty}
prop_type_compat = {
bpy.types.BoolProperty,
bpy.types.IntProperty,
bpy.types.FloatProperty,
}
# go over all custom properties for bone
for prop in bone.keys():

View File

@ -349,6 +349,8 @@ enum {
BLF_BAD_FONT = 1 << 16,
/** This font is managed by the FreeType cache subsystem. */
BLF_CACHED = 1 << 17,
/** At small sizes glyphs are rendered at multiple subpixel positions. */
BLF_RENDER_SUBPIXELAA = 1 << 18,
};
#define BLF_DRAW_STR_DUMMY_MAX 1024

View File

@ -1121,8 +1121,8 @@ GlyphBLF *blf_glyph_ensure(FontBLF *font, GlyphCacheBLF *gc, const uint charcode
#ifdef BLF_SUBPIXEL_AA
GlyphBLF *blf_glyph_ensure_subpixel(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int32_t pen_x)
{
if ((font->flags & (BLF_HINTING_NONE | BLF_MONOCHROME)) != 0) {
/* Not if we are in mono mode (aliased) or if not hinting. */
if (!(font->flags & BLF_RENDER_SUBPIXELAA) || (font->flags & BLF_MONOCHROME)) {
/* Not if we are in mono mode (aliased) or the feature is turned off. */
return g;
}

View File

@ -40,6 +40,8 @@ template<typename T> static inline T decltype_helper(T x)
#if defined(__GNUC__)
# define BLI_NOINLINE __attribute__((noinline))
#elif defined(_MSC_VER)
# define BLI_NOINLINE __declspec(noinline)
#else
# define BLI_NOINLINE
#endif

View File

@ -102,9 +102,10 @@ float BLI_polyfill_beautify_quad_rotate_calc_ex(const float v1[2],
(ELEM(v3, v1, v2, v4) == false) && (ELEM(v4, v1, v2, v3) == false));
if (r_area) {
*r_area = fabsf(area_2x_234) + fabsf(area_2x_241) +
/* Include both pairs for predictable results. */
fabsf(area_2x_123) + fabsf(area_2x_134) / 8.0f;
*r_area = (fabsf(area_2x_234) + fabsf(area_2x_241) +
/* Include both pairs for predictable results. */
fabsf(area_2x_123) + fabsf(area_2x_134)) /
8.0f;
}
/*

View File

@ -881,6 +881,10 @@ void blo_do_versions_userdef(UserDef *userdef)
userdef->animation_flag |= USER_ANIM_SHOW_CHANNEL_GROUP_COLORS;
}
if (!USER_VERSION_ATLEAST(400, 32)) {
userdef->text_render |= USER_TEXT_RENDER_SUBPIXELAA;
}
/**
* Versioning code until next subversion bump goes here.
*

View File

@ -70,8 +70,6 @@ void ARMATURE_OT_split(struct wmOperatorType *ot);
void ARMATURE_OT_autoside_names(struct wmOperatorType *ot);
void ARMATURE_OT_flip_names(struct wmOperatorType *ot);
void ARMATURE_OT_layers_show_all(struct wmOperatorType *ot);
void ARMATURE_OT_collection_add(struct wmOperatorType *ot);
void ARMATURE_OT_collection_remove(struct wmOperatorType *ot);
void ARMATURE_OT_collection_move(struct wmOperatorType *ot);

View File

@ -59,8 +59,6 @@ void ED_operatortypes_armature()
WM_operatortype_append(ARMATURE_OT_autoside_names);
WM_operatortype_append(ARMATURE_OT_flip_names);
WM_operatortype_append(ARMATURE_OT_layers_show_all);
WM_operatortype_append(ARMATURE_OT_collection_add);
WM_operatortype_append(ARMATURE_OT_collection_remove);
WM_operatortype_append(ARMATURE_OT_collection_move);

View File

@ -665,87 +665,6 @@ void POSE_OT_rotation_mode_set(wmOperatorType *ot)
ot->srna, "type", rna_enum_object_rotation_mode_items, 0, "Rotation Mode", "");
}
/* ********************************************** */
static bool armature_layers_poll(bContext *C)
{
/* Armature layers operators can be used in posemode OR editmode for armatures */
return ED_operator_posemode(C) || ED_operator_editarmature(C);
}
static bArmature *armature_layers_get_data(Object **ob)
{
bArmature *arm = nullptr;
/* Sanity checking and handling of posemode. */
if (*ob) {
Object *tob = BKE_object_pose_armature_get(*ob);
if (tob) {
*ob = tob;
arm = static_cast<bArmature *>((*ob)->data);
}
else if ((*ob)->type == OB_ARMATURE) {
arm = static_cast<bArmature *>((*ob)->data);
}
}
return arm;
}
/* Show all armature layers */
static int pose_armature_layers_showall_exec(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_active_object(C);
bArmature *arm = armature_layers_get_data(&ob);
int maxLayers = RNA_boolean_get(op->ptr, "all") ? 32 : 16;
/* hardcoded for now - we can only have 32 armature layers, so this should be fine... */
bool layers[32] = {false};
/* sanity checking */
if (arm == nullptr) {
return OPERATOR_CANCELLED;
}
/* use RNA to set the layers
* although it would be faster to just set directly using bitflags, we still
* need to setup a RNA pointer so that we get the "update" callbacks for free...
*/
PointerRNA ptr = RNA_id_pointer_create(&arm->id);
for (int i = 0; i < maxLayers; i++) {
layers[i] = true;
}
RNA_boolean_set_array(&ptr, "layers", layers);
/* NOTE: notifier might evolve. */
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, ob);
DEG_id_tag_update(&arm->id, ID_RECALC_COPY_ON_WRITE);
/* done */
return OPERATOR_FINISHED;
}
void ARMATURE_OT_layers_show_all(wmOperatorType *ot)
{
/* identifiers */
ot->name = "Show All Layers";
ot->idname = "ARMATURE_OT_layers_show_all";
ot->description = "Make all armature layers visible";
/* callbacks */
ot->exec = pose_armature_layers_showall_exec;
ot->poll = armature_layers_poll;
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
/* properties */
ot->prop = RNA_def_boolean(
ot->srna, "all", true, "All Layers", "Enable all layers or just the first 16 (top row)");
}
/* ********************************************** */
/* Show/Hide Bones */

View File

@ -3803,6 +3803,7 @@ static void ui_do_but_textedit(
but->pos = short(selend);
but->selsta = short(selsta);
but->selend = short(selend);
data->sel_pos_init = selsta;
retval = WM_UI_HANDLER_BREAK;
changed = true;
}

View File

@ -145,10 +145,11 @@ static int copy_data_path_button_exec(bContext *C, wmOperator *op)
}
}
else {
path = RNA_path_from_real_ID_to_property_index(bmain, &ptr, prop, 0, -1, &id);
const int index_dim = (index != -1 && RNA_property_array_check(prop)) ? 1 : 0;
path = RNA_path_from_real_ID_to_property_index(bmain, &ptr, prop, index_dim, index, &id);
if (!path) {
path = RNA_path_from_ID_to_property(&ptr, prop);
path = RNA_path_from_ID_to_property_index(&ptr, prop, index_dim, index);
}
}
@ -1093,6 +1094,7 @@ bool UI_context_copy_to_selected_list(bContext *C,
*r_path = nullptr;
/* special case for bone constraints */
char *path_from_bone = nullptr;
const bool is_rna = !RNA_property_is_idprop(prop);
/* Remove links from the collection list which don't contain 'prop'. */
bool ensure_list_items_contain_prop = false;
@ -1104,7 +1106,7 @@ bool UI_context_copy_to_selected_list(bContext *C,
*
* Properties owned by the ID are handled by the 'if (ptr->owner_id)' case below.
*/
if (!RNA_property_is_idprop(prop) && RNA_struct_is_a(ptr->type, &RNA_PropertyGroup)) {
if (is_rna && RNA_struct_is_a(ptr->type, &RNA_PropertyGroup)) {
PointerRNA owner_ptr;
char *idpath = nullptr;
@ -1112,7 +1114,7 @@ bool UI_context_copy_to_selected_list(bContext *C,
if (NOT_RNA_NULL(owner_ptr = CTX_data_pointer_get_type(C, "active_pose_bone", &RNA_PoseBone)))
{
if (NOT_NULL(idpath = RNA_path_from_struct_to_idproperty(
&owner_ptr, static_cast<IDProperty *>(ptr->data))))
&owner_ptr, static_cast<const IDProperty *>(ptr->data))))
{
*r_lb = CTX_data_collection_get(C, "selected_pose_bones");
}
@ -1121,7 +1123,7 @@ bool UI_context_copy_to_selected_list(bContext *C,
owner_ptr = RNA_pointer_create(owner_ptr.owner_id, &RNA_Bone, pchan->bone);
if (NOT_NULL(idpath = RNA_path_from_struct_to_idproperty(
&owner_ptr, static_cast<IDProperty *>(ptr->data))))
&owner_ptr, static_cast<const IDProperty *>(ptr->data))))
{
ui_context_selected_bones_via_pose(C, r_lb);
}
@ -1133,7 +1135,7 @@ bool UI_context_copy_to_selected_list(bContext *C,
if (NOT_RNA_NULL(
owner_ptr = CTX_data_pointer_get_type_silent(C, "active_bone", &RNA_EditBone)) &&
NOT_NULL(idpath = RNA_path_from_struct_to_idproperty(
&owner_ptr, static_cast<IDProperty *>(ptr->data))))
&owner_ptr, static_cast<const IDProperty *>(ptr->data))))
{
*r_lb = CTX_data_collection_get(C, "selected_editable_bones");
}
@ -1205,8 +1207,11 @@ bool UI_context_copy_to_selected_list(bContext *C,
else {
*r_lb = CTX_data_collection_get(C, "selected_editable_sequences");
}
/* Account for properties only being available for some sequence types. */
ensure_list_items_contain_prop = true;
if (is_rna) {
/* Account for properties only being available for some sequence types. */
ensure_list_items_contain_prop = true;
}
}
else if (RNA_struct_is_a(ptr->type, &RNA_FCurve)) {
*r_lb = CTX_data_collection_get(C, "selected_editable_fcurves");
@ -1330,14 +1335,17 @@ bool UI_context_copy_to_selected_list(bContext *C,
/* Special case when we do this for 'Sequence.lock'.
* (if the sequence is locked, it won't be in "selected_editable_sequences"). */
const char *prop_id = RNA_property_identifier(prop);
if (STREQ(prop_id, "lock")) {
if (is_rna && STREQ(prop_id, "lock")) {
*r_lb = CTX_data_collection_get(C, "selected_sequences");
}
else {
*r_lb = CTX_data_collection_get(C, "selected_editable_sequences");
}
/* Account for properties only being available for some sequence types. */
ensure_list_items_contain_prop = true;
if (is_rna) {
/* Account for properties only being available for some sequence types. */
ensure_list_items_contain_prop = true;
}
}
}
return (*r_path != nullptr);
@ -1346,14 +1354,58 @@ bool UI_context_copy_to_selected_list(bContext *C,
return false;
}
if (RNA_property_is_idprop(prop)) {
if (*r_path == nullptr) {
*r_path = RNA_path_from_ptr_to_property_index(ptr, prop, 0, -1);
BLI_assert(*r_path);
}
/* Always resolve custom-properties because they can always exist per-item. */
ensure_list_items_contain_prop = true;
}
if (ensure_list_items_contain_prop) {
const char *prop_id = RNA_property_identifier(prop);
LISTBASE_FOREACH_MUTABLE (CollectionPointerLink *, link, r_lb) {
if ((ptr->type != link->ptr.type) &&
(RNA_struct_type_find_property(link->ptr.type, prop_id) != prop))
{
BLI_remlink(r_lb, link);
MEM_freeN(link);
if (is_rna) {
const char *prop_id = RNA_property_identifier(prop);
LISTBASE_FOREACH_MUTABLE (CollectionPointerLink *, link, r_lb) {
if ((ptr->type != link->ptr.type) &&
(RNA_struct_type_find_property(link->ptr.type, prop_id) != prop))
{
BLI_remlink(r_lb, link);
MEM_freeN(link);
}
}
}
else {
const bool prop_is_array = RNA_property_array_check(prop);
const int prop_array_len = prop_is_array ? RNA_property_array_length(ptr, prop) : -1;
const PropertyType prop_type = RNA_property_type(prop);
LISTBASE_FOREACH_MUTABLE (CollectionPointerLink *, link, r_lb) {
PointerRNA lptr;
PropertyRNA *lprop = nullptr;
RNA_path_resolve_property(&link->ptr, *r_path, &lptr, &lprop);
bool remove = false;
if (lprop == nullptr) {
remove = true;
}
else if (!RNA_property_is_idprop(lprop)) {
remove = true;
}
else if (prop_type != RNA_property_type(lprop)) {
remove = true;
}
else if (prop_is_array != RNA_property_array_check(lprop)) {
remove = true;
}
else if (prop_is_array && (prop_array_len != RNA_property_array_length(&link->ptr, lprop)))
{
remove = true;
}
if (remove) {
BLI_remlink(r_lb, link);
MEM_freeN(link);
}
}
}
}
@ -1388,6 +1440,7 @@ bool UI_context_copy_to_selected_check(PointerRNA *ptr,
RNA_path_resolve_property(ptr_link, path, &lptr, &lprop);
}
else {
BLI_assert(!RNA_property_is_idprop(prop));
lptr = *ptr_link;
lprop = prop;
}

View File

@ -440,7 +440,7 @@ void uiStyleInit()
/* Set default flags based on UI preferences (not render fonts) */
{
const int flag_disable = (BLF_MONOCHROME | BLF_HINTING_NONE | BLF_HINTING_SLIGHT |
BLF_HINTING_FULL);
BLF_HINTING_FULL | BLF_RENDER_SUBPIXELAA);
int flag_enable = 0;
if (U.text_render & USER_TEXT_HINTING_NONE) {
@ -456,6 +456,9 @@ void uiStyleInit()
if (U.text_render & USER_TEXT_DISABLE_AA) {
flag_enable |= BLF_MONOCHROME;
}
if (U.text_render & USER_TEXT_RENDER_SUBPIXELAA) {
flag_enable |= BLF_RENDER_SUBPIXELAA;
}
LISTBASE_FOREACH (uiFont *, font, &U.uifonts) {
if (font->blf_id != -1) {

View File

@ -18,6 +18,7 @@
#include "DNA_node_tree_interface_types.h"
#include "ED_node.hh"
#include "ED_undo.hh"
#include "RNA_access.hh"
#include "RNA_prototypes.h"
@ -390,6 +391,7 @@ bool NodeSocketDropTarget::on_drop(bContext *C, const DragInfo &drag_info) const
/* General update */
ED_node_tree_propagate_change(C, CTX_data_main(C), &nodetree);
ED_undo_push(C, "Insert node group item");
return true;
}
@ -480,6 +482,7 @@ bool NodePanelDropTarget::on_drop(bContext *C, const DragInfo &drag_info) const
/* General update */
ED_node_tree_propagate_change(C, CTX_data_main(C), &nodetree);
ED_undo_push(C, "Insert node group item");
return true;
}

View File

@ -2888,14 +2888,40 @@ void OBJECT_OT_vertex_group_normalize(wmOperatorType *ot)
/** \name Vertex Group Normalize All Operator
* \{ */
/*
* For a given object, determine which target vertex group to normalize.
*/
static eVGroupSelect normalize_vertex_group_target(Object *ob)
{
/* Default to All Groups. */
eVGroupSelect target_group = WT_VGROUP_ALL;
/* If armature is present, and armature is actively deforming the object
(i.e armature modifier isn't disabled) use BONE DEFORM. */
if (BKE_modifiers_is_deformed_by_armature(ob)) {
int defgroup_tot = BKE_object_defgroup_count(ob);
bool *defgroup_validmap = BKE_object_defgroup_validmap_get(ob, defgroup_tot);
for (int i = 0; i < defgroup_tot; i++) {
if (defgroup_validmap[i] == true) {
target_group = WT_VGROUP_BONE_DEFORM;
break;
}
}
MEM_freeN(defgroup_validmap);
}
return target_group;
}
static int vertex_group_normalize_all_exec(bContext *C, wmOperator *op)
{
Object *ob = ED_object_context(C);
/* If armature is present, default to `Deform Bones` otherwise `All Groups`. */
RNA_enum_set(op->ptr,
"group_select_mode",
BKE_modifiers_is_deformed_by_armature(ob) ? WT_VGROUP_BONE_DEFORM : WT_VGROUP_ALL);
eVGroupSelect target_group = normalize_vertex_group_target(ob);
RNA_enum_set(op->ptr, "group_select_mode", target_group);
bool lock_active = RNA_boolean_get(op->ptr, "lock_active");
eVGroupSelect subset_type = static_cast<eVGroupSelect>(

View File

@ -95,6 +95,7 @@ static void add_group_input_node_fn(nodes::LinkSearchOpParams &params)
NODE_INTERFACE_SOCKET_INPUT,
nullptr);
socket_iface->init_from_socket_instance(&params.socket);
params.node_tree.tree_interface.active_item_set(&socket_iface->item);
bNode &group_input = params.add_node("NodeGroupInput");

View File

@ -45,6 +45,8 @@
#include "ED_undo.hh"
#include "WM_api.hh"
using blender::nodes::NodeDeclaration;
namespace blender::ed::space_node {
@ -775,6 +777,9 @@ static void node_panel_toggle_button_cb(bContext *C, void *panel_state_argv, voi
panel_state->flag ^= NODE_PANEL_COLLAPSED;
ED_node_tree_propagate_change(C, bmain, ntree);
/* Make sure panel state updates from the Properties Editor, too. */
WM_event_add_notifier(C, NC_SPACE | ND_SPACE_NODE_VIEW, nullptr);
}
static void ui_node_draw_panel(uiLayout &layout,

View File

@ -192,15 +192,19 @@ static Vector<CornerGroup> calc_corner_groups_for_vertex(const OffsetIndices<int
return groups;
}
/* Calculate groups of corners that are contiguously connected to each input vertex. */
static Array<Vector<CornerGroup>> calc_all_corner_groups(const OffsetIndices<int> faces,
const Span<int> corner_verts,
const Span<int> corner_edges,
const GroupedSpan<int> vert_to_corner_map,
const GroupedSpan<int> edge_to_corner_map,
const Span<int> corner_to_face_map,
const BitSpan split_edges,
const IndexMask &affected_verts)
/* Calculate groups of corners that are contiguously connected to each input vertex.
* BLI_NOINLINE because MSVC 17.7 has a codegen bug here, given there is only a single call to this
* function, not inlining it for all platforms won't affect performance. See
* https://developercommunity.visualstudio.com/t/10448291 for details. */
BLI_NOINLINE static Array<Vector<CornerGroup>> calc_all_corner_groups(
const OffsetIndices<int> faces,
const Span<int> corner_verts,
const Span<int> corner_edges,
const GroupedSpan<int> vert_to_corner_map,
const GroupedSpan<int> edge_to_corner_map,
const Span<int> corner_to_face_map,
const BitSpan split_edges,
const IndexMask &affected_verts)
{
Array<Vector<CornerGroup>> corner_groups(affected_verts.size(), NoInitialization());
affected_verts.foreach_index(GrainSize(512), [&](const int vert, const int mask) {

View File

@ -249,8 +249,8 @@ void VKContext::swap_buffers_pre_handler(const GHOST_VulkanSwapChainData &swap_c
color_attachment->layout_ensure(*this, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
VkImageBlit image_blit = {};
image_blit.srcOffsets[0] = {0, int32_t(swap_chain_data.extent.height) - 1, 0};
image_blit.srcOffsets[1] = {int32_t(swap_chain_data.extent.width), 0, 1};
image_blit.srcOffsets[0] = {0, color_attachment->height_get() - 1, 0};
image_blit.srcOffsets[1] = {color_attachment->width_get(), 0, 1};
image_blit.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
image_blit.srcSubresource.mipLevel = 0;
image_blit.srcSubresource.baseArrayLayer = 0;

View File

@ -71,10 +71,10 @@ Array<VkRect2D, 16> VKFrameBuffer::vk_render_areas_get() const
if (scissor_test_get()) {
int scissor_rect[4];
scissor_get(scissor_rect);
render_area.offset.x = scissor_rect[0];
render_area.offset.y = scissor_rect[1];
render_area.extent.width = scissor_rect[2];
render_area.extent.height = scissor_rect[3];
render_area.offset.x = clamp_i(scissor_rect[0], 0, width_);
render_area.offset.y = clamp_i(scissor_rect[1], 0, height_);
render_area.extent.width = clamp_i(scissor_rect[2], 1, width_ - scissor_rect[0]);
render_area.extent.height = clamp_i(scissor_rect[3], 1, height_ - scissor_rect[1]);
}
else {
render_area.offset.x = 0;
@ -288,11 +288,13 @@ static void blit_aspect(VKCommandBuffer &command_buffer,
image_blit.dstSubresource.mipLevel = 0;
image_blit.dstSubresource.baseArrayLayer = 0;
image_blit.dstSubresource.layerCount = 1;
image_blit.dstOffsets[0].x = dst_offset_x;
image_blit.dstOffsets[0].y = dst_offset_y;
image_blit.dstOffsets[0].x = min_ii(dst_offset_x, dst_texture.width_get());
image_blit.dstOffsets[0].y = min_ii(dst_offset_y, dst_texture.height_get());
image_blit.dstOffsets[0].z = 0;
image_blit.dstOffsets[1].x = dst_offset_x + src_texture.width_get();
image_blit.dstOffsets[1].y = dst_offset_y + src_texture.height_get();
image_blit.dstOffsets[1].x = min_ii(dst_offset_x + src_texture.width_get(),
dst_texture.width_get());
image_blit.dstOffsets[1].y = min_ii(dst_offset_y + src_texture.height_get(),
dst_texture.height_get());
image_blit.dstOffsets[1].z = 1;
command_buffer.blit(dst_texture, src_texture, Span<VkImageBlit>(&image_blit, 1));

View File

@ -1338,6 +1338,8 @@ typedef enum eText_Draw_Options {
USER_TEXT_HINTING_NONE = (1 << 1),
USER_TEXT_HINTING_SLIGHT = (1 << 2),
USER_TEXT_HINTING_FULL = (1 << 3),
USER_TEXT_RENDER_SUBPIXELAA = (1 << 4),
} eText_Draw_Options;
/**

View File

@ -178,7 +178,7 @@ bool RNA_path_resolve_elements(PointerRNA *ptr, const char *path, struct ListBas
* \param needle: Custom property object to find.
* \return Relative path or NULL.
*/
char *RNA_path_from_struct_to_idproperty(PointerRNA *ptr, struct IDProperty *needle);
char *RNA_path_from_struct_to_idproperty(PointerRNA *ptr, const struct IDProperty *needle);
/**
* Find the actual ID pointer and path from it to the given ID.
@ -196,6 +196,11 @@ char *RNA_path_from_real_ID_to_struct(struct Main *bmain,
struct ID **r_real);
char *RNA_path_from_ID_to_property(const PointerRNA *ptr, PropertyRNA *prop);
char *RNA_path_from_ptr_to_property_index(const PointerRNA *ptr,
PropertyRNA *prop,
int index_dim,
int index);
/**
* \param index_dim: The dimension to show, 0 disables. 1 for 1d array, 2 for 2d. etc.
* \param index: The *flattened* index to use when \a `index_dim > 0`,

View File

@ -892,10 +892,8 @@ static void rna_def_node_interface_socket(BlenderRNA *brna)
prop = RNA_def_property(srna, "in_out", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, nullptr, "flag");
RNA_def_property_enum_items(prop, node_tree_interface_socket_in_out_items);
RNA_def_property_enum_default(prop, NODE_INTERFACE_SOCKET_INPUT);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Input/Output Type", "Input or output socket type");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_NodeTreeInterfaceItem_update");
prop = RNA_def_property(srna, "hide_value", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, nullptr, "flag", NODE_INTERFACE_SOCKET_HIDE_VALUE);

View File

@ -797,14 +797,14 @@ static char *rna_idp_path_create(IDP_Chain *child_link)
}
static char *rna_idp_path(PointerRNA *ptr,
IDProperty *haystack,
IDProperty *needle,
const IDProperty *haystack,
const IDProperty *needle,
IDP_Chain *parent_link)
{
char *path = nullptr;
IDP_Chain link;
IDProperty *iter;
const IDProperty *iter;
int i;
BLI_assert(haystack->type == IDP_GROUP);
@ -861,7 +861,7 @@ static char *rna_idp_path(PointerRNA *ptr,
}
else if (iter->type == IDP_IDPARRAY) {
if (prop->type == PROP_COLLECTION) {
IDProperty *array = IDP_IDPArray(iter);
const IDProperty *array = IDP_IDPArray(iter);
if (needle >= array && needle < (iter->len + array)) { /* found! */
link.name = iter->name;
link.index = int(needle - array);
@ -894,9 +894,9 @@ static char *rna_idp_path(PointerRNA *ptr,
return path;
}
char *RNA_path_from_struct_to_idproperty(PointerRNA *ptr, IDProperty *needle)
char *RNA_path_from_struct_to_idproperty(PointerRNA *ptr, const IDProperty *needle)
{
IDProperty *haystack = RNA_struct_idprops(ptr, false);
const IDProperty *haystack = RNA_struct_idprops(ptr, false);
if (haystack) { /* can fail when called on bones */
return rna_idp_path(ptr, haystack, needle, nullptr);
@ -916,7 +916,7 @@ static char *rna_path_from_ID_to_idpgroup(const PointerRNA *ptr)
*/
PointerRNA id_ptr = RNA_id_pointer_create(ptr->owner_id);
return RNA_path_from_struct_to_idproperty(&id_ptr, static_cast<IDProperty *>(ptr->data));
return RNA_path_from_struct_to_idproperty(&id_ptr, static_cast<const IDProperty *>(ptr->data));
}
ID *RNA_find_real_ID_and_path(ID *id, const char **r_path)
@ -1067,21 +1067,12 @@ static void rna_path_array_multi_string_from_flat_index(const PointerRNA *ptr,
}
}
char *RNA_path_from_ID_to_property_index(const PointerRNA *ptr,
PropertyRNA *prop,
int index_dim,
int index)
static char *rna_path_from_ptr_to_property_index_ex(
const PointerRNA *ptr, PropertyRNA *prop, int index_dim, int index, const char *path_prefix)
{
const bool is_rna = (prop->magic == RNA_MAGIC);
const char *propname;
char *ptrpath, *path;
if (!ptr->owner_id || !ptr->data) {
return nullptr;
}
/* path from ID to the struct holding this property */
ptrpath = RNA_path_from_ID_to_struct(ptr);
char *path;
propname = RNA_property_identifier(prop);
@ -1095,18 +1086,17 @@ char *RNA_path_from_ID_to_property_index(const PointerRNA *ptr,
ptr, prop, index_dim, index, index_str, sizeof(index_str));
}
if (ptrpath) {
if (path_prefix) {
if (is_rna) {
path = BLI_sprintfN("%s.%s%s", ptrpath, propname, index_str);
path = BLI_sprintfN("%s.%s%s", path_prefix, propname, index_str);
}
else {
char propname_esc[MAX_IDPROP_NAME * 2];
BLI_str_escape(propname_esc, propname, sizeof(propname_esc));
path = BLI_sprintfN("%s[\"%s\"]%s", ptrpath, propname_esc, index_str);
path = BLI_sprintfN("%s[\"%s\"]%s", path_prefix, propname_esc, index_str);
}
MEM_freeN(ptrpath);
}
else if (RNA_struct_is_ID(ptr->type)) {
else {
if (is_rna) {
path = BLI_sprintfN("%s%s", propname, index_str);
}
@ -1116,13 +1106,38 @@ char *RNA_path_from_ID_to_property_index(const PointerRNA *ptr,
path = BLI_sprintfN("[\"%s\"]%s", propname_esc, index_str);
}
}
else {
path = nullptr;
}
return path;
}
char *RNA_path_from_ptr_to_property_index(const PointerRNA *ptr,
PropertyRNA *prop,
int index_dim,
int index)
{
return rna_path_from_ptr_to_property_index_ex(ptr, prop, index_dim, index, nullptr);
}
char *RNA_path_from_ID_to_property_index(const PointerRNA *ptr,
PropertyRNA *prop,
int index_dim,
int index)
{
if (!ptr->owner_id || !ptr->data) {
return nullptr;
}
/* Path from ID to the struct holding this property. */
char *ptrpath = RNA_path_from_ID_to_struct(ptr);
/* When there is no path and this is not an ID, there is no path to the ID. */
char *path = ((ptrpath == nullptr) && !RNA_struct_is_ID(ptr->type)) ?
nullptr :
rna_path_from_ptr_to_property_index_ex(ptr, prop, index_dim, index, ptrpath);
if (ptrpath != nullptr) {
MEM_freeN(ptrpath);
}
return path;
}
char *RNA_path_from_ID_to_property(const PointerRNA *ptr, PropertyRNA *prop)
{
return RNA_path_from_ID_to_property_index(ptr, prop, 0, -1);
@ -1333,32 +1348,11 @@ char *RNA_path_struct_property_py(PointerRNA *ptr, PropertyRNA *prop, int index)
return ret;
}
char *RNA_path_property_py(const PointerRNA * /*ptr*/, PropertyRNA *prop, int index)
char *RNA_path_property_py(const PointerRNA *ptr, PropertyRNA *prop, int index)
{
const bool is_rna = (prop->magic == RNA_MAGIC);
const char *propname = RNA_property_identifier(prop);
char *ret;
if ((index == -1) || (RNA_property_array_check(prop) == false)) {
if (is_rna) {
ret = BLI_strdup(propname);
}
else {
char propname_esc[MAX_IDPROP_NAME * 2];
BLI_str_escape(propname_esc, propname, sizeof(propname_esc));
ret = BLI_sprintfN("[\"%s\"]", propname_esc);
}
if (RNA_property_array_check(prop) == false) {
index = -1;
}
else {
if (is_rna) {
ret = BLI_sprintfN("%s[%d]", propname, index);
}
else {
char propname_esc[MAX_IDPROP_NAME * 2];
BLI_str_escape(propname_esc, propname, sizeof(propname_esc));
ret = BLI_sprintfN("[\"%s\"][%d]", propname_esc, index);
}
}
return ret;
const int index_dim = (index == -1) ? 0 : 1;
return RNA_path_from_ptr_to_property_index(ptr, prop, index_dim, index);
}

View File

@ -3798,6 +3798,12 @@ static void rna_def_userdef_theme_space_nla(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Channel", "Nonlinear Animation Channel");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "dopesheet_subchannel", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, nullptr, "ds_subchannel");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Sub-channel", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "nla_track", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, nullptr, "nla_track");
RNA_def_property_array(prop, 3);
@ -5174,6 +5180,12 @@ static void rna_def_userdef_view(BlenderRNA *brna)
prop, "Text Anti-Aliasing", "Smooth jagged edges of user interface text");
RNA_def_property_update(prop, 0, "rna_userdef_text_update");
prop = RNA_def_property(srna, "use_text_render_subpixelaa", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, nullptr, "text_render", USER_TEXT_RENDER_SUBPIXELAA);
RNA_def_property_ui_text(
prop, "Text Subpixel Anti-Aliasing", "Render text for optimal horizontal placement");
RNA_def_property_update(prop, 0, "rna_userdef_text_update");
prop = RNA_def_property(srna, "text_hinting", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, nullptr, "text_render");
RNA_def_property_enum_items(prop, text_hinting_items);

View File

@ -2452,6 +2452,11 @@ static int wm_userpref_read_exec(bContext *C, wmOperator *op)
U.runtime.is_dirty = true;
}
/* Ensure the correct icon textures are loaded. When the current theme didn't had an
* #icon_border_intensity, but the loaded theme has, the icon with border intensity needs to be
* loaded. */
UI_icons_reload_internal_textures();
BKE_callback_exec_null(bmain, BKE_CB_EVT_EXTENSION_REPOS_UPDATE_POST);
/* Needed to recalculate UI scaling values (eg, #UserDef.inv_dpi_fac). */