Esempio n. 1
0
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);
    }
}
Esempio n. 2
0
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;
    }
}