private void LateUpdate() { Vector3 vector = base.get_transform().get_position() - this.lastPosition; if (vector != Vector3.get_zero()) { int i = 0; while (i < this.passengers.get_Count()) { PlatformRider platformRider = this.passengers.get_Item(i); bool flag = false; Collider[] componentsInChildren = platformRider.get_transform().get_root().GetComponentsInChildren <Collider>(); for (int j = 0; j < componentsInChildren.Length; j++) { Collider other = componentsInChildren[j]; if (this.ContainsPoint(platformRider.get_transform().get_position()) || (Vector3.Dot(platformRider.get_transform().get_position() - base.get_transform().get_position(), base.get_transform().get_up()) > 0f && this.IntersectingTrigger(other))) { platformRider.UpdatePlatform(vector); flag = true; break; } } if (!flag && platformRider.LeavePlatform(this)) { this.LeavePlatform(platformRider); } else { i++; } } } this.lastPosition = base.get_transform().get_position(); }
private void OnTriggerStay(Collider other) { PlatformRider componentInChildren = other.get_transform().get_root().GetComponentInChildren <PlatformRider>(); if (componentInChildren == null || this.passengers.Contains(componentInChildren)) { return; } if (componentInChildren.BoardPlatform(this)) { this.BoardPlatform(componentInChildren); } }
public void LeavePlatform(PlatformRider passenger) { this.passengers.Remove(passenger); }
public void BoardPlatform(PlatformRider passenger) { this.passengers.Add(passenger); }