{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch TestBed",
            "type": "cppdbg",
            "request": "launch",
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/bin/",
            "environment": [],
            "program": "${workspaceFolder}/bin/testbed.kapp",
            "osx": {
                "MIMode": "lldb",
                "targetArchitecture": "arm64",
                "externalConsole": false,
            },
            "linux": {
                "externalConsole": false,
                // "environment": [
                //     { "name": "VK_LOADER_DEBUG", "value": "all"}
                // ]
            },
            "windows": {
                "type": "cppvsdbg",
                "program": "${workspaceFolder}\\bin\\testbed.kapp.exe",
                // cppvsdbg requires this instead of externalConsole
                "console": "integratedTerminal",
            },
        },
        {
            "name": "Testbed - Import updated assets from manifest",
            "type": "cppdbg",
            "request": "launch",
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/bin/",
            "environment": [],
            "program": "${workspaceFolder}/bin/kohi.tools",
            "setupCommands": [
                {
                    "description": "Disable automatic debug symbol downloads",
                    "text": "-gdb-set auto-load safe-path /",
                    "ignoreFailures": true
                },
                {
                    "description": "Disable debuginfod",
                    "text": "-gdb-set debuginfod enabled off",
                    "ignoreFailures": true
                },
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "args": [
                "importmanifest",
                "${workspaceFolder}/testbed.kapp/asset_manifest.kson",
                "--updated-only"
            ],
            "osx": {
                "MIMode": "lldb",
                "targetArchitecture": "arm64",
                "externalConsole": false
            },
            "linux": {
                "externalConsole": false,
                "environment": [
                    // { "name": "VK_LOADER_DEBUG", "value": "all"}
                    { "name": "VULKAN_SDK", "value": "{cwd}/../vendor/vulkan/1.4.357.1/"}
                ]
            },
            "windows": {
                "type": "cppvsdbg",
                "program": "${workspaceFolder}/bin/kohi.tools.exe",
                // cppvsdbg requires this instead of externalConsole
                "console": "integratedTerminal"
            }
        },
        {
            "name": "Kohi Runtime - Import updated assets from manifest",
            "type": "cppdbg",
            "request": "launch",
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/bin/",
            "environment": [],
            "program": "${workspaceFolder}/bin/kohi.tools",
            "args": [
                "importmanifest",
                "${workspaceFolder}/kohi.runtime/asset_manifest.kson",
                "--updated-only"
            ],
            "osx": {
                "MIMode": "lldb",
                "targetArchitecture": "arm64",
                "externalConsole": false
            },
            "linux": {
                "externalConsole": false
                // "environment": [
                //     { "name": "VK_LOADER_DEBUG", "value": "all"}
                // ]
            },
            "windows": {
                "type": "cppvsdbg",
                "program": "${workspaceFolder}/bin/kohi.tools.exe",
                // cppvsdbg requires this instead of externalConsole
                "console": "integratedTerminal"
            }
        },
        {
            "name": "Kohi Standard UI - Import updated assets from manifest",
            "type": "cppdbg",
            "request": "launch",
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/bin/",
            "environment": [],
            "program": "${workspaceFolder}/bin/kohi.tools",
            "args": [
                "importmanifest",
                "${workspaceFolder}/kohi.plugin.ui.kui/asset_manifest.kson",
                "--updated-only"
            ],
            "osx": {
                "MIMode": "lldb",
                "targetArchitecture": "arm64",
                "externalConsole": false
            },
            "linux": {
                "externalConsole": false
                // "environment": [
                //     { "name": "VK_LOADER_DEBUG", "value": "all"}
                // ]
            },
            "windows": {
                "type": "cppvsdbg",
                "program": "${workspaceFolder}/bin/kohi.tools.exe",
                // cppvsdbg requires this instead of externalConsole
                "console": "integratedTerminal"
            }
        },
        {
            "name": "Kohi Utils Plugin - Import updated assets from manifest",
            "type": "cppdbg",
            "request": "launch",
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/bin/",
            "environment": [],
            "program": "${workspaceFolder}/bin/kohi.tools",
            "args": [
                "importmanifest",
                "${workspaceFolder}/kohi.plugin.utils/asset_manifest.kson",
                "--updated-only"
            ],
            "osx": {
                "MIMode": "lldb",
                "targetArchitecture": "arm64",
                "externalConsole": false
            },
            "linux": {
                "externalConsole": false
                // "environment": [
                //     { "name": "VK_LOADER_DEBUG", "value": "all"}
                // ]
            },
            "windows": {
                "type": "cppvsdbg",
                "program": "${workspaceFolder}/bin/kohi.tools.exe",
                // cppvsdbg requires this instead of externalConsole
                "console": "integratedTerminal"
            }
        },
        {
            "name": "Launch Core Unit Tests",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/bin/kohi.core.tests",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/bin/",
            "osx": {
                "MIMode": "lldb",
                "targetArchitecture": "arm64",
                "externalConsole": false,
            },
            "linux": {
                "externalConsole": false,
            },
            "windows": {
                "type": "cppvsdbg",
                "program": "${workspaceFolder}/bin/kohi.core.tests.exe",
                // cppvsdbg requires this instead of externalConsole
                "console": "integratedTerminal",
            }
        },
        {
            "name": "Launch Kohi Tools",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/bin/kohi.tools",
            "args": [
                "combine",
                "outfile=${workspaceFolder}/assets/textures/wavy-sand_combined.png",
                "metallic=${workspaceFolder}/assets/textures/wavy-sand_metallic.png",
                "roughness=${workspaceFolder}/assets/textures/wavy-sand_roughness.png", 
                "ao=${workspaceFolder}/assets/textures/wavy-sand_ao.png"
            ],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/bin/",
            "environment": [],
            "osx": {
                "MIMode": "lldb",
                "targetArchitecture": "arm64",
                "externalConsole": false,
            },
            "linux": {
                "externalConsole": false,
            },
            "windows": {
                "type": "cppvsdbg",
                "program": "${workspaceFolder}/bin/kohi.tools.exe",
                // cppvsdbg requires this instead of externalConsole
                "console": "integratedTerminal"
            },
        }
    ]
}