protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            m_queryField.AddDependency(inputDeps);
            // m_queryGrid.AddDependency(inputDeps);
            m_queryPiece.AddDependency(inputDeps);

            NativeArray <PiecePosition> piecePositions = m_queryPiece.ToComponentDataArray <PiecePosition>(Allocator.TempJob);
            NativeArray <FieldBanish>   fieldBanishs   = m_queryField.ToComponentDataArray <FieldBanish>(Allocator.TempJob);
            var job = new PieceMoveJob()
            {
                fieldBanishs     = fieldBanishs,
                piecePositions   = piecePositions,
                GridSize         = Settings.Instance.Common.GridSize,
                GridRowLength    = Settings.Instance.Common.GridRowLength,
                GridColumnLength = Settings.Instance.Common.GridColumnLength,
                BorderSpeed      = Settings.Instance.Common.BorderSpeed,
            };

            inputDeps = job.Schedule(inputDeps);
            inputDeps.Complete();

            m_queryPiece.CopyFromComponentDataArray(job.piecePositions);
            m_queryField.CopyFromComponentDataArray(job.fieldBanishs);

            piecePositions.Dispose();
            fieldBanishs.Dispose();
            return(inputDeps);
        }
Esempio n. 2
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            m_queryField.AddDependency(inputDeps);
            m_queryGrid.AddDependency(inputDeps);
            m_queryPiece.AddDependency(inputDeps);

            NativeArray <FieldInput>    fieldInputs    = m_queryField.ToComponentDataArray <FieldInput>(Allocator.TempJob);
            NativeArray <FieldBanish>   fieldBanishs   = m_queryField.ToComponentDataArray <FieldBanish>(Allocator.TempJob);
            NativeArray <GridState>     gridStates     = m_queryGrid.ToComponentDataArray <GridState>(Allocator.TempJob);
            NativeArray <PiecePosition> piecePositions = m_queryPiece.ToComponentDataArray <PiecePosition>(Allocator.TempJob);

            var moveJob = new PieceMoveJob()
            {
                fieldInputs      = fieldInputs,
                fieldBanishs     = fieldBanishs,
                gridStates       = gridStates,
                piecePositions   = piecePositions,
                GridSize         = Settings.Instance.Common.GridSize,
                GridRowLength    = Settings.Instance.Common.GridRowLength,
                GridColumnLength = Settings.Instance.Common.GridColumnLength,
                FieldWidth       = Settings.Instance.Common.FieldWidth,
                FieldHeight      = Settings.Instance.Common.FieldHeight,
                // PieceLimitSpeed = Define.Instance.Common.PieceLimitSpeed,
                BorderSpeed = Settings.Instance.Common.BorderSpeed,
            };

            inputDeps = moveJob.Schedule(inputDeps);

            var reflectJob = new GridReflectJob()
            {
                piecePositions   = piecePositions,
                gridStates       = gridStates,
                GridSize         = Settings.Instance.Common.GridSize,
                GridRowLength    = Settings.Instance.Common.GridRowLength,
                GridColumnLength = Settings.Instance.Common.GridColumnLength,
            };

            inputDeps = reflectJob.Schedule(inputDeps);
            inputDeps.Complete();

            m_queryPiece.CopyFromComponentDataArray(moveJob.piecePositions);
            m_queryGrid.CopyFromComponentDataArray(reflectJob.gridStates);

            fieldInputs.Dispose();
            fieldBanishs.Dispose();
            gridStates.Dispose();
            piecePositions.Dispose();
            return(inputDeps);
        }