[Bf-blender-cvs] [a278a972323] temp-dynamic-overrides: Dynamic length for color arrays
Dalai Felinto
noreply at git.blender.org
Wed May 16 00:43:36 CEST 2018
Commit: a278a972323ead1da6220808131c5f4c52bfa42c
Author: Dalai Felinto
Date: Wed May 16 00:43:21 2018 +0200
Branches: temp-dynamic-overrides
https://developer.blender.org/rBa278a972323ead1da6220808131c5f4c52bfa42c
Dynamic length for color arrays
===================================================================
M source/blender/blenkernel/intern/layer.c
M source/blender/makesdna/DNA_layer_types.h
M source/blender/makesrna/intern/rna_dynamic_override.c
===================================================================
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 2ed8061bc95..90116c15b3c 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -2022,6 +2022,7 @@ DynamicOverrideProperty *BKE_view_layer_override_property_add(
dyn_prop->rna_path = rna_path_str;
const bool is_array = RNA_property_array_check(prop);
+ dyn_prop->array_len = RNA_property_array_length(ptr, prop);
/* TODO handle array. */
switch (RNA_property_type(prop)) {
diff --git a/source/blender/makesdna/DNA_layer_types.h b/source/blender/makesdna/DNA_layer_types.h
index b4743dc03e6..74a28924a07 100644
--- a/source/blender/makesdna/DNA_layer_types.h
+++ b/source/blender/makesdna/DNA_layer_types.h
@@ -80,7 +80,8 @@ typedef struct DynamicOverrideProperty {
short property_type; /* eDynamicOverridePropertyType */
short override_mode; /* eDynamicOverrideMode */
short id_type;
- short pad[2];
+ short array_len;
+ short pad;
} DynamicOverrideProperty;
typedef struct OverrideSet {
diff --git a/source/blender/makesrna/intern/rna_dynamic_override.c b/source/blender/makesrna/intern/rna_dynamic_override.c
index 60e57d9c2e5..275e833864c 100644
--- a/source/blender/makesrna/intern/rna_dynamic_override.c
+++ b/source/blender/makesrna/intern/rna_dynamic_override.c
@@ -159,16 +159,26 @@ static void rna_DynamicOverrideProperty_value_float_range(
*max = FLT_MAX;
}
+static int rna_DynamicOverrideProperty_value_color_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
+{
+ DynamicOverrideProperty *dyn_prop = ptr->data;
+ return dyn_prop->array_len;
+}
+
static void rna_DynamicOverrideProperty_value_color_get(PointerRNA *ptr, float *values)
{
DynamicOverrideProperty *dyn_prop = ptr->data;
- copy_v3_v3(values, dyn_prop->data.f);
+ for (int i = 0; i < dyn_prop->array_len; i++) {
+ values[i] = dyn_prop->data.f[i];
+ }
}
static void rna_DynamicOverrideProperty_value_color_set(PointerRNA *ptr, const float *values)
{
DynamicOverrideProperty *dyn_prop = ptr->data;
- copy_v3_v3(dyn_prop->data.f, values);
+ for (int i = 0; i < dyn_prop->array_len; i++) {
+ dyn_prop->data.f[i] = values[i];
+ }
}
#else
@@ -265,7 +275,9 @@ void RNA_def_dynamic_override(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, NULL);
prop = RNA_def_property(srna, "value_color", PROP_FLOAT, PROP_COLOR);
- RNA_def_property_array(prop, 3);
+ RNA_def_property_flag(prop, PROP_DYNAMIC);
+ RNA_def_property_multi_array(prop, 1, NULL);
+ RNA_def_property_dynamic_array_funcs(prop, "rna_DynamicOverrideProperty_value_color_get_length");
RNA_def_property_float_funcs(prop,
"rna_DynamicOverrideProperty_value_color_get",
"rna_DynamicOverrideProperty_value_color_set",
More information about the Bf-blender-cvs
mailing list