Ejemplo n.º 1
0
        internal static void AlertWindowResized(DWindow window)
        {
            GL.Viewport(0, 0, window.Width, window.Height);

            IVector res = new IVector(window.Width, window.Height);

            gridSize = res / (new IVector(1920, 1080) / hdScale);

            cachedUnitSize             = GetUnitSize(gridSize);
            cachedUnitScreenPositions  = new Vector[gridSize.y * gridSize.x];
            cachedUnitFontPositions    = new Vector[gridSize.y * gridSize.x];
            cachedUnitForegroundColors = new Color[gridSize.y * gridSize.x];
            cachedUnitBackgroundColors = new Color[gridSize.y * gridSize.x];

            IVector oldSize = rootCanvas.Size;

            bool rootCanvasSizeChanged = gridSize != oldSize;

            CBuffer oldBuffer = rootBuffer;

            rootCanvas.ChangeSize(gridSize);
            rootBuffer = rootCanvas.buffer;

            rootCanvas.SignalRender();

            if (rootCanvasSizeChanged)
            {
                window.Title = $"Dae | Size: {gridSize.x}x{gridSize.y}";
            }

            unitMaterial?.Set("size", GetUnitSize(gridSize) * unitScale);

            CBuffer.Blit(oldBuffer, rootBuffer, IVector.zero, oldBuffer.Size, IVector.zero);

            for (int y = 0; y < gridSize.y; y++)
            {
                for (int x = 0; x < gridSize.x; x++)
                {
                    CUnit unit = rootBuffer[x, y];
                    int   aPos = (y * gridSize.x) + x;
                    cachedUnitScreenPositions[aPos] = DMath.P01ToN1P1(GetCorrectedPosition(new Vector(x, y))).ReversedYFull;
                }
            }
        }
Ejemplo n.º 2
0
        internal void RenderSubComponents()
        {
            // Remove all null components
            subComponents.RemoveAll(component => component == null);

            // Render all sub components
            foreach (Component component in subComponents)
            {
                if (component.Size.x > 0 && component.Size.y > 0)
                {
                    if (component.signalRender || !checkSignalRender)
                    {
                        component.signalRender = false;
                        component.Render();
                    }
                    CBuffer.Blit(component.buffer, buffer, Vector.zero, component.Size, component.position);
                }
            }
        }