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);
 }