protected override void FixedUpdate() { base.FixedUpdate(); if (FizzleScene.TimeCtrl.Rewinding) { return; } int mask = FizzleLayerMask.GetMask("Player"); RaycastHit hitInfo; bool flag = Physics.BoxCast(glass.transform.position - 0.5F * glass.transform.forward, transform.rotation * glass.transform.localScale * 0.5F, glass.transform.forward, out hitInfo, Quaternion.identity, 1.0F, mask); if (flag && this.StatusDetect("Curtain", true, true)) { enterHit = hitInfo; } else if (!flag && this.StatusDetect("Curtain", false, false)) { Vector3 vector31 = enterHit.point - glass.transform.position; Vector3 vector32 = lastHit.point - glass.transform.position; Vector3 right = glass.transform.right; if (Vector3.Cross(vector31, right).y *Vector3.Angle(vector31, right) * (Vector3.Cross(vector32, right).y *Vector3.Angle(vector32, right)) <= 0.0F) { ToggleActive(); } } lastHit = hitInfo; }
protected override void Awake() { base.Awake(); audioSource = GetComponent <AudioSource>(); rigidbody = GetComponent <Rigidbody>(); boxCollider = GetComponent <BoxCollider>(); layerMask = FizzleLayerMask.GetNotMask("Player", "Box", "Curtain", "Trigger"); outRadius = transform.localScale.x * Mathf.Sqrt(2.0F) * 0.5F; }
private InteractiveItem GetAvailableItem() { int notMask1 = FizzleLayerMask.GetNotMask("Player", "Curtain"); int notMask2 = FizzleLayerMask.GetNotMask("Player"); Ray cameraRay = CameraRay; Vector3 origin = cameraRay.origin; cameraRay = CameraRay; Vector3 direction = cameraRay.direction; RaycastHit raycastHit; int layerMask = notMask1; double num = Physics.Raycast(origin, direction, out raycastHit, float.PositiveInfinity, layerMask) ? raycastHit.distance : double.PositiveInfinity; RaycastHit hitInfo; Distance = Physics.Raycast(CameraRay.origin, CameraRay.direction, out hitInfo, float.PositiveInfinity, notMask2) ? hitInfo.distance : float.PositiveInfinity; return(num > 3.0F ? null : raycastHit.collider.gameObject.GetComponent <InteractiveItem>()); }
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 Update() { base.Update(); if (Physics.BoxCast(button.transform.position, button.transform.localScale * 0.4F, button.transform.up, Quaternion.identity, 0.4F, FizzleLayerMask.GetMask("Player", "Box"))) { if (activated.HasValue && activated.Value) { return; } StopAllCoroutines(); StartCoroutine(Active()); activated = true; } else { if (activated.HasValue && !activated.Value) { return; } StopAllCoroutines(); StartCoroutine(Deactive()); activated = false; } }