using System; using Pathfinding; using UnityEngine; // Token: 0x02000057 RID: 87 public class WaterCollisions : MonoBehaviour { // Token: 0x06000B0F RID: 2831 RVA: 0x000DC56C File Offset: 0x000DA76C private void Update() { if (Links.x.gaia.sceneLoaded && Links.x.gaia.pathfindingReady && this.character) { if (this.sliding) { Vector3 vector = Vector3.MoveTowards(this.character.tr.position, this.slidePoint, 12f * Time.deltaTime); this.character.tr.position = vector; if ((this.slidePoint - this.character.tr.position).sqrMagnitude < 0.25f) { this.slidePoint = Vector3.zero; this.sliding = false; } } bool flag = false; bool flag2 = false; GameObject gameObject = null; RaycastHit raycastHit; if (Physics.Raycast(this.character.tr.position + new Vector3(0f, 20f, 0f), Vector3.up * -1f, out raycastHit, 50f, 262144) && raycastHit.collider.gameObject != base.gameObject && raycastHit.collider.gameObject != Links.x.diorama.boatCollider) { flag = true; gameObject = raycastHit.collider.gameObject; } if (!flag) { Vector3 position = this.character.tr.position; position.y = Links.x.diorama.boatColliderY + 0.1f; if (Physics.Raycast(position, Vector3.up, out raycastHit, 20f, 262144) && raycastHit.collider.gameObject != base.gameObject && raycastHit.collider.gameObject != Links.x.diorama.boatCollider) { flag2 = true; gameObject = raycastHit.collider.gameObject; } } if (flag || flag2) { if (!this.sliding) { this.Slide(gameObject); } this.character.meshAlwaysOff = true; this.character.body.SetMeshState(false, true); this.character.body.SeeThroughColliders(false); } else if (this.character.meshAlwaysOff) { this.character.meshAlwaysOff = false; if (this.character.visible == 1) { this.character.body.SetMeshState(true, true); } this.character.body.SeeThroughColliders(true); } if (Links.x.gameplay.seconds > this.lastSplashTime + 4f) { if (this.character.moving || this.character.turning || this.character.IsAttacking(this.character.body.currentHash) || this.character.isHit) { this.character.PlaySplash(); this.lastSplashTime = Links.x.gameplay.seconds; } if (this.character.splash) { Vector3 position2 = this.character.tr.position; position2.y = 20.2f; this.character.splash.transform.position = position2; } } } } // Token: 0x06000B10 RID: 2832 RVA: 0x000DC8C0 File Offset: 0x000DAAC0 private void OnCollisionEnter(Collision collision) { if (Links.x.gaia.sceneLoaded && Links.x.gaia.pathfindingReady) { GameObject gameObject = collision.gameObject; if (gameObject.layer == 18 && (Time.timeSinceLevelLoad > this.timeSinceCollision + 0.15f || this.timeSinceCollision == 0f) && this.character && gameObject != Links.x.diorama.boatCollider && this.character.node != null) { this.Slide(gameObject); } } } // Token: 0x06000B11 RID: 2833 RVA: 0x000DC958 File Offset: 0x000DAB58 private void Slide(GameObject go) { Vector3 position = go.transform.position; if (this.nodeConstraint == null) { this.nodeConstraint = new NNConstraint(); } this.nodeConstraint.constrainToArea = (int)this.character.node.Area; this.nodeConstraint.walkable = true; this.nodeConstraint.constrainWalkability = true; this.nodeConstraint.constrainTags = true; this.nodeConstraint.checkCircleID = 0; this.nodeConstraint.passID = this.character.nodeStationaryID; this.nodeConstraint.passID2 = this.character.nodeMovingID; this.nodeConstraint.constrainPenalty = 0; this.nodeConstraint.checkConnections = this.character.ConnectionNumber(); this.nodeConstraint.constrainToEnvironment = 2; GraphNode graphNode = this.character.node.ClosestConnection(this.character.node, this.character.nodeStationaryID, this.character.nodeMovingID, 225f, this.character.currentPosition + Quaternion.LookRotation(this.character.currentPosition - position) * Vector3.forward * 2.5f, 0, this.character.ConnectionNumber(), this.nodeConstraint, 0); if (graphNode != null && graphNode != this.character.node && this.character.stats.Stuck() == 0 && ((Vector3)graphNode.position - this.character.tr.position).sqrMagnitude < 20f) { this.timeSinceCollision = Time.timeSinceLevelLoad; this.sliding = true; this.slidePoint = (Vector3)graphNode.position; this.character.ClaimNode(graphNode, (Vector3)graphNode.position, false); this.character.PlaySplash(); } } // Token: 0x06000B12 RID: 2834 RVA: 0x000DCB4B File Offset: 0x000DAD4B private void HitFX() { } // Token: 0x04000FFB RID: 4091 public Character character; // Token: 0x04000FFC RID: 4092 private float timeSinceCollision; // Token: 0x04000FFD RID: 4093 private NNConstraint nodeConstraint; // Token: 0x04000FFE RID: 4094 public bool sliding; // Token: 0x04000FFF RID: 4095 public Vector3 slidePoint; // Token: 0x04001000 RID: 4096 private float lastSplashTime; }