void CreateRoadPattern() { path.GenerateStartPoints(stepDistance, startOffset * playerSpeed); for (int i = 0; i < musicStructure.Length - startOffset * 2; i++) { musicStructure[i + startOffset].Drum = musicPatternSegments[i % 16].Drum; musicStructure[i + startOffset].Kick = musicPatternSegments[i % 16].Kick; musicStructure[i + startOffset].Bass = musicPatternSegments[i % 16].Bass; musicStructure[i + startOffset].hasNote = musicPatternSegments[i % 16].hasNote; } int nrOfNotesPlaced = 2; int lastnote = -10; int typeNote = 0; while (nrOfNotesPlaced < musicStructure.Length - 1 - startOffset * 2) { do { typeNote = Random.Range(-3, 4); } while (typeNote == lastnote); int noteDuration = 0; switch (typeNote) { case -3: noteDuration = Random.Range(minNoteDuration, maxNoteDuration); typeNote = 0; break; case -2: noteDuration = Random.Range(minNoteDuration, maxNoteDuration); typeNote = 2; break; case -1: noteDuration = Random.Range(4, maxNoteDuration); typeNote = -1; break; case 0: noteDuration = Random.Range(4, maxNoteDuration); typeNote = -1; break; case 1: noteDuration = Random.Range(4, maxNoteDuration); typeNote = -1; break; case 2: noteDuration = Random.Range(4, maxNoteDuration); typeNote = 4; break; case 3: noteDuration = Random.Range(minNoteDuration, maxNoteDuration); typeNote = 5; break; default: break; } if (noteDuration + nrOfNotesPlaced > musicStructure.Length - 1 - startOffset * 2) { noteDuration = musicStructure.Length - 1 - startOffset * 2 - nrOfNotesPlaced; } for (int i = 0; i < noteDuration; i++) { musicStructure[nrOfNotesPlaced + i + startOffset].Guitar = typeNote; } path.AddSegment(stepDistance, noteDuration * playerSpeed, typeNote, roadSideOffset); nrOfNotesPlaced += noteDuration; //Debug.Log(typeNote + " " + noteDuration + " " + nrOfNotesPlaced); } path.AddStraight(stepDistance, startOffset * playerSpeed, true); terrainGeneration.UpdateRoad(stepDistance); foreach (CurveNoteGeneration curve in curveNoteGeneration) { curve.UpdateRoad(stepDistance); } Debug.Log(path.points.Count + " " + nrOfNotesPlaced); }