protected override JobHandle OnUpdate(JobHandle inputDependencies) { var job = new GravitySystemJob(); job.deltaTime = UnityEngine.Time.deltaTime; return(job.Schedule(this, inputDependencies)); }
protected override JobHandle OnUpdate(JobHandle inputDependencies) { if (!vectorField) { vectorField = GameObject.FindObjectOfType <VectorField>(); } var job = new GravitySystemJob() { vectorField = vectorField.vectors, radius = vectorField.radius, spacing = vectorField.spacing, size = (int)(vectorField.radius * 2 / vectorField.spacing), deltaTime = Time.fixedDeltaTime }; return(job.Schedule(this, inputDependencies)); }
protected override JobHandle OnUpdate(JobHandle inputDependencies) { var gravitySources = GetEntityQuery(ComponentType.ReadOnly <GravitySource>(), ComponentType.ReadOnly <Translation>()).ToEntityArray(Allocator.TempJob, out var queryJob); queryJob.Complete(); var gravityJobs = new NativeArray <JobHandle>(gravitySources.Length, Allocator.Temp); for (int i = 0; i < gravityJobs.Length; i++) { gravityJobs[i] = new GravitySystemJob { dt = UnityEngine.Time.deltaTime, Source = EntityManager.GetComponentData <GravitySource>(gravitySources[i]), SourcePos = EntityManager.GetComponentData <Translation>(gravitySources[i]), }.Run(this, inputDependencies); } var gravityJob = JobHandle.CombineDependencies(gravityJobs); var disposeJob = new DisposeArrayJob { Array = gravitySources }.Schedule(gravityJob); return(disposeJob); }