void LateUpdate() { Vector3 positionOffset = Vector3.zero; Vector3 rotationOffset = Vector3.zero; // Going backwards to safely remove dead events from the list without having to deal with a changing list size for (int i = shakeEvents.Count - 1; i != -1; i--) { ShakeEvent se = shakeEvents[i]; se.Update(); if (se.target == ShakeTransformEventData.Target.Position) { positionOffset += se.noise; } else { rotationOffset += se.noise; } if (!se.IsAlive()) { shakeEvents.RemoveAt(i); } } transform.localPosition = positionOffset; transform.localEulerAngles = rotationOffset; }
void LateUpdate() { Vector3 positionOffset = Vector3.zero; Vector3 rotationOffset = Vector3.zero; for (int i = shakeEvents.Count - 1; i != -1; i--) { ShakeEvent se = shakeEvents[i]; se.Update(); if (se.shakeType == ShakeTransformEventData.ShakeType.Position) { positionOffset += se.noise; } else if (se.shakeType == ShakeTransformEventData.ShakeType.Rotation) { rotationOffset += se.noise; } else { Debug.LogWarning("Unhandled shake type: " + se.shakeType); } if (!se.IsAlive()) { shakeEvents.RemoveAt(i); } } transform.localPosition = positionOffset; transform.localEulerAngles = rotationOffset; }
/// <summary> /// Mutates the resource by the parameters amount ex: MutateResource(20) = _resource + 20. /// MutateResource(-20) = _resource - 20. /// </summary> /// <param name="resourceMutation">The amount of resources with which the resource will change (-/+).</param> public void MutateResource(float resourceMutation) { PlayerStats.Health += resourceMutation; if (PlayerStats.Health <= 0) { PlayerStats.Health = 0; } _resourceBar.fillAmount = PlayerStats.Health / PlayerStats.MaxHealth; _resourceText.text = PlayerStats.Health + "/" + PlayerStats.MaxHealth; if (resourceMutation < 0) { ShakeEvent.SendShakeEvent(); } if (PlayerStats.Health <= 0) { GameState.CGameState = CurrentGameState.Paused; if (OnHealthDepleted != null) { OnHealthDepleted(); } } }
public void RumbleEventCallback(GameEvent e) { RumbleEvent ev = (RumbleEvent)e; ShakeEvent[] evArr = RumbleEvents.ToArray(); int idxToInsert = 0; for (int i = 0; i < evArr.Length; i++) { ShakeEvent evI = evArr[i]; if (evI.intensity < ev.Intensity) { idxToInsert = i - 1; } } if (idxToInsert < 0) { idxToInsert = 0; } int id = GetShakeId(); RumbleEvents.Insert(idxToInsert, new ShakeEvent(id, ev.Intensity)); eventCtrl.BroadcastEvent(typeof(StartTimerEvent), new StartTimerEvent("rumbleEvent_" + id, ev.Duration, () => { eventCtrl.BroadcastEvent(typeof(RumbleOverEvent), new RumbleOverEvent(id)); })); }
private void LateUpdate() { Vector3 positionOffset = Vector3.zero; Vector3 rotationOffset = Vector3.zero; for (int i = shakeEvents.Count - 1; i != -1; i--) { ShakeEvent se = shakeEvents[i]; se.Update(); if (se.target == ShakeTransformEventData.Target.Position) { positionOffset += se.noise; } else { rotationOffset += se.noise; } if (!se.IsAlive()) { shakeEvents.RemoveAt(i); } } transform.localPosition = positionOffset; //transform.localEulerAngles = rotationOffset; }
public void VibrationEventCallback(GameEvent e) { VibrationEvent ev = (VibrationEvent)e; ShakeEvent[] evArr = VibrationEvents.ToArray(); int idxToInsert = 0; for (int i = 0; i < evArr.Length; i++) { ShakeEvent evI = evArr[i]; if (evI.intensity < ev.Intensity) { idxToInsert = i - 1; } } if (idxToInsert < 0) { idxToInsert = 0; } int id = GetShakeId(); //print("QUEUEING VIBRATION EVENT " + ev.Intensity); VibrationEvents.Insert(idxToInsert, new ShakeEvent(id, ev.Intensity)); eventCtrl.BroadcastEvent(typeof(StartTimerEvent), new StartTimerEvent("vibrationEvent_" + id, ev.Duration, () => { eventCtrl.BroadcastEvent(typeof(VibrationOverEvent), new VibrationOverEvent(id)); })); }
public void RumbleOverEventCallback(GameEvent e) { RumbleOverEvent ev = (RumbleOverEvent)e; ShakeEvent sEv = RumbleEvents.Find(rEv => rEv.id == ev.RumbleId); if (RumbleEvents.Remove(sEv)) { AvailableIds.Enqueue(sEv.id); } }
public void VibrationOverEventCallback(GameEvent e) { VibrationOverEvent ev = (VibrationOverEvent)e; ShakeEvent sEv = VibrationEvents.Find(vEv => vEv.id == ev.VibrationId); if (VibrationEvents.Remove(sEv)) { AvailableIds.Enqueue(sEv.id); } }
private void LateUpdate() { Vector3 positionOffset = Vector3.zero; for (int i = shakeEvents.Count - 1; i != -1; i--) { ShakeEvent se = shakeEvents[i]; se.Update(); positionOffset += se.noise; if (!se.IsAlive()) { shakeEvents.RemoveAt(i); } } transform.localPosition = positionOffset; }
protected override void OnCreate() { this.Enabled = false; OnShakeEnd = () => { //Debug.Log("OnFadeEnd"); this.Enabled = false; GameVariables.CamNoiseProfile.m_AmplitudeGain = 0; GameVariables.CamNoiseProfile.m_FrequencyGain = 0; }; OnShakeStart = () => { //Debug.Log("OnFadeStart"); GameVariables.CamNoiseProfile.m_AmplitudeGain = GameVariables.ShakeComponent.ShakeAmplitude; GameVariables.CamNoiseProfile.m_FrequencyGain = GameVariables.ShakeComponent.ShakeFrequency; }; }
void LateUpdate() { Vector3 posOffset = Vector3.zero; Vector3 rotOffset = Vector3.zero; for (var i = events.Count - 1; i != -1; i--) { ShakeEvent sc = events[i]; sc.Update(); posOffset += sc.noise; rotOffset += sc.noise; if (!sc.isAlive()) { events.RemoveAt(i); } } //transform.localPosition = posOffset; transform.localEulerAngles = rotOffset; }
public void AddShakeEvent(ShakeTransformEventData data) { ShakeEvent newData = new ShakeEvent(data); shakeEvents.Add(newData); }