void Transform::applyAnimationValueTranslationX(float tx) { if ((_animationPropertyBitFlag & ANIMATION_TRANSLATION_X_BIT) != ANIMATION_TRANSLATION_X_BIT) { _animationPropertyBitFlag |= ANIMATION_TRANSLATION_X_BIT; setTranslationX(tx); } else { translateX(tx); } }
void Transform::setAnimationPropertyValue(int propertyId, AnimationValue* value, float blendWeight) { GP_ASSERT(value); GP_ASSERT(blendWeight >= 0.0f && blendWeight <= 1.0f); switch (propertyId) { case ANIMATE_SCALE_UNIT: { float scale = Curve::lerp(blendWeight, _scale.x, value->getFloat(0)); setScale(scale); break; } case ANIMATE_SCALE: { setScale(Curve::lerp(blendWeight, _scale.x, value->getFloat(0)), Curve::lerp(blendWeight, _scale.y, value->getFloat(1)), Curve::lerp(blendWeight, _scale.z, value->getFloat(2))); break; } case ANIMATE_SCALE_X: { setScaleX(Curve::lerp(blendWeight, _scale.x, value->getFloat(0))); break; } case ANIMATE_SCALE_Y: { setScaleY(Curve::lerp(blendWeight, _scale.y, value->getFloat(0))); break; } case ANIMATE_SCALE_Z: { setScaleZ(Curve::lerp(blendWeight, _scale.z, value->getFloat(0))); break; } case ANIMATE_ROTATE: { applyAnimationValueRotation(value, 0, blendWeight); break; } case ANIMATE_TRANSLATE: { setTranslation(Curve::lerp(blendWeight, _translation.x, value->getFloat(0)), Curve::lerp(blendWeight, _translation.y, value->getFloat(1)), Curve::lerp(blendWeight, _translation.z, value->getFloat(2))); break; } case ANIMATE_TRANSLATE_X: { setTranslationX(Curve::lerp(blendWeight, _translation.x, value->getFloat(0))); break; } case ANIMATE_TRANSLATE_Y: { setTranslationY(Curve::lerp(blendWeight, _translation.y, value->getFloat(0))); break; } case ANIMATE_TRANSLATE_Z: { setTranslationZ(Curve::lerp(blendWeight, _translation.z, value->getFloat(0))); break; } case ANIMATE_ROTATE_TRANSLATE: { applyAnimationValueRotation(value, 0, blendWeight); setTranslation(Curve::lerp(blendWeight, _translation.x, value->getFloat(4)), Curve::lerp(blendWeight, _translation.y, value->getFloat(5)), Curve::lerp(blendWeight, _translation.z, value->getFloat(6))); break; } case ANIMATE_SCALE_ROTATE: { setScale(Curve::lerp(blendWeight, _scale.x, value->getFloat(0)), Curve::lerp(blendWeight, _scale.y, value->getFloat(1)), Curve::lerp(blendWeight, _scale.z, value->getFloat(2))); applyAnimationValueRotation(value, 3, blendWeight); break; } case ANIMATE_SCALE_TRANSLATE: { setScale(Curve::lerp(blendWeight, _scale.x, value->getFloat(0)), Curve::lerp(blendWeight, _scale.y, value->getFloat(1)), Curve::lerp(blendWeight, _scale.z, value->getFloat(2))); setTranslation(Curve::lerp(blendWeight, _translation.x, value->getFloat(3)), Curve::lerp(blendWeight, _translation.y, value->getFloat(4)), Curve::lerp(blendWeight, _translation.z, value->getFloat(5))); break; } case ANIMATE_SCALE_ROTATE_TRANSLATE: { setScale(Curve::lerp(blendWeight, _scale.x, value->getFloat(0)), Curve::lerp(blendWeight, _scale.y, value->getFloat(1)), Curve::lerp(blendWeight, _scale.z, value->getFloat(2))); applyAnimationValueRotation(value, 3, blendWeight); setTranslation(Curve::lerp(blendWeight, _translation.x, value->getFloat(7)), Curve::lerp(blendWeight, _translation.y, value->getFloat(8)), Curve::lerp(blendWeight, _translation.z, value->getFloat(9))); break; } default: break; } }