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); }
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); }