private void UpdateCoordinate(CoordinateSetting coordinateSetting) { if (!coordinateSetting.Update) { return; } int i = (int)coordinateSetting.Coordinate; float current; if (coordinateSetting.Type == AnimationType.Offset) { current = CurrentOffset[i]; } else { current = CurrentRotation[i]; } float newValue = coordinateSetting.UpdateValue(current); if (coordinateSetting.Type == AnimationType.Offset) { SecondOffset[i] = newValue - Offset[i]; } else { SecondRotation[i] = newValue - Rotation[i]; } }
/// <summary> /// Sets the specified <paramref name="coordinate"/> to the maximum or minimum value. /// </summary> /// <param name="animationType">Wanted <see cref="FusionEnums.AnimationType"/>.</param> /// <param name="animationStep"><see cref="FusionEnums.AnimationStep"/> of <paramref name="animationType"/>.</param> /// <param name="coordinate"><see cref="FusionEnums.Coordinate"/> of <paramref name="animationStep"/>.</param> /// <param name="maximum"><see langword="true"/> sets <paramref name="coordinate"/> to maximum value; otherwise minimum.</param> public void SetCoordinateAt(AnimationType animationType, AnimationStep animationStep, Coordinate coordinate, bool maximum) { CoordinateSetting coordinateSetting = Animation[animationType][animationStep][coordinate]; if (animationType == AnimationType.Offset) { SecondOffset[(int)coordinate] = (maximum ? coordinateSetting.Maximum : coordinateSetting.Minimum) * coordinateSetting.MaxMinRatio - Offset[(int)coordinate]; } else { SecondRotation[(int)coordinate] = (maximum ? coordinateSetting.Maximum : coordinateSetting.Minimum) * coordinateSetting.MaxMinRatio - Rotation[(int)coordinate]; } Attach(); }