diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2018-11-11 20:56:42 +0300 |
---|---|---|
committer | Alexander Gavrilov <angavrilov@gmail.com> | 2018-11-15 19:42:03 +0300 |
commit | e6276e1748912183ca87df21f0efdeefd77639f7 (patch) | |
tree | 6a5b610da7892c45e562acaf94f24f1ee88db0f0 /source/blender/makesrna/intern/rna_rna.c | |
parent | 8610b57271eb792b7fbdf31596ab432794ba7a88 (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.c | 35 |
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); } } |