[Bf-blender-cvs] [43e31d26a95] blender-v3.2-release: Fix T97927: bpy.utils.units.to_string uses wrong units for velocity, acceleration, lens length, and power

Bastien Montagne noreply at git.blender.org
Mon May 9 16:35:12 CEST 2022


Commit: 43e31d26a955034882035d2e0ec320dfab8f1375
Author: Bastien Montagne
Date:   Mon May 9 16:32:09 2022 +0200
Branches: blender-v3.2-release
https://developer.blender.org/rB43e31d26a955034882035d2e0ec320dfab8f1375

Fix T97927: bpy.utils.units.to_string uses wrong units for velocity, acceleration, lens length, and power

`TEMPERATURE` type was also missing, not only the new-ish
`TIME_ABSOLUTE` one...

Added a static assert on the size of the `bpyunits_ucategories_items`
array, and a comment on anonymous enum of `B_UNIT_`, in the hope this
won't happen again in the future.

===================================================================

M	source/blender/blenkernel/BKE_unit.h
M	source/blender/python/intern/bpy_utils_units.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_unit.h b/source/blender/blenkernel/BKE_unit.h
index d6de95a19b7..823d32f83ba 100644
--- a/source/blender/blenkernel/BKE_unit.h
+++ b/source/blender/blenkernel/BKE_unit.h
@@ -91,7 +91,7 @@ const char *BKE_unit_identifier_get(const void *usys_pt, int index);
 double BKE_unit_scalar_get(const void *usys_pt, int index);
 bool BKE_unit_is_suppressed(const void *usys_pt, int index);
 
-/** Aligned with #PropertyUnit. */
+/** Aligned with #PropertyUnit and `bpyunits_ucategories_items` in `bpy_utils_units.c`. */
 enum {
   B_UNIT_NONE = 0,
   B_UNIT_LENGTH = 1,
diff --git a/source/blender/python/intern/bpy_utils_units.c b/source/blender/python/intern/bpy_utils_units.c
index e0e8ef5fe07..1e5856a3285 100644
--- a/source/blender/python/intern/bpy_utils_units.c
+++ b/source/blender/python/intern/bpy_utils_units.c
@@ -43,13 +43,19 @@ static const char *bpyunits_ucategories_items[] = {
     "MASS",
     "ROTATION",
     "TIME",
+    "TIME_ABSOLUTE",
     "VELOCITY",
     "ACCELERATION",
     "CAMERA",
     "POWER",
+    "TEMPERATURE",
     NULL,
 };
 
+BLI_STATIC_ASSERT(
+    ARRAY_SIZE(bpyunits_ucategories_items) == B_UNIT_TYPE_TOT + 1,
+    "`bpyunits_ucategories_items` should match `B_UNIT_` enum items in `BKE_units.h`")
+
 /**
  * These fields are just empty placeholders, actual values get set in initializations functions.
  * This allows us to avoid many handwriting, and above all,



More information about the Bf-blender-cvs mailing list