/// <summary>
        /// Function to perform the updates to the cloak animation.
        /// </summary>
        public void Update()
        {
            switch (Direction)
            {
            case CloakDirection.Cloak:
                Opacity      -= 0.8f * GorgonTiming.Delta;
                _cloakAmount += 0.12f * GorgonTiming.Delta;

                _cloakAmount = _cloakAmount.Min(0.25f).Max(0);
                Opacity      = Opacity.Min(1.0f).Max(0);

                if ((_cloakAmount >= 0.25f) && (Opacity <= 0.0f))
                {
                    Direction        = CloakDirection.CloakPulse;
                    _cloakPulseAngle = 180.0f;
                    _cloakAngleRads  = _cloakPulseAngle.ToRadians();
                }
                break;

            case CloakDirection.Uncloak:
                if (_cloakAmount < 0.12f)
                {
                    Opacity += 0.8f * GorgonTiming.Delta;
                }

                _cloakAmount -= 0.12f * GorgonTiming.Delta;

                _cloakAmount = _cloakAmount.Min(0.25f).Max(0);
                Opacity      = Opacity.Min(1.0f).Max(0);

                if ((_cloakAmount <= 0.0f) && (Opacity >= 1.0f))
                {
                    Direction = CloakDirection.None;
                }
                break;

            case CloakDirection.UncloakStopPulse:

                _cloakPulseAngle += (90.0f * GorgonTiming.Delta) * _stopPulseDirection;

                if (((_cloakPulseAngle > 180.0f) && (_stopPulseDirection == 1)) ||
                    (_cloakPulseAngle < 180.0f) && (_stopPulseDirection == -1))
                {
                    _cloakPulseAngle = 180.0f;
                    Direction        = CloakDirection.Uncloak;
                }

                _cloakAngleRads = _cloakPulseAngle.ToRadians();
                break;

            case CloakDirection.CloakPulse:
                _cloakAngleRads   = _cloakPulseAngle.ToRadians();
                _cloakPulseAngle += GorgonRandom.RandomSingle(0.0f, 120.0f) * GorgonTiming.Delta;

                if (_cloakPulseAngle > 360.0f)
                {
                    _cloakPulseAngle -= 360.0f;
                }
                break;
            }
        }
 /// <summary>
 /// Function to initiate the cloak.
 /// </summary>
 public void Cloak()
 {
     _cloakPulseAngle = 180.0f;
     Direction        = CloakDirection.Cloak;
 }
 /// <summary>
 /// Function to disable the cloak.
 /// </summary>
 public void Uncloak()
 {
     _stopPulseDirection = _cloakPulseAngle > 180.0f ? -1 : 1;
     Direction           = CloakDirection.UncloakStopPulse;
 }