protected override void OnUpdate() { if (!HasSingleton <CanvasRoot>()) { TextUtility.CreateCanvas(EntityManager); SetSingleton(default(CanvasRoot)); } m_vertexCounter.Value = 0; m_vertexIndexCounter.Value = 0; m_subMeshCounter.Value = 0; var changedVerticesCount = m_vertexDataQuery.CalculateEntityCount(); if (changedVerticesCount == 0) { return; } m_vertexDataQuery.ResetFilter(); var length = m_vertexDataQuery.CalculateEntityCount(); var canvasRootEntity = GetSingletonEntity <CanvasRoot>(); var sortedEntities = EntityManager.GetAllSortedEntities(this, Allocator.TempJob); Dependency = m_vertexDataQuery.ToEntityIndexMap(EntityManager, ref m_entityIndexMap, Dependency); Dependency = JobHandle.CombineDependencies( m_offsets.Resize(length, Dependency), m_sharedFontIndices.Resize(length, Dependency)); Dependency = new GatherSharedComponentIndices <FontMaterial> { ChunkSharedComponentType = GetArchetypeChunkSharedComponentType <FontMaterial>(), Indices = m_sharedFontIndices.AsDeferredJobArray() }.Schedule(m_vertexDataQuery, Dependency); CreateOffsets( m_entityIndexMap, sortedEntities, m_sharedFontIndices.AsDeferredJobArray(), m_offsets.AsDeferredJobArray(), m_vertexCounter, m_vertexIndexCounter, m_subMeshCounter); Dependency = JobHandle.CombineDependencies( m_canvasdRootQuery.ResizeBufferDeferred <Vertex>(this, m_vertexCounter, Dependency), m_canvasdRootQuery.ResizeBufferDeferred <VertexIndex>(this, m_vertexIndexCounter, Dependency), m_canvasdRootQuery.ResizeBufferDeferred <SubMeshInfo>(this, m_subMeshCounter, Dependency)); MergeBatching(canvasRootEntity, m_offsets.AsDeferredJobArray()); Dependency = sortedEntities.Dispose(Dependency); m_vertexDataQuery.SetChangedVersionFilter(m_filterChanged); }
protected override JobHandle OnUpdate(JobHandle inputDeps) { if (!HasSingleton <CanvasRoot>()) { TextUtility.CreateCanvas(EntityManager); SetSingleton(default(CanvasRoot)); } m_vertexCounter.Value = 0; m_vertexIndexCounter.Value = 0; m_subMeshCounter.Value = 0; var changedVerticesCount = m_vertexDataQuery.CalculateEntityCount(); if (changedVerticesCount == 0) { return(inputDeps); } m_vertexDataQuery.ResetFilter(); var length = m_vertexDataQuery.CalculateEntityCount(); var canvasRootEntity = GetSingletonEntity <CanvasRoot>(); var sortedEntities = EntityManager.GetAllSortedEntities(this, Allocator.TempJob); inputDeps = m_vertexDataQuery.ToEntityIndexMap(EntityManager, ref m_entityIndexMap, inputDeps); inputDeps = JobHandle.CombineDependencies( m_offsets.Resize(length, inputDeps), m_sharedFontIndices.Resize(length, inputDeps)); inputDeps = new GatherSharedComponentIndices <FontMaterial> { ChunkSharedComponentType = GetArchetypeChunkSharedComponentType <FontMaterial>(), Indices = m_sharedFontIndices.AsDeferredJobArray() }.Schedule(m_vertexDataQuery, inputDeps); inputDeps = new CreateOffsets { EntitiesIndexMap = m_entityIndexMap, SortedEntities = sortedEntities, Offsets = m_offsets.AsDeferredJobArray(), SharedComponentIndices = m_sharedFontIndices.AsDeferredJobArray(), Vertices = GetBufferFromEntity <Vertex>(true), VertexIndices = GetBufferFromEntity <VertexIndex>(true), VertexCounter = m_vertexCounter, VertexIndexCounter = m_vertexIndexCounter, SubMeshCounter = m_subMeshCounter }.Schedule(inputDeps); inputDeps = JobHandle.CombineDependencies( m_canvasdRootQuery.ResizeBufferDeferred <Vertex>(this, m_vertexCounter, inputDeps), m_canvasdRootQuery.ResizeBufferDeferred <VertexIndex>(this, m_vertexIndexCounter, inputDeps), m_canvasdRootQuery.ResizeBufferDeferred <SubMeshInfo>(this, m_subMeshCounter, inputDeps)); inputDeps = new MeshBatching { CanvasRootEntity = canvasRootEntity, MeshVertexFromEntity = GetBufferFromEntity <Vertex>(false), MeshVertexIndexFromEntity = GetBufferFromEntity <VertexIndex>(false), SubMeshInfoFromEntity = GetBufferFromEntity <SubMeshInfo>(false), Offsets = m_offsets.AsDeferredJobArray(), }.Schedule(m_vertexDataQuery, inputDeps); inputDeps = sortedEntities.Dispose(inputDeps); m_vertexDataQuery.SetChangedVersionFilter(m_filterChanged); return(inputDeps); }