コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
            }
        }