Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TestJob : MonoBehaviour {
- private NativeArray<Vector2> inputArray;
- private NativeArray<Vector2> outputArray;
- private JobHandle handle;
- void OnEnable()
- {
- this.inputArray = new NativeArray<Vector2>(1, Allocator.Persistent);
- this.outputArray = new NativeArray<Vector2>(1, Allocator.Persistent);
- CreateJob();
- }
- void OnDisable()
- {
- this.inputArray.Dispose();
- this.outputArray.Dispose();
- }
- void CreateJob()
- {
- SimpleJob job = new SimpleJob();
- job.delta = Time.deltaTime;
- Vector2 position = this.transform.position;
- job.position = position;
- Vector2 newPosition = position + Vector2.right;
- this.inputArray[0] = newPosition;
- job.inputArray = this.inputArray;
- job.outputArray = this.outputArray;
- this.handle = job.Schedule();
- this.handle.Complete();
- }
- void Update()
- {
- if (this.handle.IsCompleted)
- {
- Vector2 newPosition = this.outputArray[0];
- this.transform.position = newPosition;
- CreateJob();
- }
- }
- }
- public struct SimpleJob : IJob
- {
- [ReadOnly]
- public Unity.Collections.NativeArray<Vector2> inputArray;
- [WriteOnly]
- public NativeArray<Vector2> outputArray;
- public Vector2 position;
- public float delta;
- public void Execute()
- {
- Vector2 newPosition = this.inputArray[0];
- newPosition = Vector2.Lerp(this.position, newPosition, this.delta);
- this.outputArray[0] = newPosition;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement