public void QuickSetup(Generator generator) { currentStart = generator.StartPhase; phase = currentStart + generator.Offset; switch (generator.LoopMode) { case LoopModeEnum.Continuous: case LoopModeEnum.LoopUntilNoteOff: if (phase >= generator.EndPhase) { //phase is greater than the end index so generator is finished currentState = GeneratorStateEnum.Finished; } else if (phase >= generator.LoopEndPhase) { //phase is greater than the loop end point so generator is in post loop currentState = GeneratorStateEnum.PostLoop; currentEnd = generator.EndPhase; } else if (phase >= generator.LoopStartPhase) { //phase is greater than loop start so we are inside the loop currentState = GeneratorStateEnum.Loop; currentEnd = generator.LoopEndPhase; currentStart = generator.LoopStartPhase; } else { //phase is less than the loop so generator is in pre loop currentState = GeneratorStateEnum.PreLoop; currentEnd = generator.LoopStartPhase; } break; default: currentEnd = generator.EndPhase; if (phase >= currentEnd) { currentState = GeneratorStateEnum.Finished; } else { currentState = GeneratorStateEnum.PostLoop; } break; } }
public void QuickSetup(Generator generator) { currentStart = generator.StartPhase; phase = currentStart + generator.Offset; switch (generator.LoopMode) { case LoopModeEnum.Continuous: case LoopModeEnum.LoopUntilNoteOff: if (phase >= generator.EndPhase) {//phase is greater than the end index so generator is finished currentState = GeneratorStateEnum.Finished; } else if (phase >= generator.LoopEndPhase) {//phase is greater than the loop end point so generator is in post loop currentState = GeneratorStateEnum.PostLoop; currentEnd = generator.EndPhase; } else if (phase >= generator.LoopStartPhase) {//phase is greater than loop start so we are inside the loop currentState = GeneratorStateEnum.Loop; currentEnd = generator.LoopEndPhase; currentStart = generator.LoopStartPhase; } else {//phase is less than the loop so generator is in pre loop currentState = GeneratorStateEnum.PreLoop; currentEnd = generator.LoopStartPhase; } break; default: currentEnd = generator.EndPhase; if (phase >= currentEnd) currentState = GeneratorStateEnum.Finished; else currentState = GeneratorStateEnum.PostLoop; break; } }