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);
- }
- }
- }
|