2 using System.Collections.Generic;
5 namespace droid.Runtime.Utilities.Misc.Procedural {
6 public static class NeodroidUtilities {
11 public static IEnumerable<Vector3> SnakeSpaceFillingGenerator(
int length = 100) {
14 var state = GeneratorState.Expand_x_;
16 var out_vectors =
new Vector3[length];
21 for (var i = 0; i < length; i++) {
23 case GeneratorState.Expand_x_:
25 state = GeneratorState.Inc_y_;
28 case GeneratorState.Inc_x_:
31 state = GeneratorState.Dec_y_;
35 case GeneratorState.Dec_x_:
38 state = GeneratorState.Expand_y_;
42 case GeneratorState.Expand_y_:
44 state = GeneratorState.Inc_x_;
46 case GeneratorState.Inc_y_:
49 state = GeneratorState.Dec_x_;
53 case GeneratorState.Dec_y_:
56 state = GeneratorState.Expand_x_;
60 default:
throw new ArgumentOutOfRangeException();
63 out_vectors[i] =
new Vector3(x, 0, y);