| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | using GPUECSAnimationBaker.Engine.AnimatorSystem;using Unity.Entities;using UnityEngine;using Random = Unity.Mathematics.Random;namespace GPUECSAnimationBaker.Samples.SampleScenes.Festival.CrowdSpawnerSystem{    public class CrowdSpawnerBehaviour : MonoBehaviour    {        public float spacing;        public GameObject[] gpuEcsAnimatorPrefabs;     }    public class CrowdSpawnerBaker : Baker<CrowdSpawnerBehaviour>    {        public override void Bake(CrowdSpawnerBehaviour authoring)        {            Entity entity = GetEntity(TransformUsageFlags.None);            AddComponent(entity, new CrowdSpawnerComponent()            {                cols = 0,                rows = 0,                spacing = authoring.spacing            });            AddComponent(entity, new CrowdSpawnerUpdateComponent()            {                cols = 0,                rows = 0,                updateTime = 0,                random = Random.CreateFromIndex((uint)Mathf.RoundToInt(Time.time))            });            DynamicBuffer<CrowdSpawnerAnimatorPrefabBufferElement> crowdSpawnerAnimatorPrefabs                 = AddBuffer<CrowdSpawnerAnimatorPrefabBufferElement>(entity);            foreach(GameObject gpuEcsAnimatorPrefab in authoring.gpuEcsAnimatorPrefabs)            {                crowdSpawnerAnimatorPrefabs.Add(new CrowdSpawnerAnimatorPrefabBufferElement()                {                    gpuEcsAnimatorPrefab = GetEntity(gpuEcsAnimatorPrefab,                         gpuEcsAnimatorPrefab.GetComponent<GpuEcsAnimatorBehaviour>().transformUsageFlags)                });            }                        AddBuffer<CrowdSpawnerAnimatorBufferElement>(entity);        }    }}
 |