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