public static void PopulateLayers(ref Layer3D[] layers) { if (layers != null) { foreach (var layer in layers) { layer?.Dispose(); } } layers = new Layer3D[] { new Layer3D() { Name = "Background", ZPos = 4, Depth = 4, RenderFunction = () => { Rendering.DrawBlack(); Rendering.DrawBackgroundWater(); Rendering.DrawSceneBackground(); Rendering.DrawWalls(); } }, // Solid tiles new Layer3D() { Name = "Solid Tiles", Depth = 32, InputPlane = Layer3D.InputPlaneType.SolidTiles, RenderFunction = () => { Rendering.DrawSolidTiles(); //Rendering.PostDrawTiles(); } }, // Non Solid tiles new Layer3D() { Name = "Non Solid Tiles", Depth = 8, InputPlane = Layer3D.InputPlaneType.NoneSolidTiles, RenderFunction = () => { Rendering.DrawNonSolidTiles(); Rendering.DrawWaterFalls(); } }, //Player new Layer3D() { Name = "Characters", ZPos = -18, Depth = 6, NoiseAmount = 0, RenderFunction = () => { Rendering.DrawMoonMoon(); Rendering.DrawNPCsBehindTiles(); Rendering.SortDrawCacheWorm(); Rendering.DrawWallOfFlesh(); Rendering.DrawNPCsBehindNonSoldTiles(); Rendering.DrawNPCsInfrontOfTiles(); Rendering.DrawPlayers(); Rendering.DrawNPCsOverPlayer(); } }, // Proj new Layer3D() { Name = "Projectiles", ZPos = -20, Depth = 2, NoiseAmount = 0, RenderFunction = () => { Rendering.DrawProjsBehindNPCsAndTiles(); Rendering.DrawProjsBehindNPCs(); Rendering.DrawProjsBehindProjectiles(); Rendering.DrawProjectiles(); Rendering.DrawInfernoRings(); Rendering.DrawProjsOverWireUI(); Rendering.DrawNPCProjectiles(); } }, // Items Gore new Layer3D() { Name = "Gore - Weather - Items", ZPos = -12, Depth = 6, NoiseAmount = 0, RenderFunction = () => { Rendering.DrawGoreBehind(); Rendering.DrawGore(); Rendering.DrawDust(); Rendering.DrawRain(); Rendering.DrawSandstorm(); Rendering.DrawMoonLordDeath(); Rendering.DrawMoonlordDeathFront(); Rendering.DrawItems(); } }, new Layer3D() { Name = "Water Foreground", Depth = 32, RenderFunction = () => { Rendering.DrawForegroundWater(); } }, new Layer3D() { Name = "Wires - UI", ZPos = -32, Depth = 4, RenderFunction = () => { Rendering.DrawWires(); Rendering.DrawHitTileAnimation(); Rendering.DrawItemText(); Rendering.DrawCombatText(); Rendering.DrawChatOverPlayerHeads(); InterfaceRendering.RenderGameInterfaces(); } } }; }