public static Vector2 Inside(this IRandomProvider random, Rect rect)
 {
     return(rect.position + new Vector2
            (
                x: random.Between(0f, rect.width),
                y: random.Between(0f, rect.height)
            ));
 }
        protected override void ExecuteSubtask(int execID, int index)
        {
            Vector3 position = random.Inside(spawnArea);
            Vector3 velocity = Vector3.forward * random.Between(10f, 15f);

            var entity = context.CreateEntity();

            context.SetComponent(entity, new TransformComponent(Float3x4.FromPosition(position)));
            context.SetComponent(entity, new VelocityComponent(velocity: velocity));
            context.SetComponent(entity, new GraphicComponent(graphicID: 0));
            context.SetComponent(entity, new AgeComponent());
            context.SetComponent(entity, new LifetimeComponent(totalLifetime: random.Between(30f, 35f)));
            context.SetComponent(entity, new ColliderComponent(size: new Vector3(3, 2, 3)));
            context.SetTag <SpaceshipTag>(entity);
        }
        public static T PickRandom <T>(this IRandomProvider random, IReadOnlyList <T> list)
        {
            if (list.Count == 0)
            {
                return(default(T));
            }
            int index = random.Between(0, list.Count);

            return(list[index]);
        }
 public static int Between(this IRandomProvider random, int minValue, int maxValue)
 {
     return(Mathf.FloorToInt(random.Between((float)minValue, (float)maxValue)));
 }