internal AudioEntity CreatePattern(int size, FollowType type, AudioEntity pulseSource) { var e = _contexts.audio.CreateEntity(); List <AudioEntity> steps = new List <AudioEntity>(); for (int i = 0; i < size; i++) { var s = _contexts.audio.CreateEntity(); s.AddStep(false); s.AddVolume(1f); s.AddPitch(0); s.AddOffset(0); steps.Add(s); } e.AddPattern(steps, type, pulseSource); e.AddStepIndex(0); e.AddPosition(new IntVector2(0, type == FollowType.Pulse ? 0 : -3)); e.isInteractive = true; e.AddAsset(type == FollowType.Pulse ? Res.KickSampler : Res.XyloSampler); e.AddPulseTrigger(AudioSettings.dspTime); entityService.CreateButtonLayout(type == FollowType.Pulse ? 0:-3, size, e); return(e); }