private DrawJob DoDrawJob(ref JobHandle inputDeps, NativeArray <PieceState> pieceStates, NativeArray <PiecePosition> piecePositions, NativeArray <Matrix4x4> pieceMatrixes, NativeArray <int> clipNo) { var job = new DrawJob() { pieceMatrixes = pieceMatrixes, clipNo = clipNo, piecePositions = piecePositions, pieceStates = pieceStates, one = Vector3.one, q = m_quaternion, FieldOffsetX = Settings.Instance.Common.FieldOffsetX, FieldOffsetY = Settings.Instance.Common.FieldOffsetY, PieceOffsetX = Settings.Instance.Common.PieceOffsetX, PieceOffsetY = Settings.Instance.Common.PieceOffsetY, GridSize = Settings.Instance.Common.GridSize, GridRowLength = Settings.Instance.Common.GridRowLength, GridColumnLength = Settings.Instance.Common.GridColumnLength, }; inputDeps = job.Schedule(inputDeps); m_query.AddDependency(inputDeps); return(job); }
protected override JobHandle OnUpdate(JobHandle inputDeps) { m_query.AddDependency(inputDeps); NativeArray <EffectState> effectStates = m_query.ToComponentDataArray <EffectState>(Allocator.TempJob); NativeArray <Matrix4x4> effectMatrixes = new NativeArray <Matrix4x4>(effectStates.Length, Allocator.TempJob); DrawJob job = DoDrawJob(ref inputDeps, effectStates, effectMatrixes); // 描画のためCompleteする inputDeps.Complete(); for (int i = 0; i < effectMatrixes.Length - 1; i++) { if (effectStates[i].type == EnumEffectType.None) { continue; } Graphics.DrawMesh(GetMeshe(effectStates[i]), job.effectMatrixes[i], Shared.puzzleMeshMat.material, 0); } effectStates.Dispose(); effectMatrixes.Dispose(); return(inputDeps); }
private DrawJob DoDrawJob(ref JobHandle inputDeps, NativeArray <EffectState> effectStates, NativeArray <Matrix4x4> pieceMatrixes) { var job = new DrawJob() { effectMatrixes = pieceMatrixes, effectStates = effectStates, one = Vector3.one, q = m_quaternion, FieldOffsetX = Settings.Instance.Common.FieldOffsetX, FieldOffsetY = Settings.Instance.Common.FieldOffsetY, PieceOffsetX = Settings.Instance.Common.PieceOffsetX, PieceOffsetY = Settings.Instance.Common.PieceOffsetY, // GridSize = Define.Instance.Common.GridSize, // GridLineLength = Define.Instance.Common.GridLineLength, }; inputDeps = job.Schedule(inputDeps); m_query.AddDependency(inputDeps); return(job); }
protected override JobHandle OnUpdate(JobHandle inputDeps) { // Debug.Log("PieceDrawSystem"); m_query.AddDependency(inputDeps); NativeArray <PieceState> pieceStates = m_query.ToComponentDataArray <PieceState>(Allocator.TempJob); NativeArray <PiecePosition> piecePositions = m_query.ToComponentDataArray <PiecePosition>(Allocator.TempJob); NativeArray <Matrix4x4> pieceMatrixes = new NativeArray <Matrix4x4>(Settings.Instance.Common.PieceCount + 1, Allocator.TempJob); NativeArray <int> clipNo = new NativeArray <int>(1, Allocator.TempJob); DrawJob job = DoDrawJob(ref inputDeps, pieceStates, piecePositions, pieceMatrixes, clipNo); inputDeps.Complete(); Draw(pieceStates, pieceMatrixes, job); pieceStates.Dispose(); piecePositions.Dispose(); pieceMatrixes.Dispose(); clipNo.Dispose(); return(inputDeps); }
private void Draw(NativeArray <PieceState> pieceStates, NativeArray <Matrix4x4> pieceMatrixes, DrawJob job) { for (int i = 0; i < pieceMatrixes.Length - 1; i++) { if (pieceStates[i].isBanish) { continue; } Graphics.DrawMesh(GetMeshe(pieceStates[i]), job.pieceMatrixes[i], Shared.puzzleMeshMat.material, 0); } if (job.clipNo[0] != -1) { Graphics.DrawMesh(GetMeshe(pieceStates[job.clipNo[0]]), job.pieceMatrixes[job.pieceMatrixes.Length - 1], Shared.puzzleMeshMat.material, 0); } }