public void RollOutImmediate() { if (RolledIn == true) { RolledIn = false; SetUnrolledAngle(unrolledAngle); BeforeRollOut?.Invoke(carpet); RollStateChanged?.Invoke(RolledIn, gameObject); } }
private IEnumerator RollEnumerator(float time, bool state) { float elapsedTime = 0; float startingAngle = currentAngle; float endingAngle = state ? rolledAngle : unrolledAngle; while (elapsedTime < time) { SetUnrolledAngle(Mathf.Lerp(startingAngle, endingAngle, (elapsedTime / time))); elapsedTime += Time.deltaTime; yield return(null); } if (RolledIn != state) { RolledIn = state; RollStateChanged?.Invoke(RolledIn, gameObject); } if (!RolledIn) { SetUnrolledAngle(unrolledAngle); UnrollBegin?.Invoke(gameObject); RollOutIdentity?.caller.InvokeCaller(RollOutIdentity.id); } rollingIn = false; rollingOut = false; }