1234567891011121314151617181920212223242526272829303132333435 |
- using Unity.Burst;
- using Unity.Collections;
- using Unity.Entities;
- using Unity.Mathematics;
- using Unity.Transforms;
- namespace GPUECSAnimationBaker.Samples.SampleScenes.Marathon.RunnerSystems
- {
- [BurstCompile]
- public partial struct RunnerSystem : ISystem
- {
- [BurstCompile]
- public void OnUpdate(ref SystemState state)
- {
- state.Dependency = new RunnerJob()
- {
- deltaTime = SystemAPI.Time.DeltaTime,
- }.ScheduleParallel(state.Dependency);
- }
- [BurstCompile]
- private partial struct RunnerJob : IJobEntity
- {
- [ReadOnly] public float deltaTime;
-
- public void Execute(ref LocalTransform localTransform, in RunnerStateComponent runnerState)
- {
- float z = localTransform.Position.z;
- z += deltaTime * runnerState.speed;
- while (z > runnerState.fieldSizeZ / 2f) z -= runnerState.fieldSizeZ;
- localTransform.Position = new float3(localTransform.Position.x, 0f, z);
- }
- }
- }
- }
|