private IEnumerator InternalRaise() { while (true) { yield return(new WaitForFixedUpdate()); if (FizzleScene.TimeCtrl.Rewinding) { continue; } if (transform.localPosition.y < 0.0F) { status = FizzleElevatorStatus.RAISING; transform.Translate(transform.up * Time.fixedDeltaTime); RaycastHit hitInfo; if (Physics.BoxCast(@base.transform.position, @base.transform.localScale * 0.4F, @base.transform.up, out hitInfo, Quaternion.identity, 0.4F, FizzleLayerMask.GetMask("Player")) && hitInfo.collider.gameObject.GetComponent <FirstPersonController>()) { hitInfo.collider.transform.Translate(transform.up * Time.fixedDeltaTime); } } else { transform.localPosition = Vector3.zero; if (status != FizzleElevatorStatus.RAISING) { continue; } status = FizzleElevatorStatus.RAISED; raiseFinished(); } } }
protected override void Start() { base.Start(); @base.localPosition = new Vector3(0.0F, realHeight + 0.1F, 0.0F); if (Activator != null) { response = new SwitchResponse(Activator); } if (m_DefaultRaised ^ (response != null && response.Test())) { status = FizzleElevatorStatus.RAISED; transform.localPosition = Vector3.zero; } else { status = FizzleElevatorStatus.DROPPED; transform.localPosition = -transform.up * realHeight; } }
protected override void Update() { base.Update(); response?.Test(() => { if (!m_DefaultRaised) { Raise(); } else { Drop(); } }, () => { if (!m_DefaultRaised) { Drop(); } else { Raise(); } }); if (!isStatic(status)) { PlayLoopSound(); } if (!isStatic(lastStatus) && isStatic(status)) { PlayStopSound(); } lastStatus = status; }
private static bool isStatic(FizzleElevatorStatus status) { return(status == FizzleElevatorStatus.RAISED || status == FizzleElevatorStatus.DROPPED); }