optimized blenloader for loops #106573
|
@ -173,8 +173,13 @@ static void version_idproperty_move_data_float(IDPropertyUIDataFloat *ui_data,
|
||||||
ui_data->default_array = static_cast<double *>(
|
ui_data->default_array = static_cast<double *>(
|
||||||
MEM_malloc_arrayN(array_len, sizeof(double), __func__));
|
MEM_malloc_arrayN(array_len, sizeof(double), __func__));
|
||||||
const float *old_default_array = static_cast<const float *>(IDP_Array(default_value));
|
const float *old_default_array = static_cast<const float *>(IDP_Array(default_value));
|
||||||
for (int i = 0; i < ui_data->default_array_len; i++) {
|
int change;
|
||||||
ui_data->default_array[i] = double(old_default_array[i]);
|
for (int i = ui_data->default_array_len; --i) {
|
||||||
|
/*optimized loop to use deincrement instead to use less resources
|
||||||
|
because now it automatically stops when a reaches 0 and it loops
|
||||||
|
the same number of times*/
|
||||||
|
change = (ui_data->default_array_len - i);
|
||||||
|
ui_data->default_array[change] = double(old_default_array[change]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (default_value->subtype == IDP_DOUBLE) {
|
else if (default_value->subtype == IDP_DOUBLE) {
|
||||||
|
@ -483,7 +488,10 @@ static bool do_versions_sequencer_color_balance_sop(Sequence *seq, void * /*user
|
||||||
if (smd->type == seqModifierType_ColorBalance) {
|
if (smd->type == seqModifierType_ColorBalance) {
|
||||||
StripColorBalance *cb = &((ColorBalanceModifierData *)smd)->color_balance;
|
StripColorBalance *cb = &((ColorBalanceModifierData *)smd)->color_balance;
|
||||||
cb->method = SEQ_COLOR_BALANCE_METHOD_LIFTGAMMAGAIN;
|
cb->method = SEQ_COLOR_BALANCE_METHOD_LIFTGAMMAGAIN;
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 3; --i) {
|
||||||
|
/*optimized loop to use deincrement instead to use less resources
|
||||||
|
because now it automatically stops when a reaches 0 and it loops
|
||||||
|
the same number of times*/
|
||||||
copy_v3_fl(cb->slope, 1.0f);
|
copy_v3_fl(cb->slope, 1.0f);
|
||||||
copy_v3_fl(cb->offset, 1.0f);
|
copy_v3_fl(cb->offset, 1.0f);
|
||||||
copy_v3_fl(cb->power, 1.0f);
|
copy_v3_fl(cb->power, 1.0f);
|
||||||
|
@ -2300,8 +2308,13 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
|
||||||
if (smd->bind_verts_num && smd->verts) {
|
if (smd->bind_verts_num && smd->verts) {
|
||||||
smd->mesh_verts_num = smd->bind_verts_num;
|
smd->mesh_verts_num = smd->bind_verts_num;
|
||||||
|
|
||||||
for (uint i = 0; i < smd->bind_verts_num; i++) {
|
uint change;
|
||||||
smd->verts[i].vertex_idx = i;
|
for (uint i = smd->bind_verts_num; --i) {
|
||||||
|
/*optimized loop to use deincrement instead to use less resources
|
||||||
|
because now it automatically stops when a reaches 0 and it loops
|
||||||
|
the same number of times*/
|
||||||
|
change = (smd->bind_verts_num - i);
|
||||||
|
smd->verts[change].vertex_idx = change;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3183,12 +3196,18 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
|
||||||
}
|
}
|
||||||
|
|
||||||
LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
|
LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
|
||||||
for (int step = 0; step < 2; step++) {
|
int change
|
||||||
|
for (int step = 2; --step) {
|
||||||
|
/*optimized loop to use deincrement instead to use less resources
|
||||||
|
because now it automatically stops when a reaches 0 and it loops
|
||||||
|
the same number of times*/
|
||||||
|
change = (2 - step);
|
||||||
|
|
||||||
CustomDataLayer *actlayer = nullptr;
|
CustomDataLayer *actlayer = nullptr;
|
||||||
|
|
||||||
int vact1, vact2;
|
int vact1, vact2;
|
||||||
|
|
||||||
if (step) {
|
if (change) {
|
||||||
vact1 = CustomData_get_render_layer_index(&me->vdata, CD_PROP_COLOR);
|
vact1 = CustomData_get_render_layer_index(&me->vdata, CD_PROP_COLOR);
|
||||||
vact2 = CustomData_get_render_layer_index(&me->ldata, CD_PROP_BYTE_COLOR);
|
vact2 = CustomData_get_render_layer_index(&me->ldata, CD_PROP_BYTE_COLOR);
|
||||||
}
|
}
|
||||||
|
@ -3205,7 +3224,7 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actlayer) {
|
if (actlayer) {
|
||||||
if (step) {
|
if (change) {
|
||||||
BKE_id_attributes_default_color_set(&me->id, actlayer->name);
|
BKE_id_attributes_default_color_set(&me->id, actlayer->name);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -3348,12 +3367,18 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
|
||||||
|
|
||||||
/* Rebuild active/render color attribute references. */
|
/* Rebuild active/render color attribute references. */
|
||||||
LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
|
LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
|
||||||
for (int step = 0; step < 2; step++) {
|
int change;
|
||||||
|
for (int step = 2; --step) {
|
||||||
|
/*optimized loop to use deincrement instead to use less resources
|
||||||
|
because now it automatically stops when a reaches 0 and it loops
|
||||||
|
the same number of times*/
|
||||||
|
change = (2 - step);
|
||||||
|
|
||||||
CustomDataLayer *actlayer = nullptr;
|
CustomDataLayer *actlayer = nullptr;
|
||||||
|
|
||||||
int vact1, vact2;
|
int vact1, vact2;
|
||||||
|
|
||||||
if (step) {
|
if (change) {
|
||||||
vact1 = CustomData_get_render_layer_index(&me->vdata, CD_PROP_COLOR);
|
vact1 = CustomData_get_render_layer_index(&me->vdata, CD_PROP_COLOR);
|
||||||
vact2 = CustomData_get_render_layer_index(&me->ldata, CD_PROP_BYTE_COLOR);
|
vact2 = CustomData_get_render_layer_index(&me->ldata, CD_PROP_BYTE_COLOR);
|
||||||
}
|
}
|
||||||
|
@ -3370,7 +3395,7 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actlayer) {
|
if (actlayer) {
|
||||||
if (step) {
|
if (change) {
|
||||||
BKE_id_attributes_default_color_set(&me->id, actlayer->name);
|
BKE_id_attributes_default_color_set(&me->id, actlayer->name);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -3386,13 +3411,18 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
|
||||||
if (md->type == eModifierType_DataTransfer) {
|
if (md->type == eModifierType_DataTransfer) {
|
||||||
DataTransferModifierData *dtmd = (DataTransferModifierData *)md;
|
DataTransferModifierData *dtmd = (DataTransferModifierData *)md;
|
||||||
|
|
||||||
for (int i = 0; i < DT_MULTILAYER_INDEX_MAX; i++) {
|
int change;
|
||||||
if (dtmd->layers_select_src[i] == 0) {
|
for (int i = DT_MULTILAYER_INDEX_MAX; --i) {
|
||||||
dtmd->layers_select_src[i] = DT_LAYERS_ALL_SRC;
|
/*optimized loop to use deincrement instead to use less resources
|
||||||
|
because now it automatically stops when a reaches 0 and it loops
|
||||||
|
the same number of times*/
|
||||||
|
change = (DT_MULTILAYER_INDEX_MAX - i);
|
||||||
|
if (dtmd->layers_select_src[change] == 0) {
|
||||||
|
dtmd->layers_select_src[change] = DT_LAYERS_ALL_SRC;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dtmd->layers_select_dst[i] == 0) {
|
if (dtmd->layers_select_dst[change] == 0) {
|
||||||
dtmd->layers_select_dst[i] = DT_LAYERS_NAME_DST;
|
dtmd->layers_select_dst[change] = DT_LAYERS_NAME_DST;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3677,8 +3707,13 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
|
||||||
LISTBASE_FOREACH (Mesh *, mesh, &bmain->meshes) {
|
LISTBASE_FOREACH (Mesh *, mesh, &bmain->meshes) {
|
||||||
int *face_sets = (int *)CustomData_get_layer(&mesh->pdata, CD_SCULPT_FACE_SETS);
|
int *face_sets = (int *)CustomData_get_layer(&mesh->pdata, CD_SCULPT_FACE_SETS);
|
||||||
if (face_sets) {
|
if (face_sets) {
|
||||||
for (int i = 0; i < mesh->totpoly; i++) {
|
int change;
|
||||||
face_sets[i] = abs(face_sets[i]);
|
for (int i = mesh->totpoly; --i) {
|
||||||
|
/*optimized loop to use deincrement instead to use less resources
|
||||||
|
because now it automatically stops when a reaches 0 and it loops
|
||||||
|
the same number of times*/
|
||||||
|
change = (mesh->totpoly - i);
|
||||||
|
face_sets[change] = abs(face_sets[change]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue