Ejemplo n.º 1
0
        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);
            }
                );
        }
Ejemplo n.º 2
0
        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);
            }
            );
        }