Merge branch 'blender-v3.0-release'
This commit is contained in:
commit
ba6427adfa
|
@ -296,13 +296,13 @@ static BufferParams scale_buffer_params(const BufferParams ¶ms, int resoluti
|
|||
|
||||
scaled_params.window_x = params.window_x / resolution_divider;
|
||||
scaled_params.window_y = params.window_y / resolution_divider;
|
||||
scaled_params.window_width = params.window_width / resolution_divider;
|
||||
scaled_params.window_height = params.window_height / resolution_divider;
|
||||
scaled_params.window_width = max(1, params.window_width / resolution_divider);
|
||||
scaled_params.window_height = max(1, params.window_height / resolution_divider);
|
||||
|
||||
scaled_params.full_x = params.full_x / resolution_divider;
|
||||
scaled_params.full_y = params.full_y / resolution_divider;
|
||||
scaled_params.full_width = params.full_width / resolution_divider;
|
||||
scaled_params.full_height = params.full_height / resolution_divider;
|
||||
scaled_params.full_width = max(1, params.full_width / resolution_divider);
|
||||
scaled_params.full_height = max(1, params.full_height / resolution_divider);
|
||||
|
||||
scaled_params.update_offset_stride();
|
||||
|
||||
|
|
|
@ -707,7 +707,8 @@ class ASSETBROWSER_PT_metadata(asset_utils.AssetBrowserPanel, Panel):
|
|||
asset_library_ref = context.asset_library_ref
|
||||
asset_lib_path = bpy.types.AssetHandle.get_full_library_path(asset_file_handle, asset_library_ref)
|
||||
|
||||
show_developer_ui = context.preferences.view.show_developer_ui
|
||||
prefs = context.preferences
|
||||
show_asset_debug_info = prefs.view.show_developer_ui and prefs.experimental.show_asset_debug_info
|
||||
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False # No animation.
|
||||
|
@ -716,7 +717,7 @@ class ASSETBROWSER_PT_metadata(asset_utils.AssetBrowserPanel, Panel):
|
|||
# If the active file is an ID, use its name directly so renaming is possible from right here.
|
||||
layout.prop(asset_file_handle.local_id, "name")
|
||||
|
||||
if show_developer_ui:
|
||||
if show_asset_debug_info:
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Asset Catalog:")
|
||||
col.prop(asset_file_handle.local_id.asset_data, "catalog_id", text="UUID")
|
||||
|
@ -724,7 +725,7 @@ class ASSETBROWSER_PT_metadata(asset_utils.AssetBrowserPanel, Panel):
|
|||
else:
|
||||
layout.prop(asset_file_handle, "name")
|
||||
|
||||
if show_developer_ui:
|
||||
if show_asset_debug_info:
|
||||
col = layout.column(align=True)
|
||||
col.enabled = False
|
||||
col.label(text="Asset Catalog:")
|
||||
|
|
|
@ -2326,6 +2326,7 @@ class USERPREF_PT_experimental_debugging(ExperimentalPanel, Panel):
|
|||
({"property": "proxy_to_override_auto_conversion"}, "T91671"),
|
||||
({"property": "use_cycles_debug"}, None),
|
||||
({"property": "use_geometry_nodes_legacy"}, "T91274"),
|
||||
({"property": "show_asset_debug_info"}, None),
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
@ -1149,7 +1149,27 @@ void psys_copy_particles(ParticleSystem *psys_dst, ParticleSystem *psys_src)
|
|||
/* Copy particles and children. */
|
||||
psys_dst->particles = MEM_dupallocN(psys_src->particles);
|
||||
psys_dst->child = MEM_dupallocN(psys_src->child);
|
||||
if (psys_dst->part->type == PART_HAIR) {
|
||||
|
||||
/* Ideally this should only be performed if `(psys_dst->part->type == PART_HAIR)`.
|
||||
*
|
||||
* But #ParticleData (`psys_dst`) is some sub-data of the #Object ID, while #ParticleSettings
|
||||
* (`psys_dst->part`) is another ID. In case the particle settings is a linked ID that gets
|
||||
* missing, it will be replaced (in readfile code) by a place-holder, which defaults to a
|
||||
* `PART_EMITTER` type of particle settings.
|
||||
*
|
||||
* This leads to a situation where each particle of `psys_dst` still has a valid allocated `hair`
|
||||
* data, which should still be preserved in case the missing particle settings ID becomes valid
|
||||
* again.
|
||||
*
|
||||
* Furthermore, #free_hair() always frees `pa->hair` if it's not NULL, regardless of the
|
||||
* particle type. So *not* copying here would cause a double free (or more), e.g. freeing the
|
||||
* copy-on-write copy and the original data will crash Blender.
|
||||
* In any case, sharing pointers between `psys_src` and `psys_dst` should be forbidden.
|
||||
*
|
||||
* So while we could in theory 'sanitize' the situation by setting `pa->hair` to NULL in the new
|
||||
* copy (in case of non-`PART_HAIR` type), it is probably safer for now to systematically
|
||||
* duplicate the `hair` data if available. */
|
||||
{
|
||||
ParticleData *pa;
|
||||
int p;
|
||||
for (p = 0, pa = psys_dst->particles; p < psys_dst->totpart; p++, pa++) {
|
||||
|
|
|
@ -652,6 +652,7 @@ typedef struct UserDef_Experimental {
|
|||
char no_proxy_to_override_conversion;
|
||||
char use_cycles_debug;
|
||||
char use_geometry_nodes_legacy;
|
||||
char show_asset_debug_info;
|
||||
char SANITIZE_AFTER_HERE;
|
||||
/* The following options are automatically sanitized (set to 0)
|
||||
* when the release cycle is not alpha. */
|
||||
|
@ -662,7 +663,7 @@ typedef struct UserDef_Experimental {
|
|||
char use_sculpt_tools_tilt;
|
||||
char use_extended_asset_browser;
|
||||
char use_override_templates;
|
||||
char _pad[3];
|
||||
char _pad[2];
|
||||
/** `makesdna` does not allow empty structs. */
|
||||
} UserDef_Experimental;
|
||||
|
||||
|
|
|
@ -6399,6 +6399,12 @@ static void rna_def_userdef_experimental(BlenderRNA *brna)
|
|||
"data-blocks as assets, not just poses");
|
||||
RNA_def_property_update(prop, 0, "rna_userdef_ui_update");
|
||||
|
||||
prop = RNA_def_property(srna, "show_asset_debug_info", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_ui_text(prop,
|
||||
"Asset Debug Info",
|
||||
"Enable some extra fields in the Asset Browser to aid in debugging");
|
||||
RNA_def_property_update(prop, 0, "rna_userdef_ui_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_override_templates", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "use_override_templates", 1);
|
||||
RNA_def_property_ui_text(
|
||||
|
|
Loading…
Reference in New Issue