private void ShakePosition_UpdateShaking(On.HutongGames.PlayMaker.Actions.ShakePosition.orig_UpdateShaking orig, ShakePosition self) { try { if (CustomShake && self.State.Name.Contains("Shake") && self.State.Fsm == shakerFSM.Fsm) { bool value = self.isLooping.Value; float num = Mathf.Clamp01(1f - GetTimer(self) / ShakeDuration); Vector3 a = Vector3.Scale(ShakeExtents, new Vector3(UnityEngine.Random.Range(-1f, 1f), UnityEngine.Random.Range(-1f, 1f), UnityEngine.Random.Range(-1f, 1f))); transform.position = GetStartingWorldPosition(self) + a * ((!value) ? num : 1f); //this.timer += Time.deltaTime; SetTimer(self, GetTimer(self) + Time.deltaTime); if (!value && GetTimer(self) > ShakeDuration) { CustomShake = false; StopAndReset(self); self.Fsm.Event(self.stopEvent); self.Finish(); } } else if (CustomRumble && self.State.Name.Contains("Rumbling") && self.State.Fsm == shakerFSM.Fsm) { bool value = self.isLooping.Value; float num = Mathf.Clamp01(1f - GetTimer(self)); Vector3 a = Vector3.Scale(RumbleExtents, new Vector3(UnityEngine.Random.Range(-1f, 1f), UnityEngine.Random.Range(-1f, 1f), UnityEngine.Random.Range(-1f, 1f))); transform.position = GetStartingWorldPosition(self) + a * ((!value) ? num : 1f); //this.timer += Time.deltaTime; SetTimer(self, GetTimer(self) + Time.deltaTime); if (!value && GetTimer(self) > 1f) { CustomRumble = false; StopAndReset(self); self.Fsm.Event(self.stopEvent); self.Finish(); } } else { orig(self); } } catch (Exception e) { WeaverLog.LogError("Camera Shaker Exception = " + e); } }