/// <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; }