[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