diff options
-rw-r--r-- | source/blender/makesrna/intern/rna_access.c | 72 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_rna.c | 35 |
2 files changed, 59 insertions, 48 deletions
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index f52e13ba1c9..a0ceb6ce66a 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -2309,6 +2309,20 @@ void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value) } } +static void rna_property_boolean_get_default_array_values(BoolPropertyRNA *bprop, bool *values) +{ + unsigned int length = bprop->property.totarraylength; + + if (bprop->defaultarray) { + memcpy(values, bprop->defaultarray, sizeof(bool) * length); + } + else { + for (unsigned int i = 0; i < length; i++) { + values[i] = bprop->defaultvalue; + } + } +} + void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, bool *values) { BoolPropertyRNA *bprop = (BoolPropertyRNA *)prop; @@ -2334,10 +2348,8 @@ void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, bool *va bprop->getarray(ptr, values); else if (bprop->getarray_ex) bprop->getarray_ex(ptr, prop, values); - else if (bprop->defaultarray) - memcpy(values, bprop->defaultarray, sizeof(bool) * prop->totarraylength); else - memset(values, 0, sizeof(bool) * prop->totarraylength); + rna_property_boolean_get_default_array_values(bprop, values); } bool RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index) @@ -2461,10 +2473,8 @@ void RNA_property_boolean_get_default_array(PointerRNA *UNUSED(ptr), PropertyRNA if (prop->arraydimension == 0) values[0] = bprop->defaultvalue; - else if (bprop->defaultarray) - memcpy(values, bprop->defaultarray, sizeof(bool) * prop->totarraylength); else - memset(values, 0, sizeof(bool) * prop->totarraylength); + rna_property_boolean_get_default_array_values(bprop, values); } bool RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index) @@ -2544,6 +2554,20 @@ void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value) } } +static void rna_property_int_get_default_array_values(IntPropertyRNA *iprop, int *values) +{ + unsigned int length = iprop->property.totarraylength; + + if (iprop->defaultarray) { + memcpy(values, iprop->defaultarray, sizeof(int) * length); + } + else { + for (unsigned int i = 0; i < length; i++) { + values[i] = iprop->defaultvalue; + } + } +} + void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values) { IntPropertyRNA *iprop = (IntPropertyRNA *)prop; @@ -2565,10 +2589,8 @@ void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values) iprop->getarray(ptr, values); else if (iprop->getarray_ex) iprop->getarray_ex(ptr, prop, values); - else if (iprop->defaultarray) - memcpy(values, iprop->defaultarray, sizeof(int) * prop->totarraylength); else - memset(values, 0, sizeof(int) * prop->totarraylength); + rna_property_int_get_default_array_values(iprop, values); } void RNA_property_int_get_array_range(PointerRNA *ptr, PropertyRNA *prop, int values[2]) @@ -2716,10 +2738,8 @@ void RNA_property_int_get_default_array(PointerRNA *UNUSED(ptr), PropertyRNA *pr if (prop->arraydimension == 0) values[0] = iprop->defaultvalue; - else if (iprop->defaultarray) - memcpy(values, iprop->defaultarray, sizeof(int) * prop->totarraylength); else - memset(values, 0, sizeof(int) * prop->totarraylength); + rna_property_int_get_default_array_values(iprop, values); } int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index) @@ -2809,6 +2829,20 @@ void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value) } } +static void rna_property_float_get_default_array_values(FloatPropertyRNA *fprop, float *values) +{ + unsigned int length = fprop->property.totarraylength; + + if (fprop->defaultarray) { + memcpy(values, fprop->defaultarray, sizeof(float) * length); + } + else { + for (unsigned int i = 0; i < length; i++) { + values[i] = fprop->defaultvalue; + } + } +} + void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values) { FloatPropertyRNA *fprop = (FloatPropertyRNA *)prop; @@ -2836,10 +2870,8 @@ void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *val fprop->getarray(ptr, values); else if (fprop->getarray_ex) fprop->getarray_ex(ptr, prop, values); - else if (fprop->defaultarray) - memcpy(values, fprop->defaultarray, sizeof(float) * prop->totarraylength); else - memset(values, 0, sizeof(float) * prop->totarraylength); + rna_property_float_get_default_array_values(fprop, values); } void RNA_property_float_get_array_range(PointerRNA *ptr, PropertyRNA *prop, float values[2]) @@ -3003,10 +3035,8 @@ void RNA_property_float_get_default_array(PointerRNA *UNUSED(ptr), PropertyRNA * if (prop->arraydimension == 0) values[0] = fprop->defaultvalue; - else if (fprop->defaultarray) - memcpy(values, fprop->defaultarray, sizeof(float) * prop->totarraylength); else - memset(values, 0, sizeof(float) * prop->totarraylength); + rna_property_float_get_default_array_values(fprop, values); } float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index) @@ -6438,15 +6468,15 @@ ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *UNUSE if (!(parm->flag_parameter & PARM_REQUIRED) && !(parm->flag & PROP_DYNAMIC)) { switch (parm->type) { case PROP_BOOLEAN: - if (parm->arraydimension) memcpy(data, ((BoolPropertyRNA *)parm)->defaultarray, size); + if (parm->arraydimension) rna_property_boolean_get_default_array_values((BoolPropertyRNA *)parm, data); else memcpy(data, &((BoolPropertyRNA *)parm)->defaultvalue, size); break; case PROP_INT: - if (parm->arraydimension) memcpy(data, ((IntPropertyRNA *)parm)->defaultarray, size); + if (parm->arraydimension) rna_property_int_get_default_array_values((IntPropertyRNA *)parm, data); else memcpy(data, &((IntPropertyRNA *)parm)->defaultvalue, size); break; case PROP_FLOAT: - if (parm->arraydimension) memcpy(data, ((FloatPropertyRNA *)parm)->defaultarray, size); + if (parm->arraydimension) rna_property_float_get_default_array_values((FloatPropertyRNA *)parm, data); else memcpy(data, &((FloatPropertyRNA *)parm)->defaultvalue, size); break; case PROP_ENUM: 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); } } |