예제 #1
0
        private BodyJob DoBodyJob(ref JobHandle inputDeps,
                                  NativeArray <Matrix4x4> charaMatrixes,
                                  NativeArray <CharaMotion> charaMotions)
        {
            NativeArray <CharaMuki>   charaMukis   = m_query.ToComponentDataArray <CharaMuki>(Allocator.TempJob);
            NativeArray <CharaLook>   charaLooks   = m_query.ToComponentDataArray <CharaLook>(Allocator.TempJob);
            NativeArray <Translation> transrations = m_query.ToComponentDataArray <Translation>(Allocator.TempJob);

            var job = new BodyJob()
            {
                m_charaMatrixes = charaMatrixes,
                m_charaMukis    = charaMukis,
                m_charaLooks    = charaLooks,
                m_translations  = transrations,
                m_charaMotions  = charaMotions,
                One             = Vector3.one,
                Q    = m_Quaternion,
                QRev = m_QuaternionRev,
            };

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

            m_query.AddDependency(inputDeps);

            charaMukis.Dispose();
            charaLooks.Dispose();
            transrations.Dispose();


            return(job);
        }
예제 #2
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            m_query.AddDependency(inputDeps);
            NativeArray <Matrix4x4>   charaMatrixes = new NativeArray <Matrix4x4>(Settings.Instance.Common.CharaCount, Allocator.TempJob);
            NativeArray <CharaMotion> charaMotions  = m_query.ToComponentDataArray <CharaMotion>(Allocator.TempJob);
            BodyJob job = DoBodyJob(ref inputDeps, charaMatrixes, charaMotions);

            Draw(charaMatrixes, charaMotions, job);
            charaMotions.Dispose();
            charaMatrixes.Dispose();
            return(inputDeps);
        }
예제 #3
0
        private static NativeArray <Matrix4x4> Draw(NativeArray <Matrix4x4> charaMatrixes, NativeArray <CharaMotion> charaMotions,
                                                    BodyJob bodyJob)
        {
            for (int i = 0; i < charaMatrixes.Length; i++)
            {
                string imageName = Shared.m_charaMotionList.GetImageName(charaMotions[i]);
                Graphics.DrawMesh(Shared.m_charaMeshMat.m_meshDict[imageName],
                                  bodyJob.m_charaMatrixes[i],
                                  Shared.m_charaMeshMat.m_materialDict[imageName], 0);
            }

            return(charaMatrixes);
        }