12345678910111213141516171819202122232425262728293031323334353637383940 |
- using Unity.Burst;
- using Unity.Collections;
- using Unity.Entities;
- namespace GPUECSAnimationBaker.Engine.AnimatorSystem
- {
- public partial struct GpuEcsAnimatedMeshSystem : ISystem
- {
- private ComponentLookup<GpuEcsAnimatorShaderDataComponent> gpuEcsAnimatorShaderDataLookup;
-
- [BurstCompile]
- public void OnCreate(ref SystemState state)
- {
- gpuEcsAnimatorShaderDataLookup = state.GetComponentLookup<GpuEcsAnimatorShaderDataComponent>(isReadOnly: true);
- }
-
- [BurstCompile]
- public void OnUpdate(ref SystemState state)
- {
- gpuEcsAnimatorShaderDataLookup.Update(ref state);
- state.Dependency = new GpuEcsAnimatedMeshJob()
- {
- gpuEcsAnimatorShaderDataLookup = gpuEcsAnimatorShaderDataLookup
- }.ScheduleParallel(state.Dependency);
- }
-
- [BurstCompile]
- private partial struct GpuEcsAnimatedMeshJob : IJobEntity
- {
- [ReadOnly] public ComponentLookup<GpuEcsAnimatorShaderDataComponent> gpuEcsAnimatorShaderDataLookup;
- public void Execute(ref GpuEcsMaterialAnimationState gpuEcsMaterialAnimationState,
- in GpuEcsAnimatedMeshComponent gpuEcsAnimatedMesh)
- {
- GpuEcsAnimatorShaderDataComponent gpuEcsAnimatorShaderData = gpuEcsAnimatorShaderDataLookup[gpuEcsAnimatedMesh.animatorEntity];
- gpuEcsMaterialAnimationState.Value = gpuEcsAnimatorShaderData.shaderData;
- }
- }
- }
- }
|