diff --git a/README.md b/README.md index 187ca24..28c0f05 100644 --- a/README.md +++ b/README.md @@ -48,8 +48,16 @@ var position = world // The "Position" struct is defined at the bottom of this example. .InitComponent(); -world.New("One").Set(new Position( 0, 0)).Build(); -world.New("Two").Set(new Position(10, 20)).Build(); +// Create an "Entities" parent with two positioned entities inside. +var entities = world.New("Entities").Build(); +entities.NewChild("One").Set(new Position(-5, 0)).Build(); +entities.NewChild("Two").Set(new Position(10, 20)).Build(); + +// Changed my mind: Let's multiply each entity's position by 10. +foreach (var child in entities.GetChildren()) { + ref var pos = ref child.GetRefOrThrow(); + pos = new(pos.X * 10, pos.Y * 10); +} var onUpdate = world.LookupOrThrow("/flecs/pipeline/OnUpdate"); @@ -57,21 +65,21 @@ var onUpdate = world.LookupOrThrow("/flecs/pipeline/OnUpdate"); // the "Position" component downwards by 2 every frame. world.New("FallSystem").Build() .InitSystem(onUpdate, new("Position"), iter => { - var positionSpan = iter.Field(1); + var posColumn = iter.Field(1); for (var i = 0; i < iter.Count; i++) { - ref var position = ref positionSpan[i]; - position = new(position.X, position.Y + 2); + ref var pos = ref posColumn[i]; + pos = new(pos.X, pos.Y + 2); } }); // Create a system that will print out entities' positions. world.New("PrintPositionSystem").Build() .InitSystem(onUpdate, new("[in] Position"), iter => { - var positionSpan = iter.Field(1); + var posColumn = iter.Field(1); for (var i = 0; i < iter.Count; i++) { - var entity = iter.Entity(i); - var position = positionSpan[i]; - Console.WriteLine($"{entity.Name} is at {position}"); + var entity = iter.Entity(i); + var pos = posColumn[i]; + Console.WriteLine($"{entity.Name} is at {pos}"); } });