Esempio n. 1
0
    protected override JobHandle OnUpdate(JobHandle inputDeps)
    {
        if (m_BoardQuery.CalculateEntityCount() <= 0)
        {
            return(inputDeps);
        }

        var boardEntity  = m_BoardQuery.GetSingletonEntity();
        var board        = m_BoardQuery.GetSingleton <LbBoard>();
        var bufferLookup = GetBufferFromEntity <LbCatMap>();

        var buffer      = bufferLookup[boardEntity];
        var bufferArray = buffer.AsNativeArray();

        var handle = new MemsetNativeArray <LbCatMap>()
        {
            Source = bufferArray,
            Value  = new LbCatMap()
        }.Schedule(bufferArray.Length, 32, inputDeps);

        handle = new CatMapJob
        {
            Size         = board.SizeY,
            Buffer       = bufferArray,
            Translations = m_CatQuery.ToComponentDataArray <Translation>(Allocator.TempJob)
        }.Schedule(handle);

        handle = new CollisionJob
        {
            Size = board.SizeY,
            CatLocationBuffer = bufferArray,
            Queue             = m_Queue.AsParallelWriter(),
        }.Schedule(this, handle);

        handle = new CollisionCleanJob
        {
            Queue         = m_Queue,
            CommandBuffer = m_Barrier.CreateCommandBuffer(),
        }.Schedule(handle);

        m_Barrier.AddJobHandleForProducer(handle);

        return(handle);
    }
Esempio n. 2
0
    protected override JobHandle OnUpdate(JobHandle inputDeps)
    {
        var boardEntity  = m_BoardQuery.GetSingletonEntity();
        var board        = m_BoardQuery.GetSingleton <LbBoard>();
        var bufferLookup = GetBufferFromEntity <LbCatMap>();

        var handle = new CollisionJob
        {
            BoardSize         = new int2(board.SizeX, board.SizeY),
            CatLocationBuffer = bufferLookup[boardEntity].AsNativeArray(),
            Queue             = m_Queue.AsParallelWriter(),
        }.Schedule(this, inputDeps);

        handle = new CollisionCleanJob
        {
            Queue         = m_Queue,
            CommandBuffer = m_Barrier.CreateCommandBuffer(),
        }.Schedule(handle);

        m_Barrier.AddJobHandleForProducer(handle);

        return(handle);
    }