protected override void OnUpdate() { using (var chunkArray = m_UpdateSizeGroup.CreateArchetypeChunkArray(Allocator.TempJob)) { var cameraType = GetArchetypeChunkSharedComponentType <CanvasTargetCamera>(); var sizeType = GetArchetypeChunkComponentType <CanvasScreenSize>(); var entityType = GetArchetypeChunkEntityType(); NativeQueue <Entity> commandBuffer = new NativeQueue <Entity>(Allocator.Temp); foreach (var chunk in chunkArray) { var camera = chunk.GetSharedComponentData(cameraType, EntityManager); var canvasSize = new CanvasScreenSize() { Value = new int2(camera.Target.UnityCamera.pixelWidth, camera.Target.UnityCamera.pixelHeight) }; var sizeArray = chunk.GetNativeArray(sizeType); var entityArray = chunk.GetNativeArray(entityType); for (int i = 0; i < sizeArray.Length; i++) { if (!sizeArray[i].Value.Equals(canvasSize.Value)) { commandBuffer.Enqueue(entityArray[i]); sizeArray[i] = canvasSize; } } } while (commandBuffer.TryDequeue(out var entity)) { EntityManager.AddComponent <RebuildCanvasHierarchyFlag>(entity); } } }
protected override void OnUpdate() { using (var chunkArray = m_UpdateSizeGroup.CreateArchetypeChunkArray(Allocator.TempJob)) { var cameraType = GetArchetypeChunkSharedComponentType <CanvasTargetCamera>(); var sizeType = GetArchetypeChunkComponentType <CanvasScreenSize>(); foreach (var chunk in chunkArray) { var camera = chunk.GetSharedComponentData(cameraType, EntityManager); var canvasSize = new CanvasScreenSize() { Value = new float2(camera.Target.UnityCamera.pixelWidth, camera.Target.UnityCamera.pixelHeight) }; chunk.SetChunkComponentData(sizeType, canvasSize); } } }
protected override void OnUpdate() { int newWidth = Screen.width; int newHeight = Screen.height; if (m_OldWidth != newWidth || m_OldHeight != newHeight) { using (var chunkArray = m_UpdateSizeGroup.CreateArchetypeChunkArray(Allocator.TempJob)) { var sizeType = GetArchetypeChunkComponentType <CanvasScreenSize>(); var entityType = GetArchetypeChunkEntityType(); NativeQueue <Entity> commandBuffer = new NativeQueue <Entity>(Allocator.Temp); foreach (var chunk in chunkArray) { var canvasSize = new CanvasScreenSize() { Value = new int2(newWidth, newHeight) }; var sizeArray = chunk.GetNativeArray(sizeType); var entityArray = chunk.GetNativeArray(entityType); for (int i = 0; i < sizeArray.Length; i++) { if (!sizeArray[i].Value.Equals(canvasSize.Value)) { commandBuffer.Enqueue(entityArray[i]); sizeArray[i] = canvasSize; } } } while (commandBuffer.TryDequeue(out var entity)) { EntityManager.AddComponent <RebuildCanvasHierarchyFlag>(entity); } } m_OldWidth = newWidth; m_OldHeight = newHeight; } }