public void OnCollisionEnter(Collision collision) { if (!base.enabled) { return; } if (collision.gameObject.layer == waterLayer) { if (collision.contacts.Length > 0 && mutableData.WaterSplash != null && pilotBody != null && Time.time - lastSplashTime >= mutableData.SplashCooldown) { GameObject gameObject = Object.Instantiate(mutableData.WaterSplash); if (gameObject != null) { Vector3 position = pilotBody.transform.position; position.y = collision.contacts[0].point.y + mutableData.SplashOffset; gameObject.transform.position = position; CameraCullingMaskHelper.SetLayerIncludingChildren(gameObject.transform, LayerMask.LayerToName(base.gameObject.layer)); } lastSplashTime = Time.time; } transitionToWater(); } if (LocomotionUtils.GetAnimatorStateInfo(animator).tagHash == AnimationHashes.Tags.ReactingToHit || !(collision.impulse.sqrMagnitude >= minMagnitudeForBumpSq) || !(Mathf.Abs(collision.impulse.y) < 0.707f)) { return; } Vector3 vector = thisTransform.position - collision.contacts[0].point; vector.y = 0f; if (vector.x != 0f && vector.z != 0f) { Vector3 forward = thisTransform.forward; forward.y = 0f; if (forward.x != 0f && forward.z != 0f) { float num = LocomotionUtils.SignedAngle(forward.normalized, vector.normalized); num = ((num < -157.5f) ? 180f : ((num < -112.5f) ? (-135f) : ((num < -67.5f) ? (-90f) : ((num < -22.5f) ? (-45f) : ((num < 22.5f) ? 0f : ((num < 67.5f) ? 45f : ((num < 112.5f) ? 90f : ((!(num < 157.5f)) ? 180f : 135f)))))))); animator.SetFloat(AnimationHashes.Params.Angle, num); animator.SetTrigger(AnimationHashes.Params.Bump); } } }