Exemplo n.º 1
0
    protected override JobHandle OnUpdate(JobHandle inputDependencies)
    {
        var job = new GravitySystemJob();

        job.deltaTime = UnityEngine.Time.deltaTime;

        return(job.Schedule(this, inputDependencies));
    }
Exemplo n.º 2
0
    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));
    }
Exemplo n.º 3
0
    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);
    }