protected virtual void OnEnable() { if (canSlideFromCurrentState()) { animator.SetBool(AnimationHashes.Params.Slide, value: true); wasInAirAtStart = LocomotionUtils.IsInAir(LocomotionUtils.GetAnimatorStateInfo(animator)); IsSliding = false; isFloatingOnWater = false; isSupportedByWater = false; lastSplashTime = -1f; impulses = base.gameObject.AddComponent <ForceAccumulatorPrimitive>(); impulses.SetData(mutableData.ImpulseProperties); impulses.enabled = true; mutableData.WaterProperties = MasterData.WaterProperties; maxSpeedOnWaterWhenSteering = mutableData.WaterProperties.MaxSpeed; curSpeedOnWater = motion.Velocity.magnitude; curSpeedOnWater = Mathf.Clamp(curSpeedOnWater, 0f, maxSpeedOnWaterWhenSteering); momentumAtStart = motion.Velocity; if (mutableData.WaterRipples != null) { waterRipples = Object.Instantiate(mutableData.WaterRipples); waterRipples.Stop(); CameraCullingMaskHelper.SetLayerIncludingChildren(waterRipples.transform, LayerMask.LayerToName(base.gameObject.layer)); } base.Broadcaster.OnInteractionPreStartedEvent += onInteractionPreStartedEvent; } else { base.enabled = false; } }
private void OnEnable() { animator.SetTrigger(AnimationHashes.Params.Swim); swim = base.gameObject.AddComponent <SwimPrimitive>(); swim.SetData(mutableData.SwimProperties); swim.enabled = true; swim.SurfaceHeight = logicalSurfaceHeight; swim.IsInShallowWater = isInShallowWater; impulses = base.gameObject.AddComponent <ForceAccumulatorPrimitive>(); impulses.SetData(mutableData.ImpulseProperties); impulses.enabled = true; curState = State.None; Vector3 position = base.transform.position; position.y = logicalSurfaceHeight; if (isCloseToSurface()) { base.transform.position = position; } dispatcher.AddListener <DivingEvents.AirSupplyUpdated>(onAirSupplyUpdated); if (CompareTag("Player")) { LoadContextualControlsLayout(); } resetIK(null); }