Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/transform/transform_generics.c
| Context not available. | |||||
| } | } | ||||
| } | } | ||||
| #include "BLI_pe.h" | |||||
| void calculatePropRatio(TransInfo *t) | void calculatePropRatio(TransInfo *t) | ||||
| { | { | ||||
| TransData *td = t->data; | TransData *td = t->data; | ||||
| int i; | int i; | ||||
| float dist; | |||||
| short connected = t->flag & T_PROP_CONNECTED; | short connected = t->flag & T_PROP_CONNECTED; | ||||
| if (t->flag & T_PROP_EDIT) { | if (t->flag & T_PROP_EDIT) { | ||||
| Context not available. | |||||
| td->factor = 0.0f; | td->factor = 0.0f; | ||||
| restoreElement(td); | restoreElement(td); | ||||
| } | } else { | ||||
| else { | |||||
| /* Use rdist for falloff calculations, it is the real distance */ | |||||
| td->flag &= ~TD_NOACTION; | td->flag &= ~TD_NOACTION; | ||||
| if (connected) | |||||
| if (connected) | td->factor = BLI_pe_factor_distance(td->dist, t->prop_size, t->prop_mode); | ||||
| dist = (t->prop_size - td->dist) / t->prop_size; | |||||
| else | else | ||||
| dist = (t->prop_size - td->rdist) / t->prop_size; | td->factor = BLI_pe_factor_distance(td->rdist, t->prop_size, t->prop_mode); | ||||
| /* | |||||
| * Clamp to positive numbers. | |||||
| * Certain corner cases with connectivity and individual centers | |||||
| * can give values of rdist larger than propsize. | |||||
| */ | |||||
| if (dist < 0.0f) | |||||
| dist = 0.0f; | |||||
| switch (t->prop_mode) { | |||||
| case PROP_SHARP: | |||||
| td->factor = dist * dist; | |||||
| break; | |||||
| case PROP_SMOOTH: | |||||
| td->factor = 3.0f * dist * dist - 2.0f * dist * dist * dist; | |||||
| break; | |||||
| case PROP_ROOT: | |||||
| td->factor = (float)sqrt(dist); | |||||
| break; | |||||
| case PROP_LIN: | |||||
| td->factor = dist; | |||||
| break; | |||||
| case PROP_CONST: | |||||
| td->factor = 1.0f; | |||||
| break; | |||||
| case PROP_SPHERE: | |||||
| td->factor = (float)sqrt(2 * dist - dist * dist); | |||||
| break; | |||||
| case PROP_RANDOM: | |||||
| td->factor = BLI_frand() * dist; | |||||
| break; | |||||
| default: | |||||
| td->factor = 1; | |||||
| break; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| switch (t->prop_mode) { | switch (t->prop_mode) { | ||||
| Context not available. | |||||
| t->proptext[0] = '\0'; | t->proptext[0] = '\0'; | ||||
| } | } | ||||
| } | } | ||||
| Context not available. | |||||