示例#1
0
#pragma warning restore 618

    protected override JobHandle OnUpdate(JobHandle inputDependencies)
    {
        var newEntityJob = new NewEntityJob()
        {
            ConcurrentECB = m_ECBSource.CreateCommandBuffer().ToConcurrent()
        };
        var newJobHandle = newEntityJob.ScheduleSingle(m_newEntities, inputDependencies);

        m_ECBSource.AddJobHandleForProducer(newJobHandle);

        var processEntityJob = new ProcessEntityJob()
        {
            ConcurrentECB = m_ECBSource.CreateCommandBuffer().ToConcurrent()
        };
        var processJobHandle = processEntityJob.Schedule(m_activeEntities, newJobHandle);

        m_ECBSource.AddJobHandleForProducer(processJobHandle);

        var cleanupEntityJob = new CleanupEntityJob()
        {
            ConcurrentECB = m_ECBSource.CreateCommandBuffer().ToConcurrent()
        };
        var cleanupJobHandle = cleanupEntityJob.ScheduleSingle(m_destroyedEntities, processJobHandle);

        m_ECBSource.AddJobHandleForProducer(cleanupJobHandle);

        return(cleanupJobHandle);
    }
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            var inputDeps1 = new AddSystemStateJob
            {
                Ecb        = m_EntityCommandBuffer.CreateCommandBuffer().ToConcurrent(),
                EntityType = GetArchetypeChunkEntityType(),
                Targets    = GetArchetypeChunkComponentType <AbilityOwnerComponent>()
            }.Schedule(m_AddSystemState, inputDeps);

            var inputDeps2 = new CleanupEntityJob
            {
                Ecb        = m_EntityCommandBuffer.CreateCommandBuffer().ToConcurrent(),
                EntityType = GetArchetypeChunkEntityType(),
            }.Schedule(m_RemoveSystemState, inputDeps);

            inputDeps = JobHandle.CombineDependencies(inputDeps, inputDeps1, inputDeps2);

            inputDeps = new RemoveElementFromDynamicBuffer
            {
                bufferFromEntity = GetBufferFromEntity <GrantedAbilityBufferElement>(),
                entities         = m_RemoveSystemState.ToEntityArray(Allocator.TempJob),
                targetComponents = m_RemoveSystemState.ToComponentDataArray <GrantedAbilitySystemStateComponent>(Allocator.TempJob)
            }.Schedule(inputDeps);

            inputDeps = new AddElementToDynamicBuffer
            {
                bufferFromEntity = GetBufferFromEntity <GrantedAbilityBufferElement>(),
                entities         = m_AddSystemState.ToEntityArray(Allocator.TempJob),
                targetComponents = m_AddSystemState.ToComponentDataArray <AbilityOwnerComponent>(Allocator.TempJob)
            }.Schedule(inputDeps);


            m_EntityCommandBuffer.AddJobHandleForProducer(inputDeps);
            return(inputDeps);
        }
#pragma warning restore 618

        protected override JobHandle OnUpdate(JobHandle inputDependencies)
        {
            var newEntityJob = new NewEntityJob
            {
                ConcurrentECB = m_ecbSource.CreateCommandBuffer().AsParallelWriter()
            };
            var newJobHandle = newEntityJob.ScheduleSingle(m_newEntities, inputDependencies);

            m_ecbSource.AddJobHandleForProducer(newJobHandle);

            var cleanupEntityJob = new CleanupEntityJob
            {
                ConcurrentECB = m_ecbSource.CreateCommandBuffer().AsParallelWriter()
            };
            var cleanupJobHandle = cleanupEntityJob.ScheduleSingle(m_destroyedEntities, newJobHandle);

            m_ecbSource.AddJobHandleForProducer(cleanupJobHandle);

            return(cleanupJobHandle);
        }