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:
authorAlexander Gavrilov <angavrilov@gmail.com>2018-11-11 20:56:42 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2018-11-15 19:42:03 +0300
commite6276e1748912183ca87df21f0efdeefd77639f7 (patch)
tree6a5b610da7892c45e562acaf94f24f1ee88db0f0 /source/blender/makesrna/intern/rna_rna.c
parent8610b57271eb792b7fbdf31596ab432794ba7a88 (diff)
RNA: always allow fallback from defaultarray to defaultvalue.
The python getters for the array already allowed that, but not the actual C RNA access functions. This is inconsistent, so implement the fallback in all cases. Now if by default the property should contain the same value in all positions, it is not necessary to actually use an array. Reviewers: campbellbarton Differential Revision: https://developer.blender.org/D3940
Diffstat (limited to 'source/blender/makesrna/intern/rna_rna.c')
-rw-r--r--source/blender/makesrna/intern/rna_rna.c35
1 files changed, 8 insertions, 27 deletions
diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c
index cb2ef85d713..d5755387ba0 100644
--- a/source/blender/makesrna/intern/rna_rna.c
+++ b/source/blender/makesrna/intern/rna_rna.c
@@ -751,46 +751,27 @@ static bool rna_NumberProperty_is_array_get(PointerRNA *ptr)
static void rna_IntProperty_default_array_get(PointerRNA *ptr, int *values)
{
PropertyRNA *prop = (PropertyRNA *)ptr->data;
- IntPropertyRNA *nprop = (IntPropertyRNA *)prop;
rna_idproperty_check(&prop, ptr);
-
- if (nprop->defaultarray) {
- memcpy(values, nprop->defaultarray, prop->totarraylength * sizeof(int));
- }
- else {
- int i;
- for (i = 0; i < prop->totarraylength; i++)
- values[i] = nprop->defaultvalue;
+ if (prop->totarraylength > 0) {
+ RNA_property_int_get_default_array(ptr, prop, values);
}
}
+
static void rna_BoolProperty_default_array_get(PointerRNA *ptr, bool *values)
{
PropertyRNA *prop = (PropertyRNA *)ptr->data;
- BoolPropertyRNA *nprop = (BoolPropertyRNA *)prop;
rna_idproperty_check(&prop, ptr);
-
- if (nprop->defaultarray) {
- memcpy(values, nprop->defaultarray, prop->totarraylength * sizeof(bool));
- }
- else {
- int i;
- for (i = 0; i < prop->totarraylength; i++)
- values[i] = nprop->defaultvalue;
+ if (prop->totarraylength > 0) {
+ RNA_property_boolean_get_default_array(ptr, prop, values);
}
}
+
static void rna_FloatProperty_default_array_get(PointerRNA *ptr, float *values)
{
PropertyRNA *prop = (PropertyRNA *)ptr->data;
- FloatPropertyRNA *nprop = (FloatPropertyRNA *)prop;
rna_idproperty_check(&prop, ptr);
-
- if (nprop->defaultarray) {
- memcpy(values, nprop->defaultarray, prop->totarraylength * sizeof(float));
- }
- else {
- int i;
- for (i = 0; i < prop->totarraylength; i++)
- values[i] = nprop->defaultvalue;
+ if (prop->totarraylength > 0) {
+ RNA_property_float_get_default_array(ptr, prop, values);
}
}