public void CreateAndMaintain() { var called = 0f; var effect = new Effect(maintain: d => called = d); var routine = new EffectRoutineFactory { intervalDelta = 3f }.Create(effect); effect.duration = 10f; routine.MoveNext(); routine.MoveNext(); Assert.AreEqual(3f, called); }
public void CreateAndMaintainForDuration() { var called = new List <float>(); var effect = new Effect(maintain: d => called.Add(d)); var routine = new EffectRoutineFactory { intervalDelta = 2f }.Create(effect); effect.duration = 5f; routine.MoveNext(); // Apply routine.MoveNext(); // Maintain routine.MoveNext(); // Maintain routine.MoveNext(); // Maintain Assert.AreEqual(new float[] { 2f, 2f, 1f }, called); }
public void CreateAndRevertOnlyAtEnd() { var called = false; var calledTrack = new List <bool>(); var effect = new Effect(revert: () => called = true); var routine = new EffectRoutineFactory { intervalDelta = 42f }.Create(effect); effect.duration = 42f; routine.MoveNext(); calledTrack.Add(called); routine.MoveNext(); calledTrack.Add(called); CollectionAssert.AreEqual(new bool[] { false, true }, calledTrack); }
public IEnumerator CreateAndWaitForRemainingCooldown() { var effect = new Effect(); var routine = new EffectRoutineFactory { intervalDelta = 0.3f }.Create(effect); effect.duration = 0.4f; routine.MoveNext(); routine.MoveNext(); float before = Time.time; yield return(routine.Current); float after = Time.time; Assert.AreEqual(0.1f, after - before, 0.01f); }
public void CreateAndNoMaintainWhenZeroDuration() { var called = false; var effect = new Effect(maintain: _ => called = true); var routine = new EffectRoutineFactory { intervalDelta = 3f }.Create(effect); routine.MoveNext(); Assert.AreEqual(false, called); }
public void CreateAndRevert() { var called = false; var effect = new Effect(revert: () => called = true); var routine = new EffectRoutineFactory { intervalDelta = 0f }.Create(effect); routine.MoveNext(); Assert.True(called); }