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