Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <bastien@blender.org>2022-05-09 17:32:09 +0300
committerBastien Montagne <bastien@blender.org>2022-05-09 17:34:11 +0300
commit43e31d26a955034882035d2e0ec320dfab8f1375 (patch)
tree835c99ab083acf3c0d1ded7cd4273c7e41fde3e5
parent6f773b1a4f8a21d8b3d36769f148d88e9a4eebcb (diff)
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.
-rw-r--r--source/blender/blenkernel/BKE_unit.h2
-rw-r--r--source/blender/python/intern/bpy_utils_units.c6
2 files changed, 7 insertions, 1 deletions
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,