protected override void OnUpdate() { Entities.ForEach( (Entity entity, ref GrassSpawner spawner, ref Translation translation) => { for (var i = 0; i < spawner.Number; i++) { // Create a new entity based on the grass template. var e = EntityManager.Instantiate(spawner.Template); // Place at random position var delta = UnityEngine.Random.insideUnitSphere * spawner.Radius; var newTranslation = translation.Value; newTranslation.xy += new float2(delta.x, delta.y); EntityManager.SetComponentData(e, new Translation { Value = newTranslation }); // Choose random grass variants int grassVariant = UnityEngine.Random.Range(0, 4); var tileVariant = new TileVariant { Value = new float4(grassVariant * 0.25f, 0.25f, 0f, 0f) }; EntityManager.SetComponentData(e, tileVariant); } // Delete spawner EntityManager.DestroyEntity(entity); } ); }
protected override void OnUpdate() { Entities.ForEach( (Entity generatorEntity, ref SceneGenerator generator) => { for (var x=-generator.Width/2; x<generator.Width/2; x++) { for (var y=-generator.Height/2; y<generator.Height/2; y++) { var e = EntityManager.Instantiate(generator.SandTile); EntityManager.SetComponentData(e, new Translation { Value = new float3(x * 1f, 1f * y, 0f) }); int sandVariant = UnityEngine.Random.Range(0, 8); int pebbleVariant = UnityEngine.Random.Range(0, 8); var tileVariant = new TileVariant { Value = new float4(sandVariant * 0.125f, 0.125f, pebbleVariant * 0.125f, 0.125f) }; EntityManager.AddComponentData(e, tileVariant); } } EntityManager.DestroyEntity(generatorEntity); } ); }