|
11 | 11 | var scheduler = new Scheduler(ecs); |
12 | 12 |
|
13 | 13 |
|
14 | | -scheduler.AddState(GameState.Loading); |
15 | | -scheduler.AddState(AnotherState.C); |
16 | 14 |
|
17 | | -scheduler.OnUpdate(() => |
18 | | -{ |
19 | | - Console.WriteLine("im in loading state"); |
20 | | -}, ThreadingMode.Single) |
21 | | -.RunIf((SchedulerState state) => state.InState(GameState.Loading)) |
22 | | -.RunIf((SchedulerState state) => state.InState(AnotherState.A)); |
| 15 | +// scheduler.OnUpdate((Query<Data<Position>, Changed<Position>> query) => |
| 16 | +// { |
| 17 | +// foreach ((var ent, var pos) in query) |
| 18 | +// { |
23 | 19 |
|
| 20 | +// } |
| 21 | +// }, ThreadingMode.Single); |
24 | 22 |
|
25 | | -scheduler.OnEnter(GameState.Loading, () => Console.WriteLine("on enter loading"), ThreadingMode.Single); |
26 | | -scheduler.OnEnter(GameState.Loading, () => Console.WriteLine("on enter loading 2"), ThreadingMode.Single); |
27 | | -scheduler.OnExit(GameState.Loading, () => Console.WriteLine("on exit loading"), ThreadingMode.Single); |
28 | 23 |
|
29 | | -scheduler.OnEnter(GameState.Playing, () => Console.WriteLine("on enter playing"), ThreadingMode.Single); |
30 | | -scheduler.OnExit(GameState.Playing, () => Console.WriteLine("on exit playing"), ThreadingMode.Single); |
| 24 | +var ab = ecs.Entity() |
| 25 | + .Set(new Position()).Set(new Velocity()); |
| 26 | +// ecs.Entity() |
| 27 | +// .Set(new Position() { X = -1 }); |
| 28 | +// // var q = ecs.QueryBuilder() |
| 29 | +// // .With<Position>() |
| 30 | +// // .Changed<Position>() |
| 31 | +// // .Build(); |
31 | 32 |
|
32 | | -scheduler.OnEnter(GameState.Menu, () => Console.WriteLine("on enter Menu"), ThreadingMode.Single); |
33 | | -scheduler.OnExit(GameState.Menu, () => Console.WriteLine("on exit Menu"), ThreadingMode.Single); |
| 33 | +// // var a = new QueryIter<Data<Position>, Changed<Position>>(q.Iter()); |
34 | 34 |
|
35 | | -scheduler.OnUpdate((State<GameState> state, State<AnotherState> anotherState, Local<float> loading, Local<GameState[]> states, Local<int> index) => |
36 | | -{ |
37 | | - states.Value ??= Enum.GetValues<GameState>(); |
| 35 | +// // foreach ((var ent, var pos) in a) |
| 36 | +// // { |
| 37 | +// // pos.Ref.X *= 2; |
| 38 | +// // pos.Ref.Y *= 2; |
| 39 | +// // } |
38 | 40 |
|
39 | | - loading.Value += 0.1f; |
40 | | - // Console.WriteLine("next {0:P}", loading.Value); |
41 | 41 |
|
42 | | - Console.WriteLine("current state: {0}", state.Current); |
| 42 | +// // foreach ((var ent, var pos) in a) |
| 43 | +// // { |
| 44 | +// // pos.Ref.X *= 2; |
| 45 | +// // pos.Ref.Y *= 2; |
| 46 | +// // } |
43 | 47 |
|
44 | | - if (loading.Value >= 1f) |
45 | | - { |
46 | | - loading.Value = 0f; |
47 | | - // Console.WriteLine("on swapping state"); |
48 | | - state.Set(states.Value[(++index.Value) % states.Value.Length]); |
49 | | - anotherState.Set(AnotherState.A); |
50 | | - } |
51 | 48 |
|
52 | | -}, threadingType: ThreadingMode.Single); |
| 49 | +// scheduler.RunOnce(); |
| 50 | +// scheduler.RunOnce(); |
53 | 51 |
|
| 52 | +ab.Set(new Position() { X = 2 }); |
| 53 | +// scheduler.RunOnce(); |
54 | 54 |
|
55 | | -while (true) |
56 | | - scheduler.RunOnce(); |
| 55 | +// scheduler.AddState(GameState.Loading); |
| 56 | +// scheduler.AddState(AnotherState.C); |
| 57 | + |
| 58 | +// scheduler.OnUpdate(() => |
| 59 | +// { |
| 60 | +// Console.WriteLine("im in loading state"); |
| 61 | +// }, ThreadingMode.Single) |
| 62 | +// .RunIf((SchedulerState state) => state.InState(GameState.Loading)) |
| 63 | +// .RunIf((SchedulerState state) => state.InState(AnotherState.A)); |
| 64 | + |
| 65 | + |
| 66 | +// scheduler.OnEnter(GameState.Loading, () => Console.WriteLine("on enter loading"), ThreadingMode.Single); |
| 67 | +// scheduler.OnEnter(GameState.Loading, () => Console.WriteLine("on enter loading 2"), ThreadingMode.Single); |
| 68 | +// scheduler.OnExit(GameState.Loading, () => Console.WriteLine("on exit loading"), ThreadingMode.Single); |
| 69 | + |
| 70 | +// scheduler.OnEnter(GameState.Playing, () => Console.WriteLine("on enter playing"), ThreadingMode.Single); |
| 71 | +// scheduler.OnExit(GameState.Playing, () => Console.WriteLine("on exit playing"), ThreadingMode.Single); |
| 72 | + |
| 73 | +// scheduler.OnEnter(GameState.Menu, () => Console.WriteLine("on enter Menu"), ThreadingMode.Single); |
| 74 | +// scheduler.OnExit(GameState.Menu, () => Console.WriteLine("on exit Menu"), ThreadingMode.Single); |
| 75 | + |
| 76 | +// scheduler.OnUpdate((State<GameState> state, State<AnotherState> anotherState, Local<float> loading, Local<GameState[]> states, Local<int> index) => |
| 77 | +// { |
| 78 | +// states.Value ??= Enum.GetValues<GameState>(); |
| 79 | + |
| 80 | +// loading.Value += 0.1f; |
| 81 | +// // Console.WriteLine("next {0:P}", loading.Value); |
| 82 | + |
| 83 | +// Console.WriteLine("current state: {0}", state.Current); |
| 84 | + |
| 85 | +// if (loading.Value >= 1f) |
| 86 | +// { |
| 87 | +// loading.Value = 0f; |
| 88 | +// // Console.WriteLine("on swapping state"); |
| 89 | +// state.Set(states.Value[(++index.Value) % states.Value.Length]); |
| 90 | +// anotherState.Set(AnotherState.A); |
| 91 | +// } |
| 92 | + |
| 93 | +// }, threadingType: ThreadingMode.Single); |
| 94 | + |
| 95 | + |
| 96 | +// while (true) |
| 97 | +// scheduler.RunOnce(); |
57 | 98 |
|
58 | 99 | for (int i = 0; i < ENTITIES_COUNT; i++) |
59 | 100 | ecs.Entity() |
60 | 101 | .Set<Position>(new Position()) |
61 | 102 | .Set<Velocity>(new Velocity()); |
62 | 103 |
|
63 | | -ecs.Entity().Set(new Position()).Set(new Velocity()).Set(new Mass()); |
| 104 | +// ecs.Entity().Set(new Position()).Set(new Velocity()).Set(new Mass()); |
64 | 105 |
|
65 | 106 |
|
66 | 107 |
|
67 | | -scheduler.AddSystem((Query<Data<Position, Velocity>> q) => |
| 108 | +scheduler.AddSystem(( |
| 109 | + Query<Data<Position, Velocity>, With<Position>> q, |
| 110 | + Query<Data<Position, Velocity>, Added<Position>> added |
| 111 | +) => |
68 | 112 | { |
69 | | - foreach ((var ent, var pos, var vel) in q) |
| 113 | + foreach ((var pos, var vel) in q) |
70 | 114 | { |
71 | 115 | pos.Ref.X *= vel.Ref.X; |
72 | 116 | pos.Ref.Y *= vel.Ref.Y; |
| 117 | + |
| 118 | + // pos.Ref.X *= vel.Ref.X; |
| 119 | + // pos.Ref.Y *= vel.Ref.Y; |
| 120 | + |
| 121 | + // if (pos.IsChanged) |
| 122 | + // pos.ClearState(); |
73 | 123 | } |
| 124 | + |
| 125 | + // foreach ((var pos, var vel) in added) |
| 126 | + // { |
| 127 | + // pos.Ref.X *= vel.Ref.X; |
| 128 | + // pos.Ref.Y *= vel.Ref.Y; |
| 129 | + |
| 130 | + // // if (pos.IsAdded) |
| 131 | + // // pos.ClearState(); |
| 132 | + // } |
74 | 133 | }, threadingType: ThreadingMode.Single); |
75 | 134 |
|
76 | 135 |
|
|
87 | 146 | { |
88 | 147 | for (int i = 0; i < 3600; ++i) |
89 | 148 | { |
90 | | - // scheduler.RunOnce(); |
| 149 | + scheduler.RunOnce(); |
91 | 150 |
|
92 | | - Execute(query); |
| 151 | + // Execute(query); |
93 | 152 | // ExecuteIterator(query); |
94 | 153 |
|
95 | 154 | // var it = query.Iter(); |
|
121 | 180 |
|
122 | 181 | static void Execute(Query query) |
123 | 182 | { |
124 | | - foreach ((var ent, var pos, var vel) in Data<Position, Velocity>.CreateIterator(query.Iter())) |
| 183 | + foreach ((var pos, var vel) in Data<Position, Velocity>.CreateIterator(query.Iter())) |
125 | 184 | { |
126 | 185 | pos.Ref.X *= vel.Ref.X; |
127 | 186 | pos.Ref.Y *= vel.Ref.Y; |
|
0 commit comments