diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
deleted file mode 100644
index 39ffdf4..0000000
--- a/.github/workflows/build.yml
+++ /dev/null
@@ -1,89 +0,0 @@
-name: build
-
-on:
- workflow_dispatch:
- push:
- tags:
- - '*'
-
-jobs:
- build-linux:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v5
- with:
- submodules: 'recursive'
-
- - name: install jq and curl
- run: |
- sudo apt-get install jq
- sudo apt-get install curl
-
- - name: setup dotnet v9.0.x
- uses: actions/setup-dotnet@v4
- with:
- dotnet-version: '9.0.x'
-
- - name: display dotnet version
- run: dotnet --version
-
- - name: adding outdated packages (only on Linux)
- run: dotnet nuget add source 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json' -n "OutdatedPackages"
-
- - name: building and publishing for linux-x64 runtime
- run: dotnet publish --configuration=Release --runtime=linux-x64 unity-debug-adapter/unity-debug-adapter.csproj
-
- - name: building and publishing for win-x64 runtime
- run: dotnet publish --configuration=Release --runtime=win-x64 unity-debug-adapter/unity-debug-adapter.csproj
-
- - name: building and publishing for osx-x64 runtime
- run: dotnet publish --configuration=Release --runtime=osx-x64 unity-debug-adapter/unity-debug-adapter.csproj
-
- - name: compressing builds
- run: |
- for RUNTIME in win-x64 linux-x64 osx-x64
- do
- pushd bin/Release/$RUNTIME/publish
- zip -r unity-debug-adapter-${{ github.ref_name }}-$RUNTIME.zip .
- popd
- done
-
- - name: create release page and upload artifact
- if: github.ref_type == 'tag'
- # do not use the garbage github action action-gh-release - it doesn't provide a way to generate multiple zip
- # files. Just use github's releases API at:
- # https://docs.github.com/en/rest/releases?apiVersion=2026-03-10
- run: |
- curl -L \
- -X POST \
- -H "Accept: application/vnd.github+json" \
- -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
- -H "X-GitHub-Api-Version: 2026-03-10" \
- https://api.github.com/repos/walcht/unity-dap/releases \
- -d '{"tag_name":"${{ github.ref_name }}","name":"unity-debug-adapter-${{ github.ref_name }}","body":"unity-debug-adapter release for win-x64, linux-x64, and osx-x64 platforms","generate_release_notes":true}' -o response.json
- STATUS=$(cat response.json | jq -r '.status')
- if [ $STATUS -ne 201 ]; then
- echo "create_release POST failed with status code: $STATUS" >&2
- exit 1
- fi
- RELEASE_ID=$(cat response.json | jq -r '.id')
- echo RELEASE_ID=$RELEASE_ID
- for RUNTIME in win-x64 linux-x64 osx-x64
- do
- pushd bin/Release/$RUNTIME/publish
- ARTIFACT_NAME=unity-debug-adapter-${{ github.ref_name }}-$RUNTIME.zip
- curl -L -X POST \
- -H "Accept: application/vnd.github+json" \
- -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
- -H "X-GitHub-Api-Version: 2026-03-10" \
- -H "Content-Type: application/octet-stream" \
- "https://uploads.github.com/repos/walcht/unity-dap/releases/$RELEASE_ID/assets?name=$ARTIFACT_NAME" \
- --data-binary "@$ARTIFACT_NAME" -o response.json
- STATUS=$(cat response.json | jq -r '.status')
- if [ $STATUS -ne 201 ]; then
- echo "upload_release_asset POST failed with status code: $STATUS" >&2
- exit 1
- fi
- popd
- done
-
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
new file mode 100644
index 0000000..705b24f
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,162 @@
+# dotnet Github Actions build workflow with 0 reliance on Github Actions
+# marketplace. Only bash.
+name: build and publish
+
+on:
+ workflow_dispatch:
+ push:
+ tags:
+ - '*'
+
+jobs:
+ build-linux:
+ runs-on: ubuntu-latest
+ steps:
+ # replace this with git clone
+ # only clone to depth 1 because we don't care about Git history and only care about HEAD
+ - name: git clone unity-dap ${{ github.ref_name }}
+ run:
+ git clone --recurse-submodules --depth 1 --branch ${{ github.ref_name }} https://github.com/walcht/unity-dap.git
+ cd unity-dap/
+
+ # jq and curl are available in Github runners => no reason to check
+ # - name: install jq and curl
+ # run: |
+ # sudo apt-get install jq
+ # sudo apt-get install curl
+
+ # github runners usually have the latest version of dotnet installed
+ - name: check dotnet --version >= v9.0.0
+ step_id: dotnet_install
+ run:
+ verify_dotnet_version() {
+ local regex="^([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)"
+
+ if [[ $(dotnet --list-sdks) =~ $regex ]]
+ then
+ local MAJOR="${BASH_REMATCH[1]}"
+ local MINOR="${BASH_REMATCH[2]}"
+ local PATCH="${BASH_REMATCH[3]}"
+
+ DOTNET_VERSION=$MAJOR.$MINOR.$PATCH
+
+ if [ $1 = 'x' -o $1 = 'X' ]; then return 0; fi
+
+ if [ $MAJOR -lt $1 ]; then
+ echo "error: available dotnet version MAJOR: ${MAJOR} is < required $1" >&2
+ return 1
+ fi
+
+ if [ $2 = 'x' -o $2 = 'X' ]; then return 0; fi
+
+ if [ $MINOR -lt $2 ]; then
+ echo "error: available dotnet version MINOR: ${MINOR} is < required $2" >&2
+ return 1
+ fi
+
+ if [ $3 = 'x' -o $3 = 'X' ]; then return 0; fi
+
+ if [ $PATCH -lt $3 ]; then
+ echo "error: available dotnet version PATH: ${PATCH} is < required $3" >&2
+ return 1
+ fi
+
+ return 0
+ fi
+ }
+
+ verify_dotnet_version "10" "0" "50"
+
+ if [ $? -eq 0 ]; then
+ echo found dotnet version: $DOTNET_VERSION
+ echo $DOTNET_VERSION > $GITHUB_ENV
+ else
+ exit 1
+ fi
+
+ - name: adding outdated packages (only on Linux)
+ run: dotnet nuget add source 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json' -n "OutdatedPackages"
+
+ - name: building and publishing for linux-x64 runtime
+ run: dotnet publish --configuration=Release --runtime=linux-x64 unity-debug-adapter/unity-debug-adapter.csproj
+
+ - name: building and publishing for win-x64 runtime
+ run: dotnet publish --configuration=Release --runtime=win-x64 unity-debug-adapter/unity-debug-adapter.csproj
+
+ - name: building and publishing for osx-x64 runtime
+ run: dotnet publish --configuration=Release --runtime=osx-x64 unity-debug-adapter/unity-debug-adapter.csproj
+
+ - name: compressing builds
+ run: |
+ for RUNTIME in win-x64 linux-x64 osx-x64
+ do
+ pushd bin/Release/$RUNTIME/publish
+ zip -r unity-debug-adapter-${{ github.ref_name }}-$RUNTIME.zip .
+ popd
+ done
+
+ - name: create release page and upload artifact
+ if: github.ref_type == 'tag'
+ #
+ # Do not use the ga action-gh-release - it doesn't provide a way to generate multiple zip files.
+ # Just use github's releases Rest API at:
+ # https://docs.github.com/en/rest/releases?apiVersion=2026-03-10
+ #
+ # For increased security, make sure that the releases you publish are immutable (i.e., releases cannot be
+ # updated once out of draft mode).
+ #
+ # 1. create draft release
+ # 2. upload assests to said draft release
+ # 3. unset the draft flag on the said release (now it is immutable)
+ #
+ run: |
+ curl -L \
+ -X POST \
+ -H "Accept: application/vnd.github+json" \
+ -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
+ -H "X-GitHub-Api-Version: 2026-03-10" \
+ https://api.github.com/repos/walcht/unity-dap/releases \
+ -d '{"tag_name":"${{ github.ref_name }}","name":"unity-debug-adapter-${{ github.ref_name }}","body":"unity-debug-adapter release for win-x64, linux-x64, and osx-x64 platforms","draft":true,"prerelease":false,"generate_release_notes":true}' -o response.json
+
+ verify_status_code() {
+ local STATUS=$(cat response.json | jq -r '.status')
+ if [ $STATUS -ne 201 ]; then
+ echo "$1: $STATUS" >&2
+ exit 1
+ fi
+ }
+
+ verify_status_code "create_release POST failed with status code"
+ RELEASE_ID=$(cat response.json | jq -r '.id')
+
+ for RUNTIME in win-x64 linux-x64 osx-x64
+ do
+ pushd bin/Release/$RUNTIME/publish
+
+ ARTIFACT_NAME=unity-debug-adapter-${{ github.ref_name }}-$RUNTIME.zip
+ curl -L -X POST \
+ -H "Accept: application/vnd.github+json" \
+ -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
+ -H "X-GitHub-Api-Version: 2026-03-10" \
+ -H "Content-Type: application/octet-stream" \
+ "https://uploads.github.com/repos/walcht/unity-dap/releases/$RELEASE_ID/assets?name=$ARTIFACT_NAME" \
+ --data-binary "@$ARTIFACT_NAME" -o response.json
+
+ verify_status_code "upload_release_asset POST failed with status code"
+ popd
+ done
+
+ curl -L \
+ -X PATCH \
+ -H "Accept: application/vnd.github+json" \
+ -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
+ -H "X-GitHub-Api-Version: 2026-03-10" \
+ https://api.github.com/repos/walcht/unity-dap/releases/$RELEASE_ID \
+ -d '{"tag_name":"${{ github.ref_name }}","name":"unity-debug-adapter-${{ github.ref_name }}","draft":false}' -o response.json
+
+ verify_status_code "update_release PATCH failed with status code"
+
+ rm response.json
+
+
+
diff --git a/.gitignore b/.gitignore
index 7705b7e..199d50f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
/out/
/extension/
/upload/
-bin/*
+bin/
obj/
/mono-debug-*/
*.vsix
@@ -13,4 +13,65 @@ npm-debug.log
.vs/
.DS_Store
log.txt
+!unity-debug-adapter.E2ETests/log.txt
log
+
+# ignore Unity project files (for tests sub-project)
+*.log
+*.blend1
+*.blend1.meta
+*.DotSettings.user
+*.unityproj
+*.sln
+*.suo
+*.tmp
+*.user
+*.userprefs
+*.pidb
+*.booproj
+*.svd
+*.pdb
+*.mdb
+*.opendb
+*.VC.db
+*.pidb.meta
+*.pdb.meta
+*.mdb.meta
+*.apk
+*.aab
+*.unitypackage
+*.unitypackage.meta
+*.app
+
+crashlytics-build.properties
+InitTestScene*.unity*
+sysinfo.txt
+mono_crash.*
+
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/.utmp/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Ll]ibrary/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Tt]emp/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Oo]bj/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Bb]uild/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Bb]uilds/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Ll]ogs/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Uu]ser[Ss]ettings/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/.consulo/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Mm]emoryCaptures/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Rr]ecordings/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/AssetStoreTools*
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/Plugins/Editor/JetBrains*
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/.vs/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/.gradle/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/ExportedObj/
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/*.csproj
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/ServerData
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/StreamingAssets/aa*
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/AddressableAssetsData/link.xml*
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/Addressables_Temp*
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/AddressableAssetsData/*/*.bin*
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta
+unity-debug-adapter.E2ETests/unity_test_project_2022_3/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
diff --git a/unity-debug-adapter.E2ETests/README.md b/unity-debug-adapter.E2ETests/README.md
new file mode 100644
index 0000000..f886be3
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/README.md
@@ -0,0 +1,29 @@
+# unity-debug-adapter End-to-End Tests
+
+Currently we are only running a single end-to-end test that involves:
+
+1. Instantiating a Unity Editor instance with the project `./unity_test_project`
+opened.
+
+1. Parsing requests from `./log.txt` and forwarding them to unity-dap then
+asserting the responses with the responses in the `./log.txt`.
+
+1. Initially, I wanted this test to be trully end-to-end by running a Neovim
+front-end DAP client (nvim-dap), running this program (unity-dap), and running
+a Unity Editor project instance. That prooved to be very difficult to achieve
+(especially running Neovim dap front-end) hence why I chose this approach
+instead.
+
+Requirements:
+
+- **Unity 2022.3.X LTS**
+- **dotnet >= 9.0** (haven't tested for other versions but should probably
+workd).
+
+It is not trivial to fully test the DAP on an actual Unity Editor/Player session
+because certain DAP responses depend on the factors that are outside the control
+of the debugger (Mono debugger), the dap, and the test runner(s) (e.g., request
+for threads may not always return the same response).
+
+I don't have the time to implement a fine-grained test system, so for the
+moment this suffices (alongside Unit tests).
diff --git a/unity-debug-adapter.E2ETests/UnityDebugSession_E2ETests.cs b/unity-debug-adapter.E2ETests/UnityDebugSession_E2ETests.cs
new file mode 100644
index 0000000..e289e7f
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/UnityDebugSession_E2ETests.cs
@@ -0,0 +1,437 @@
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text.RegularExpressions;
+using NUnit.Framework;
+using Newtonsoft.Json.Linq;
+using System.Collections.Generic;
+using System;
+using Newtonsoft.Json;
+using System.Text;
+
+namespace unity_debug_adapter.E2ETests
+{
+ ///
+ /// End-to-End testing of the Unity debug session. Initially, I thought about making this trully end-to-end but
+ /// launching Neovim, setting up breakpoints, steping in/out is simply too much work and too error-prone.
+ ///
+ /// What I do instead is to supply DAP m_Requests (that were captured in a real debugging session from Neovim <-> Unity)
+ /// and send them to this debug adapter and assert the m_Responses (here I am assuming they remain the same - in case
+ /// they don't the response has to be parsed and only fields we care about have to be asserted).
+ ///
+ /// requests.txt: contains a request per line (with \r\n\r\n sequence replaced by rnrn)
+ /// responses.txt: contains a response per line (with \r\n\r\n sequence replaced by rnrn)
+ ///
+ /// Currently implemented commands and tested commands are:
+ ///
+ /// COMMAND IS TESTED?
+ ///
+ /// initialize YES
+ /// attach YES
+ /// setBreakpoints YES
+ /// setExceptionBreakpoints YES
+ ///
+ ///
+ [TestFixture]
+ public class UnityDebugSession_E2ETests
+ {
+ private Process m_UnityProcess;
+ private Process m_DebugAdapterProcess;
+ private readonly Regex re = new Regex(@"Content-Length: (\d+)\r\n\r\n");
+
+ private readonly SortedDictionary m_Requests = new SortedDictionary();
+ private readonly Dictionary m_Responses = new Dictionary();
+
+ private readonly char[] m_ReceptionBuff = new char[4092];
+ private readonly StringBuilder m_Sb = new StringBuilder(4092);
+ private readonly Queue m_Messages = new Queue(16);
+ private readonly IEqualityComparer m_Comparer = new DapResponseComparer();
+
+ private int m_BodyLen = -1;
+
+ [OneTimeSetUp]
+ public void StartTest()
+ {
+ // find Unity installation path
+#if Windows
+ string unity_hub_editor_dir = @"C:\Program Files\Unity\Hub\Editor";
+#elif Linux
+ string unity_hub_editor_dir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Unity", "Hub", "Editor");
+#else
+ string unity_hub_editor_dir = "/Applications/Unity/Hub/Editor";
+#endif
+
+ // we test on 2022.3.X so we expect an editor of that version to be installed
+ var unity_dir = Directory.EnumerateDirectories(unity_hub_editor_dir)
+ .FirstOrDefault(unity_editor_version =>
+ {
+ TestContext.Progress.WriteLine("found Unity editor version: " + Path.GetFileName(unity_editor_version));
+ return Path.GetFileName(unity_editor_version).StartsWith("2022.3.");
+ });
+
+ TestContext.Progress.WriteLine($"picked Unity editor version: {unity_dir}");
+#if Windows
+ string unity_exe = Path.Combine(unity_dir, "Editor", "Unity.exe");
+#elif Linux
+ string unity_exe = Path.Combine(unity_dir, "Editor", "Unity");
+#else // MacOS
+ string unity_exe = Path.Combine(unity_dir, "Unity.app", "Contents", "MacOS", "Unity");
+#endif
+
+ if (string.IsNullOrWhiteSpace(unity_exe))
+ {
+ Assert.Fail($"could not find Unity Editor 2022.3.X installed (looked in {unity_hub_editor_dir})");
+ }
+
+ // if the provided Unity project is invalid, Unity simply doesn't launch and weirdly exits with a 0 exit code
+ // this is ugly (bin/Debug/) but trust me, copying Unity porjects around is a mess ...
+ string unity_test_project = Path.GetFullPath("../../unity_test_project_2022_3");
+
+ Assert.That(Directory.Exists(unity_test_project), Is.True);
+
+ TestContext.Progress.WriteLine($"Unity executable is set to {unity_exe}");
+ TestContext.Progress.WriteLine($"Unity 2022.3 test project is set to {unity_test_project}");
+
+ // start debuggee (i.e., Unity) on the unity_test_project (don't put the '-nographics' or '-batchmode' flags!)
+ m_UnityProcess = new Process();
+ m_UnityProcess.StartInfo.FileName = unity_exe;
+ m_UnityProcess.StartInfo.Arguments = $"-projectPath {unity_test_project} -executeMethod UnityEditor.EditorApplication.EnterPlaymode";
+ m_UnityProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
+ m_UnityProcess.StartInfo.CreateNoWindow = false;
+ m_UnityProcess.StartInfo.UseShellExecute = false;
+ m_UnityProcess.StartInfo.RedirectStandardOutput = false;
+ m_UnityProcess.StartInfo.RedirectStandardError = false;
+ m_UnityProcess.StartInfo.RedirectStandardInput = false;
+ m_UnityProcess.Start();
+
+ TestContext.Progress.WriteLine($"started Unity Editor process: {m_UnityProcess.StartInfo.FileName} {m_UnityProcess.StartInfo.Arguments}");
+ // 56000 + % 1000
+ int port = 56000 + m_UnityProcess.Id % 1000;
+ TestContext.Progress.WriteLine($"Unity Editor debugger is listening at 127.0.0.1:{port}");
+
+ // start debug adapter in another child process
+ m_DebugAdapterProcess = new Process();
+ m_DebugAdapterProcess.StartInfo.FileName = "unity-debug-adapter.exe";
+ m_DebugAdapterProcess.StartInfo.Arguments = "--log-level=none";
+ m_DebugAdapterProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
+ m_DebugAdapterProcess.StartInfo.CreateNoWindow = true;
+ m_DebugAdapterProcess.StartInfo.UseShellExecute = false;
+ m_DebugAdapterProcess.StartInfo.RedirectStandardOutput = true;
+ m_DebugAdapterProcess.StartInfo.RedirectStandardError = true;
+ m_DebugAdapterProcess.StartInfo.RedirectStandardInput = true;
+ m_DebugAdapterProcess.Start();
+
+ TestContext.Progress.WriteLine($"started debug adapter process: {m_DebugAdapterProcess.StartInfo.FileName} {m_DebugAdapterProcess.StartInfo.Arguments}");
+ var testScriptFullPath = Path.Combine(unity_test_project, "Assets", "Scripts", "TestScript.cs");
+
+ // parse requests and responses
+ foreach (string l in File.ReadAllLines("log.txt"))
+ {
+ // because the logger logs \r\n\r\n sequence as rnrn
+ var _l = l.Replace("rnrn", "\r\n\r\n");
+ var m = re.Match(_l);
+ if (!m.Success || m.Groups.Count < 2)
+ continue;
+
+ // l is always encoded in UTF8 so we can safely just use Length
+ string body = _l.Substring(m.Index + "Content-Length: ".Length + m.Groups[1].Length + 4);
+ var actual = JObject.Parse(body);
+ if (actual == null)
+ {
+ Assert.Fail($"parsed json log's string: {body} is null");
+ return;
+ }
+
+ var _type = (string?)actual["type"];
+ if (string.IsNullOrWhiteSpace(_type))
+ {
+ Assert.Fail($"type attribute of parsed JSON from log string: {body} is null or whitespace");
+ return;
+ }
+
+ if (_type == "request")
+ {
+ var request_seq = (int?)actual["seq"];
+ if (request_seq == null)
+ {
+ Assert.Fail("seq attribute is null");
+ return;
+ }
+ // if this is an attach request, then make sure to update the port
+ var cmd = (string?)actual["command"];
+ if (cmd == "attach")
+ {
+ var args = actual["arguments"];
+ if (args == null)
+ {
+ Assert.Fail("arguments attribute is null");
+ return;
+ }
+ args["port"] = port;
+ args["name"] = $"Connect to Unity Editor instance at 127.0.0.1:{port}";
+ }
+ // if this is a 'setBreakpoints' request, then update the path
+ else if (cmd == "setBreakpoints")
+ {
+ var args = actual["arguments"];
+ if (args == null)
+ {
+ Assert.Fail("arguments attribute is null");
+ return;
+ }
+ var src = args["source"];
+ if (src == null)
+ {
+ Assert.Fail("source attribute is null");
+ return;
+ }
+ src["path"] = testScriptFullPath;
+ }
+ m_Requests.Add(request_seq.Value, actual);
+ }
+ else if (_type == "response")
+ {
+ var request_seq = (int?)actual["request_seq"];
+ if (request_seq == null)
+ {
+ Assert.Fail("request_seq attribute is null");
+ return;
+ }
+
+ // if this is a stackTrace response, then make sure to update the path
+ var cmd = (string?)actual["command"];
+ if (cmd == "stackTrace")
+ {
+ var bdy = actual["body"];
+ if (bdy == null)
+ {
+ Assert.Fail("body attribute is null");
+ return;
+ }
+
+ var sfs = bdy["stackFrames"];
+ if (sfs == null)
+ {
+ Assert.Fail("stackFrames attribute is null");
+ return;
+ }
+
+ foreach (var sf in sfs)
+ {
+ var src = sf["source"];
+ if (src == null)
+ {
+ Assert.Fail("source attribute is null");
+ return;
+ }
+
+ src["path"] = testScriptFullPath;
+ }
+ }
+ m_Responses.Add(request_seq.Value, actual);
+ }
+ }
+
+ TestContext.Progress.WriteLine($"parsed {m_Requests.Count} requests from log.txt");
+ TestContext.Progress.WriteLine($"parsed {m_Responses.Count} responses from log.txt");
+ Assert.That(m_Requests, Has.Count.EqualTo(m_Responses.Count));
+ }
+
+
+ /// Attempts to parse one or more messages from string buffer. If message is fragmented, a subsequent call
+ /// to this after having filled up the string buffer will re-construct that message.
+ private void GetNextMessage()
+ {
+ while (true)
+ {
+ if (m_BodyLen >= 0)
+ {
+ if (m_ReceptionBuff.Length >= m_BodyLen)
+ {
+ m_Messages.Enqueue(m_Sb.ToString(0, m_BodyLen));
+ m_Sb.Remove(0, m_BodyLen);
+ m_BodyLen = -1;
+ continue; // handle next message (if any)
+ }
+ // currently held data is insufficient (keep reading)
+ else
+ {
+ return;
+ }
+ }
+ else
+ {
+ if (m_Sb.Length == 0)
+ break;
+
+ var s = m_Sb.ToString();
+
+ Match m = re.Match(s);
+ if (m.Success && m.Groups.Count == 2)
+ {
+ m_BodyLen = Convert.ToInt32(m.Groups[1].Value);
+ m_Sb.Remove(0, m.Index + "Content-Length: ".Length + m.Groups[1].Length + 4);
+ continue;
+ }
+ else
+ {
+ Assert.Fail($@"failed to match 'Content-Length: (\d+)\r\n\r\n' from unity-dap response: {s}");
+ return;
+ }
+ }
+ }
+
+ }
+
+
+ [Test]
+ public void Test_LogRequestsAndResponses()
+ {
+ foreach (var item in m_Requests)
+ {
+ var request = item.Value;
+ var requestStr = request.ToString(Formatting.None);
+ m_DebugAdapterProcess.StandardInput.Write($"Content-Length: {requestStr.Length}\r\n\r\n{requestStr}");
+ TestContext.Progress.WriteLine($"sent request to unity-dap: command={(string?)request["command"]}");
+
+ // keep reading from unity-dap's stdout until we get the reponse to the request we just sent
+ bool gotResponse = false;
+ while (!gotResponse)
+ {
+ // message can be fragmented (even if buffer is large enough)!
+ var nbrCharsReceived = m_DebugAdapterProcess.StandardOutput.Read(m_ReceptionBuff, 0, m_ReceptionBuff.Length);
+ m_Sb.Append(m_ReceptionBuff, 0, nbrCharsReceived);
+ GetNextMessage();
+
+ // keep reading received messages until we encounter the one we care about (with request_seq set to the above
+ // reques) or until messages are exhausted.
+ while (m_Messages.Count > 0)
+ {
+ string bodyStr = m_Messages.Dequeue();
+ JObject? actual;
+ try
+ {
+ actual = JObject.Parse(bodyStr);
+ }
+ catch (JsonReaderException)
+ {
+ Assert.Fail($"failed to parse JSON from: {bodyStr}");
+ return;
+ }
+ if (actual == null)
+ {
+ Assert.Fail($"parsed JSON from received response string: {bodyStr} from unity-dap is null");
+ return;
+ }
+
+ // we don't care about other types (e.g., events)
+ var _type = (string?)actual["type"];
+ if (_type != "response")
+ continue;
+
+ var _requestSeq = (int?)actual["request_seq"];
+ if (_requestSeq == null)
+ {
+ Assert.Fail($"request_seq attribute is null (from parsed json: {actual})");
+ return;
+ }
+
+ if (_requestSeq != item.Key)
+ {
+ Assert.Fail($"reponse to unexpected request_seq (expected: {item.Key}; got response to: {_requestSeq})");
+ return;
+ }
+
+ TestContext.Progress.WriteLine($"got response to request_seq: {_requestSeq} {actual.ToString(Formatting.None)}");
+
+ // fetch the response from the stored m_Responses from log.txt
+ var expected = m_Responses[_requestSeq.Value];
+ if (expected == null)
+ {
+ Assert.Fail($"could not find expected response in log responses (request_seq = {_requestSeq.Value})");
+ return;
+ }
+
+ Assert.That(actual, Is.EqualTo(expected).Using(m_Comparer));
+ m_Messages.Clear();
+
+ gotResponse = true;
+ break;
+
+ } // END MESSAGES WHILE
+
+ } // END STDOUT.READ WHILE
+
+ } // END REQUESTS WHILE
+ }
+
+ [OneTimeTearDown]
+ public void EndTest()
+ {
+ // close Unity Editor
+ TestContext.Progress.WriteLine("killing Unity process ...");
+ try
+ {
+ m_UnityProcess.Kill();
+ m_UnityProcess.WaitForExit();
+ m_UnityProcess.Dispose();
+ }
+ catch (InvalidOperationException) { /* probably means that process has already exited */ }
+
+ // close unity-dap
+ TestContext.Progress.WriteLine("killing debug adapter process ...");
+ try
+ {
+ m_DebugAdapterProcess.Kill();
+ m_DebugAdapterProcess.WaitForExit();
+ m_DebugAdapterProcess.Dispose();
+ }
+ catch (InvalidOperationException) { /* probably means that process has already exited */ }
+
+ TestContext.Progress.WriteLine("Unity process killed successfully");
+ }
+ }
+
+
+ public class DapResponseComparer : IEqualityComparer
+ {
+ public bool Equals(JObject? o1, JObject? o2)
+ {
+
+ if (o1 == null && o2 == null)
+ return true;
+
+ if (o1 == null || o2 == null)
+ return false;
+
+ // protocol message attributes (we ignore Seq as it may change - E.g., when we have different number of threads
+ // and therefore events sent for each thread).
+ if ((string?)o1["type"] != (string?)o2["type"])
+ return false;
+
+ if ((int?)o1["request_seq"] != (int?)o2["request_seq"])
+ return false;
+
+ if ((bool?)o1["success"] != (bool?)o2["success"])
+ return false;
+
+ if ((string?)o1["command"] != (string?)o2["command"])
+ return false;
+
+ if ((string?)o1["message"] != (string?)o2["message"])
+ return false;
+
+ // it's really hard to test the threads command because, again, it varies depending on the runtime conditions
+ // (you get different response each time you run this test which is not ideal for testing)
+ if ((string?)o1["command"] == "threads")
+ return true;
+
+ // for all other commands, simlpy compare the bodies
+ return JToken.DeepEquals(o1["body"], o2["body"]);
+ }
+
+ public int GetHashCode(JObject o) => o.GetHashCode();
+ }
+}
+
+
diff --git a/unity-debug-adapter.E2ETests/log.txt b/unity-debug-adapter.E2ETests/log.txt
new file mode 100644
index 0000000..a1902ac
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/log.txt
@@ -0,0 +1,155 @@
+29/03/2026 12:33:24 [I] waiting for debug protocol on stdin/stdout
+29/03/2026 12:33:24 [I] constructing UnityDebugSession
+29/03/2026 12:33:24 [I] done constructing UnityDebugSession
+29/03/2026 12:33:24 [T] received data: Content-Length: 343rnrn{"seq":1,"command":"initialize","type":"request","arguments":{"adapterID":"nvim-dap","supportsStartDebuggingRequest":true,"supportsProgressReporting":true,"supportsVariableType":true,"supportsRunInTerminalRequest":true,"linesStartAt1":true,"columnsStartAt1":true,"pathFormat":"path","clientName":"neovim","clientID":"neovim","locale":"en_US"}}
+29/03/2026 12:33:24 [T] sent event: Content-Length: 108rnrn{"seq":1,"type":"event","event":"output","body":{"category":"stdout","output":"UnityDebug: Initializing\n"}}
+29/03/2026 12:33:24 [T] sent response: Content-Length: 411rnrn{"request_seq":1,"success":true,"message":null,"command":"initialize","body":{"supportsConfigurationDoneRequest":false,"supportsFunctionBreakpoints":false,"supportsConditionalBreakpoints":true,"supportsHitConditionalBreakpoints":true,"supportsEvaluateForHovers":true,"exceptionBreakpointFilters":[],"supportsSetVariable":true,"supportsExceptionOptions":true,"supportsLogPoints":false},"seq":2,"type":"response"}
+29/03/2026 12:33:24 [T] sent event: Content-Length: 58rnrn{"seq":3,"type":"event","event":"initialized","body":null}
+29/03/2026 12:33:24 [T] received data: Content-Length: 191rnrn{"seq":2,"command":"attach","type":"request","arguments":{"address":"127.0.0.1","request":"attach","name":"Connect to Unity Editor instance at 127.0.0.1:56872","type":"unity","port":"56872"}}
+29/03/2026 12:33:24 [I] connecting to: 127.0.0.1:56872
+29/03/2026 12:33:24 [T] sent event: Content-Length: 162rnrn{"seq":4,"type":"event","event":"output","body":{"category":"stdout","output":"UnityDebugAdapter: attached to Unity Mono runtime endpoint via 127.0.0.1:56872\n"}}
+29/03/2026 12:33:24 [T] sent response: Content-Length: 104rnrn{"request_seq":2,"success":true,"message":null,"command":"attach","body":null,"seq":5,"type":"response"}
+29/03/2026 12:33:24 [T] received data: Content-Length: 360rnrn{"seq":3,"command":"setBreakpoints","type":"request","arguments":{"source":{"path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","name":"TestScript.cs"},"breakpoints":[{"line":22},{"line":26},{"line":29},{"line":31},{"line":64}],"lines":[22,26,29,31,64],"sourceModified":false}}
+29/03/2026 12:33:24 [T] sent response: Content-Length: 630rnrn{"request_seq":3,"success":true,"message":null,"command":"setBreakpoints","body":{"breakpoints":[{"id":0,"verified":true,"message":null,"source":null,"line":22,"column":0,"endLine":0,"endColumn":0},{"id":0,"verified":true,"message":null,"source":null,"line":26,"column":0,"endLine":0,"endColumn":0},{"id":0,"verified":true,"message":null,"source":null,"line":29,"column":0,"endLine":0,"endColumn":0},{"id":0,"verified":true,"message":null,"source":null,"line":31,"column":0,"endLine":0,"endColumn":0},{"id":0,"verified":true,"message":null,"source":null,"line":64,"column":0,"endLine":0,"endColumn":0}]},"seq":6,"type":"response"}
+29/03/2026 12:33:24 [T] received data: Content-Length: 89rnrn{"seq":4,"command":"setExceptionBreakpoints","type":"request","arguments":{"filters":[]}}
+29/03/2026 12:33:24 [T] sent response: Content-Length: 121rnrn{"request_seq":4,"success":true,"message":null,"command":"setExceptionBreakpoints","body":null,"seq":7,"type":"response"}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 82rnrn{"seq":8,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 82rnrn{"seq":9,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":10,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":11,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":12,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":13,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":14,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":15,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":16,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":17,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":18,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":19,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":20,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":21,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":22,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:25 [T] sent event: Content-Length: 83rnrn{"seq":23,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}
+29/03/2026 12:33:27 [T] sent event: Content-Length: 82rnrn{"seq":24,"type":"event","event":"thread","body":{"reason":"exited","threadId":2}}
+29/03/2026 12:33:27 [T] sent event: Content-Length: 83rnrn{"seq":25,"type":"event","event":"thread","body":{"reason":"started","threadId":3}}
+29/03/2026 12:33:27 [T] sent event: Content-Length: 82rnrn{"seq":26,"type":"event","event":"thread","body":{"reason":"exited","threadId":4}}
+29/03/2026 12:33:27 [T] sent event: Content-Length: 82rnrn{"seq":27,"type":"event","event":"thread","body":{"reason":"exited","threadId":3}}
+29/03/2026 12:33:28 [T] sent event: Content-Length: 83rnrn{"seq":28,"type":"event","event":"thread","body":{"reason":"started","threadId":5}}
+29/03/2026 12:33:28 [T] sent event: Content-Length: 83rnrn{"seq":29,"type":"event","event":"thread","body":{"reason":"started","threadId":6}}
+29/03/2026 12:33:28 [T] sent event: Content-Length: 83rnrn{"seq":30,"type":"event","event":"thread","body":{"reason":"started","threadId":7}}
+29/03/2026 12:33:28 [T] sent event: Content-Length: 83rnrn{"seq":31,"type":"event","event":"thread","body":{"reason":"started","threadId":8}}
+29/03/2026 12:33:28 [T] sent event: Content-Length: 83rnrn{"seq":32,"type":"event","event":"thread","body":{"reason":"started","threadId":9}}
+29/03/2026 12:33:28 [T] sent event: Content-Length: 84rnrn{"seq":33,"type":"event","event":"thread","body":{"reason":"started","threadId":10}}
+29/03/2026 12:33:28 [T] sent event: Content-Length: 84rnrn{"seq":34,"type":"event","event":"thread","body":{"reason":"started","threadId":11}}
+29/03/2026 12:33:28 [T] sent event: Content-Length: 84rnrn{"seq":35,"type":"event","event":"thread","body":{"reason":"started","threadId":12}}
+29/03/2026 12:33:28 [T] sent event: Content-Length: 124rnrn{"seq":36,"type":"event","event":"stopped","body":{"threadId":1,"reason":"breakpoint","text":null,"allThreadsStopped":true}}
+29/03/2026 12:33:28 [T] received data: Content-Length: 46rnrn{"seq":5,"command":"threads","type":"request"}
+29/03/2026 12:33:28 [T] sent response: Content-Length: 595rnrn{"request_seq":5,"success":true,"message":null,"command":"threads","body":{"threads":[{"id":1,"name":"Thread #1"},{"id":5,"name":""},{"id":6,"name":""},{"id":7,"name":""},{"id":8,"name":""},{"id":9,"name":""},{"id":10,"name":""},{"id":11,"name":"Thread #11"},{"id":12,"name":"Thread #12"},{"id":13,"name":"Thread Pool Worker"},{"id":14,"name":""},{"id":15,"name":"Thread Pool Worker"},{"id":16,"name":"Thread #16"},{"id":17,"name":"Thread #17"},{"id":18,"name":"Thread #18"}]},"seq":37,"type":"response"}
+29/03/2026 12:33:28 [T] received data: Content-Length: 91rnrn{"seq":6,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:33:28 [T] sent response: Content-Length: 443rnrn{"request_seq":6,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":22,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":1},"seq":38,"type":"response"}
+29/03/2026 12:33:28 [T] received data: Content-Length: 74rnrn{"seq":7,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:33:29 [T] sent response: Content-Length: 174rnrn{"request_seq":7,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":39,"type":"response"}
+29/03/2026 12:33:29 [T] received data: Content-Length: 88rnrn{"seq":8,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:33:29 [T] sent response: Content-Length: 209rnrn{"request_seq":8,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":40,"type":"response"}
+29/03/2026 12:33:33 [T] received data: Content-Length: 100rnrn{"seq":9,"command":"continue","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:33:33 [T] sent response: Content-Length: 131rnrn{"request_seq":9,"success":true,"message":null,"command":"continue","body":{"allThreadsContinued":true},"seq":41,"type":"response"}
+29/03/2026 12:33:33 [T] sent event: Content-Length: 124rnrn{"seq":42,"type":"event","event":"stopped","body":{"threadId":1,"reason":"breakpoint","text":null,"allThreadsStopped":true}}
+29/03/2026 12:33:33 [T] received data: Content-Length: 92rnrn{"seq":10,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:33:33 [T] sent response: Content-Length: 444rnrn{"request_seq":10,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":26,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":1},"seq":43,"type":"response"}
+29/03/2026 12:33:33 [T] received data: Content-Length: 75rnrn{"seq":11,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:33:33 [T] sent response: Content-Length: 175rnrn{"request_seq":11,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":44,"type":"response"}
+29/03/2026 12:33:33 [T] received data: Content-Length: 89rnrn{"seq":12,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:33:33 [T] sent response: Content-Length: 210rnrn{"request_seq":12,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":45,"type":"response"}
+29/03/2026 12:33:33 [T] sent event: Content-Length: 82rnrn{"seq":46,"type":"event","event":"thread","body":{"reason":"exited","threadId":5}}
+29/03/2026 12:33:34 [T] received data: Content-Length: 101rnrn{"seq":13,"command":"continue","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:33:34 [T] sent response: Content-Length: 132rnrn{"request_seq":13,"success":true,"message":null,"command":"continue","body":{"allThreadsContinued":true},"seq":47,"type":"response"}
+29/03/2026 12:33:34 [T] sent event: Content-Length: 124rnrn{"seq":48,"type":"event","event":"stopped","body":{"threadId":1,"reason":"breakpoint","text":null,"allThreadsStopped":true}}
+29/03/2026 12:33:34 [T] received data: Content-Length: 92rnrn{"seq":14,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:33:34 [T] sent response: Content-Length: 444rnrn{"request_seq":14,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":29,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":1},"seq":49,"type":"response"}
+29/03/2026 12:33:34 [T] received data: Content-Length: 75rnrn{"seq":15,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:33:34 [T] sent response: Content-Length: 175rnrn{"request_seq":15,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":50,"type":"response"}
+29/03/2026 12:33:34 [T] received data: Content-Length: 89rnrn{"seq":16,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:33:34 [T] sent response: Content-Length: 210rnrn{"request_seq":16,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":51,"type":"response"}
+29/03/2026 12:33:39 [T] received data: Content-Length: 97rnrn{"seq":17,"command":"next","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:33:39 [T] sent response: Content-Length: 104rnrn{"request_seq":17,"success":true,"message":null,"command":"next","body":null,"seq":52,"type":"response"}
+29/03/2026 12:33:39 [T] sent event: Content-Length: 118rnrn{"seq":53,"type":"event","event":"stopped","body":{"threadId":1,"reason":"step","text":null,"allThreadsStopped":true}}
+29/03/2026 12:33:39 [T] received data: Content-Length: 92rnrn{"seq":18,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:33:39 [T] sent response: Content-Length: 444rnrn{"request_seq":18,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":30,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":1},"seq":54,"type":"response"}
+29/03/2026 12:33:39 [T] received data: Content-Length: 75rnrn{"seq":19,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:33:39 [T] sent response: Content-Length: 175rnrn{"request_seq":19,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":55,"type":"response"}
+29/03/2026 12:33:39 [T] received data: Content-Length: 89rnrn{"seq":20,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:33:39 [T] sent response: Content-Length: 210rnrn{"request_seq":20,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":56,"type":"response"}
+29/03/2026 12:33:43 [T] received data: Content-Length: 97rnrn{"seq":21,"command":"next","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:33:43 [T] sent response: Content-Length: 104rnrn{"request_seq":21,"success":true,"message":null,"command":"next","body":null,"seq":57,"type":"response"}
+29/03/2026 12:33:43 [T] sent event: Content-Length: 124rnrn{"seq":58,"type":"event","event":"stopped","body":{"threadId":1,"reason":"breakpoint","text":null,"allThreadsStopped":true}}
+29/03/2026 12:33:43 [T] received data: Content-Length: 92rnrn{"seq":22,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:33:43 [T] sent response: Content-Length: 1998rnrn{"request_seq":22,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":64,"column":0,"name":"TestScript.DeepCall4","presentationHint":"normal"},{"id":1001,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":59,"column":0,"name":"TestScript.DeepCall3","presentationHint":"normal"},{"id":1002,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":53,"column":0,"name":"TestScript.DeepCall2","presentationHint":"normal"},{"id":1003,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":47,"column":0,"name":"TestScript.DeepCall1","presentationHint":"normal"},{"id":1004,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":40,"column":0,"name":"TestScript.ToBeSteppedIntoAndOutOf","presentationHint":"normal"},{"id":1005,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":30,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":6},"seq":59,"type":"response"}
+29/03/2026 12:33:43 [T] received data: Content-Length: 75rnrn{"seq":23,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:33:43 [T] sent response: Content-Length: 175rnrn{"request_seq":23,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":60,"type":"response"}
+29/03/2026 12:33:43 [T] received data: Content-Length: 89rnrn{"seq":24,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:33:43 [T] sent response: Content-Length: 210rnrn{"request_seq":24,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":61,"type":"response"}
+29/03/2026 12:33:45 [T] sent event: Content-Length: 83rnrn{"seq":62,"type":"event","event":"thread","body":{"reason":"exited","threadId":13}}
+29/03/2026 12:33:49 [T] received data: Content-Length: 97rnrn{"seq":25,"command":"next","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:33:49 [T] sent response: Content-Length: 104rnrn{"request_seq":25,"success":true,"message":null,"command":"next","body":null,"seq":63,"type":"response"}
+29/03/2026 12:33:49 [T] sent event: Content-Length: 118rnrn{"seq":64,"type":"event","event":"stopped","body":{"threadId":1,"reason":"step","text":null,"allThreadsStopped":true}}
+29/03/2026 12:33:49 [T] received data: Content-Length: 92rnrn{"seq":26,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:33:49 [T] sent response: Content-Length: 1998rnrn{"request_seq":26,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":65,"column":0,"name":"TestScript.DeepCall4","presentationHint":"normal"},{"id":1001,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":59,"column":0,"name":"TestScript.DeepCall3","presentationHint":"normal"},{"id":1002,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":53,"column":0,"name":"TestScript.DeepCall2","presentationHint":"normal"},{"id":1003,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":47,"column":0,"name":"TestScript.DeepCall1","presentationHint":"normal"},{"id":1004,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":40,"column":0,"name":"TestScript.ToBeSteppedIntoAndOutOf","presentationHint":"normal"},{"id":1005,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":30,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":6},"seq":65,"type":"response"}
+29/03/2026 12:33:49 [T] received data: Content-Length: 75rnrn{"seq":27,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:33:49 [T] sent response: Content-Length: 175rnrn{"request_seq":27,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":66,"type":"response"}
+29/03/2026 12:33:49 [T] received data: Content-Length: 89rnrn{"seq":28,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:33:49 [T] sent response: Content-Length: 210rnrn{"request_seq":28,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":67,"type":"response"}
+29/03/2026 12:33:51 [T] sent event: Content-Length: 82rnrn{"seq":68,"type":"event","event":"thread","body":{"reason":"exited","threadId":6}}
+29/03/2026 12:33:51 [T] sent event: Content-Length: 82rnrn{"seq":69,"type":"event","event":"thread","body":{"reason":"exited","threadId":7}}
+29/03/2026 12:33:51 [T] sent event: Content-Length: 82rnrn{"seq":70,"type":"event","event":"thread","body":{"reason":"exited","threadId":9}}
+29/03/2026 12:33:51 [T] sent event: Content-Length: 83rnrn{"seq":71,"type":"event","event":"thread","body":{"reason":"exited","threadId":10}}
+29/03/2026 12:33:54 [T] received data: Content-Length: 99rnrn{"seq":29,"command":"stepIn","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:33:54 [T] sent response: Content-Length: 106rnrn{"request_seq":29,"success":true,"message":null,"command":"stepIn","body":null,"seq":72,"type":"response"}
+29/03/2026 12:33:54 [T] sent event: Content-Length: 118rnrn{"seq":73,"type":"event","event":"stopped","body":{"threadId":1,"reason":"step","text":null,"allThreadsStopped":true}}
+29/03/2026 12:33:54 [T] received data: Content-Length: 92rnrn{"seq":30,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:33:54 [T] sent response: Content-Length: 2306rnrn{"request_seq":30,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":68,"column":0,"name":"TestScript.DeepCall5","presentationHint":"normal"},{"id":1001,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":65,"column":0,"name":"TestScript.DeepCall4","presentationHint":"normal"},{"id":1002,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":59,"column":0,"name":"TestScript.DeepCall3","presentationHint":"normal"},{"id":1003,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":53,"column":0,"name":"TestScript.DeepCall2","presentationHint":"normal"},{"id":1004,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":47,"column":0,"name":"TestScript.DeepCall1","presentationHint":"normal"},{"id":1005,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":40,"column":0,"name":"TestScript.ToBeSteppedIntoAndOutOf","presentationHint":"normal"},{"id":1006,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":30,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":7},"seq":74,"type":"response"}
+29/03/2026 12:33:54 [T] received data: Content-Length: 75rnrn{"seq":31,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:33:54 [T] sent response: Content-Length: 175rnrn{"request_seq":31,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":75,"type":"response"}
+29/03/2026 12:33:54 [T] received data: Content-Length: 89rnrn{"seq":32,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:33:54 [T] sent response: Content-Length: 210rnrn{"request_seq":32,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":76,"type":"response"}
+29/03/2026 12:33:57 [T] received data: Content-Length: 99rnrn{"seq":33,"command":"stepIn","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:33:57 [T] sent response: Content-Length: 106rnrn{"request_seq":33,"success":true,"message":null,"command":"stepIn","body":null,"seq":77,"type":"response"}
+29/03/2026 12:33:57 [T] sent event: Content-Length: 118rnrn{"seq":78,"type":"event","event":"stopped","body":{"threadId":1,"reason":"step","text":null,"allThreadsStopped":true}}
+29/03/2026 12:33:57 [T] received data: Content-Length: 92rnrn{"seq":34,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:33:57 [T] sent response: Content-Length: 2306rnrn{"request_seq":34,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":68,"column":0,"name":"TestScript.DeepCall5","presentationHint":"normal"},{"id":1001,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":65,"column":0,"name":"TestScript.DeepCall4","presentationHint":"normal"},{"id":1002,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":59,"column":0,"name":"TestScript.DeepCall3","presentationHint":"normal"},{"id":1003,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":53,"column":0,"name":"TestScript.DeepCall2","presentationHint":"normal"},{"id":1004,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":47,"column":0,"name":"TestScript.DeepCall1","presentationHint":"normal"},{"id":1005,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":40,"column":0,"name":"TestScript.ToBeSteppedIntoAndOutOf","presentationHint":"normal"},{"id":1006,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":30,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":7},"seq":79,"type":"response"}
+29/03/2026 12:33:57 [T] received data: Content-Length: 75rnrn{"seq":35,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:33:57 [T] sent response: Content-Length: 175rnrn{"request_seq":35,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":80,"type":"response"}
+29/03/2026 12:33:57 [T] received data: Content-Length: 89rnrn{"seq":36,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:33:57 [T] sent response: Content-Length: 210rnrn{"request_seq":36,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":81,"type":"response"}
+29/03/2026 12:34:01 [T] received data: Content-Length: 97rnrn{"seq":37,"command":"next","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:34:01 [T] sent response: Content-Length: 104rnrn{"request_seq":37,"success":true,"message":null,"command":"next","body":null,"seq":82,"type":"response"}
+29/03/2026 12:34:01 [T] sent event: Content-Length: 118rnrn{"seq":83,"type":"event","event":"stopped","body":{"threadId":1,"reason":"step","text":null,"allThreadsStopped":true}}
+29/03/2026 12:34:01 [T] received data: Content-Length: 92rnrn{"seq":38,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:34:01 [T] sent response: Content-Length: 1998rnrn{"request_seq":38,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":66,"column":0,"name":"TestScript.DeepCall4","presentationHint":"normal"},{"id":1001,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":59,"column":0,"name":"TestScript.DeepCall3","presentationHint":"normal"},{"id":1002,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":53,"column":0,"name":"TestScript.DeepCall2","presentationHint":"normal"},{"id":1003,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":47,"column":0,"name":"TestScript.DeepCall1","presentationHint":"normal"},{"id":1004,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":40,"column":0,"name":"TestScript.ToBeSteppedIntoAndOutOf","presentationHint":"normal"},{"id":1005,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":30,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":6},"seq":84,"type":"response"}
+29/03/2026 12:34:01 [T] received data: Content-Length: 75rnrn{"seq":39,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:34:01 [T] sent response: Content-Length: 175rnrn{"request_seq":39,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":85,"type":"response"}
+29/03/2026 12:34:01 [T] received data: Content-Length: 89rnrn{"seq":40,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:34:01 [T] sent response: Content-Length: 210rnrn{"request_seq":40,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":86,"type":"response"}
+29/03/2026 12:34:04 [T] received data: Content-Length: 101rnrn{"seq":41,"command":"continue","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:34:04 [T] sent response: Content-Length: 132rnrn{"request_seq":41,"success":true,"message":null,"command":"continue","body":{"allThreadsContinued":true},"seq":87,"type":"response"}
+29/03/2026 12:34:04 [T] sent event: Content-Length: 124rnrn{"seq":88,"type":"event","event":"stopped","body":{"threadId":1,"reason":"breakpoint","text":null,"allThreadsStopped":true}}
+29/03/2026 12:34:04 [T] received data: Content-Length: 92rnrn{"seq":42,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:34:04 [T] sent response: Content-Length: 444rnrn{"request_seq":42,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":31,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":1},"seq":89,"type":"response"}
+29/03/2026 12:34:04 [T] received data: Content-Length: 75rnrn{"seq":43,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:34:04 [T] sent response: Content-Length: 175rnrn{"request_seq":43,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":90,"type":"response"}
+29/03/2026 12:34:04 [T] received data: Content-Length: 89rnrn{"seq":44,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:34:04 [T] sent response: Content-Length: 210rnrn{"request_seq":44,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":91,"type":"response"}
+29/03/2026 12:34:06 [T] sent event: Content-Length: 83rnrn{"seq":92,"type":"event","event":"thread","body":{"reason":"exited","threadId":14}}
+29/03/2026 12:34:07 [T] received data: Content-Length: 101rnrn{"seq":45,"command":"continue","type":"request","arguments":{"threadId":1,"granularity":"statement"}}
+29/03/2026 12:34:07 [T] sent response: Content-Length: 132rnrn{"request_seq":45,"success":true,"message":null,"command":"continue","body":{"allThreadsContinued":true},"seq":93,"type":"response"}
+29/03/2026 12:34:07 [T] sent event: Content-Length: 84rnrn{"seq":94,"type":"event","event":"thread","body":{"reason":"started","threadId":19}}
+29/03/2026 12:34:07 [T] sent event: Content-Length: 124rnrn{"seq":95,"type":"event","event":"stopped","body":{"threadId":1,"reason":"breakpoint","text":null,"allThreadsStopped":true}}
+29/03/2026 12:34:07 [T] received data: Content-Length: 47rnrn{"seq":46,"command":"threads","type":"request"}
+29/03/2026 12:34:07 [T] sent response: Content-Length: 397rnrn{"request_seq":46,"success":true,"message":null,"command":"threads","body":{"threads":[{"id":1,"name":"Thread #1"},{"id":8,"name":""},{"id":19,"name":""},{"id":11,"name":"Thread #11"},{"id":12,"name":"Thread #12"},{"id":15,"name":"Thread Pool Worker"},{"id":16,"name":"Thread #16"},{"id":17,"name":"Thread #17"},{"id":18,"name":"Thread #18"}]},"seq":96,"type":"response"}
+29/03/2026 12:34:07 [T] received data: Content-Length: 92rnrn{"seq":47,"command":"stackTrace","type":"request","arguments":{"threadId":1,"startFrame":0}}
+29/03/2026 12:34:07 [T] sent response: Content-Length: 444rnrn{"request_seq":47,"success":true,"message":null,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"source":{"name":"TestScript.cs","path":"C:\\Users\\walid\\Desktop\\unity-dap\\unity-debug-adapter.E2ETests\\unity_test_project_2022_3\\Assets\\Scripts\\TestScript.cs","sourceReference":0,"presentationHint":"normal"},"line":29,"column":0,"name":"TestScript.Update","presentationHint":"normal"}],"totalFrames":1},"seq":97,"type":"response"}
+29/03/2026 12:34:07 [T] received data: Content-Length: 75rnrn{"seq":48,"command":"scopes","type":"request","arguments":{"frameId":1000}}
+29/03/2026 12:34:07 [T] sent response: Content-Length: 175rnrn{"request_seq":48,"success":true,"message":null,"command":"scopes","body":{"scopes":[{"name":"Local","variablesReference":1000,"expensive":false}]},"seq":98,"type":"response"}
+29/03/2026 12:34:07 [T] received data: Content-Length: 89rnrn{"seq":49,"command":"variables","type":"request","arguments":{"variablesReference":1000}}
+29/03/2026 12:34:07 [T] sent response: Content-Length: 210rnrn{"request_seq":49,"success":true,"message":null,"command":"variables","body":{"variables":[{"name":"this","value":"Cube (TestScript)","type":"TestScript","variablesReference":1001}]},"seq":99,"type":"response"}
+29/03/2026 12:34:12 [T] received data: Content-Length: 105rnrn{"seq":50,"command":"disconnect","type":"request","arguments":{"restart":false,"terminateDebuggee":true}}
+29/03/2026 12:34:12 [T] sent event: Content-Length: 117rnrn{"seq":100,"type":"event","event":"output","body":{"category":"stdout","output":"UnityDebugAdapter: Disconnected\n"}}
+29/03/2026 12:34:12 [T] sent response: Content-Length: 111rnrn{"request_seq":50,"success":true,"message":null,"command":"disconnect","body":null,"seq":101,"type":"response"}
diff --git a/unity-debug-adapter.E2ETests/unity-debug-adapter.E2ETests.csproj b/unity-debug-adapter.E2ETests/unity-debug-adapter.E2ETests.csproj
new file mode 100644
index 0000000..990cf36
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity-debug-adapter.E2ETests.csproj
@@ -0,0 +1,48 @@
+
+
+
+ net472
+ unity_debug_adapter.E2ETests
+ false
+ enable
+ false
+ 8.0
+ en
+ true
+ true
+ true
+
+
+
+ $(DefaultItemExcludes);unity_test_project_2022_3\**
+
+
+
+ Windows
+
+
+
+ OSX
+
+
+
+ Linux
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scenes.meta b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scenes.meta
new file mode 100644
index 0000000..af3f53d
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4db658ca162e6404d9b38b6ddb7da029
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scenes/SampleScene.unity b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scenes/SampleScene.unity
new file mode 100644
index 0000000..b9f9e5b
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scenes/SampleScene.unity
@@ -0,0 +1,435 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &1563225060
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1563225065}
+ - component: {fileID: 1563225064}
+ - component: {fileID: 1563225063}
+ - component: {fileID: 1563225062}
+ - component: {fileID: 1563225061}
+ m_Layer: 0
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1563225061
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1563225060}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 23fe411895e3ffc439829dec2689b3ef, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!65 &1563225062
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1563225060}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1563225063
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1563225060}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1563225064
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1563225060}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1563225065
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1563225060}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1747014484
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1747014488}
+ - component: {fileID: 1747014487}
+ - component: {fileID: 1747014486}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &1747014486
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1747014484}
+ m_Enabled: 1
+--- !u!20 &1747014487
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1747014484}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &1747014488
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1747014484}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1912575512
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1912575514}
+ - component: {fileID: 1912575513}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &1912575513
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1912575512}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &1912575514
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1912575512}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 1747014488}
+ - {fileID: 1912575514}
+ - {fileID: 1563225065}
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scenes/SampleScene.unity.meta b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scenes/SampleScene.unity.meta
new file mode 100644
index 0000000..952bd1e
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scenes/SampleScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9fc0d4010bbf28b4594072e72b8655ab
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scripts.meta b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scripts.meta
new file mode 100644
index 0000000..6152a2c
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 199f64c11a87b6046a14a75ea7fe5588
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scripts/TestScript.cs b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scripts/TestScript.cs
new file mode 100644
index 0000000..f4d83c8
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scripts/TestScript.cs
@@ -0,0 +1,69 @@
+// DO NOT EDIT THIS - ESPECIALLY THE COMMENTS
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TestScript : MonoBehaviour
+{
+ private readonly float m_Radius = 5.0f;
+ static bool s_StaticBoolVar = false;
+
+ // Start is called before the first frame update
+ void Start()
+ {
+ s_StaticBoolVar = true; //
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ if (s_StaticBoolVar)
+ {
+ Debug.Log("1ST BREAKPOINT HERE"); //
+ Debug.Log("-------------------"); //
+ Debug.Log("-------------------");
+ Debug.Log("-------------------");
+ Debug.Log("2ND BREAKPOINT HERE"); //
+ s_StaticBoolVar = false;
+ }
+ Debug.Log("3ND BREAKPOINT HERE"); //
+ ToBeSteppedIntoAndOutOf(); //
+ Debug.Log("4ND BREAKPOINT HERE"); //
+ Debug.Log("TERMINATE"); //
+ }
+
+ private string ToBeSteppedIntoAndOutOf()
+ {
+ string s = "useless var";
+ // move to a random position
+ transform.position = Random.insideUnitSphere * m_Radius; //
+ DeepCall1();
+ return s;
+ }
+
+ private void DeepCall1()
+ {
+ Debug.Log("DeepCall1"); //
+ DeepCall2();
+ }
+
+ private void DeepCall2()
+ {
+ Debug.Log("DeepCall2"); //
+ DeepCall3();
+ }
+
+ private void DeepCall3()
+ {
+ Debug.Log("DeepCall3"); //
+ DeepCall4();
+ }
+
+ private void DeepCall4()
+ {
+ Debug.Log("DeepCall4"); //
+ DeepCall5();
+ }
+
+ private void DeepCall5() => Debug.Log("DeepCall5");
+}
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scripts/TestScript.cs.meta b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scripts/TestScript.cs.meta
new file mode 100644
index 0000000..7a3bbe3
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Assets/Scripts/TestScript.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 23fe411895e3ffc439829dec2689b3ef
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Packages/manifest.json b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Packages/manifest.json
new file mode 100644
index 0000000..e3e1eda
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Packages/manifest.json
@@ -0,0 +1,42 @@
+{
+ "dependencies": {
+ "com.unity.collab-proxy": "2.12.4",
+ "com.unity.feature.development": "1.0.1",
+ "com.unity.textmeshpro": "3.0.7",
+ "com.unity.timeline": "1.7.7",
+ "com.unity.ugui": "1.0.0",
+ "com.unity.visualscripting": "1.9.4",
+ "com.walcht.ide.neovim": "file:C:/Users/walid/Desktop/com.walcht.ide.neovim",
+ "com.unity.modules.ai": "1.0.0",
+ "com.unity.modules.androidjni": "1.0.0",
+ "com.unity.modules.animation": "1.0.0",
+ "com.unity.modules.assetbundle": "1.0.0",
+ "com.unity.modules.audio": "1.0.0",
+ "com.unity.modules.cloth": "1.0.0",
+ "com.unity.modules.director": "1.0.0",
+ "com.unity.modules.imageconversion": "1.0.0",
+ "com.unity.modules.imgui": "1.0.0",
+ "com.unity.modules.jsonserialize": "1.0.0",
+ "com.unity.modules.particlesystem": "1.0.0",
+ "com.unity.modules.physics": "1.0.0",
+ "com.unity.modules.physics2d": "1.0.0",
+ "com.unity.modules.screencapture": "1.0.0",
+ "com.unity.modules.terrain": "1.0.0",
+ "com.unity.modules.terrainphysics": "1.0.0",
+ "com.unity.modules.tilemap": "1.0.0",
+ "com.unity.modules.ui": "1.0.0",
+ "com.unity.modules.uielements": "1.0.0",
+ "com.unity.modules.umbra": "1.0.0",
+ "com.unity.modules.unityanalytics": "1.0.0",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequestaudio": "1.0.0",
+ "com.unity.modules.unitywebrequesttexture": "1.0.0",
+ "com.unity.modules.unitywebrequestwww": "1.0.0",
+ "com.unity.modules.vehicles": "1.0.0",
+ "com.unity.modules.video": "1.0.0",
+ "com.unity.modules.vr": "1.0.0",
+ "com.unity.modules.wind": "1.0.0",
+ "com.unity.modules.xr": "1.0.0"
+ }
+}
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Packages/packages-lock.json b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Packages/packages-lock.json
new file mode 100644
index 0000000..1020d81
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/Packages/packages-lock.json
@@ -0,0 +1,388 @@
+{
+ "dependencies": {
+ "com.unity.collab-proxy": {
+ "version": "2.12.4",
+ "depth": 0,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.editorcoroutines": {
+ "version": "1.0.0",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.ext.nunit": {
+ "version": "1.0.6",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.feature.development": {
+ "version": "1.0.1",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.ide.visualstudio": "2.0.22",
+ "com.unity.ide.rider": "3.0.36",
+ "com.unity.ide.vscode": "1.2.5",
+ "com.unity.editorcoroutines": "1.0.0",
+ "com.unity.performance.profile-analyzer": "1.2.3",
+ "com.unity.test-framework": "1.1.33",
+ "com.unity.testtools.codecoverage": "1.2.6"
+ }
+ },
+ "com.unity.ide.rider": {
+ "version": "3.0.36",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.ext.nunit": "1.0.6"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.ide.visualstudio": {
+ "version": "2.0.22",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.test-framework": "1.1.9"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.ide.vscode": {
+ "version": "1.2.5",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.performance.profile-analyzer": {
+ "version": "1.2.3",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.settings-manager": {
+ "version": "2.1.0",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.test-framework": {
+ "version": "1.1.33",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.ext.nunit": "1.0.6",
+ "com.unity.modules.imgui": "1.0.0",
+ "com.unity.modules.jsonserialize": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.testtools.codecoverage": {
+ "version": "1.2.6",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.test-framework": "1.0.16",
+ "com.unity.settings-manager": "1.0.1"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.textmeshpro": {
+ "version": "3.0.7",
+ "depth": 0,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.ugui": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.timeline": {
+ "version": "1.7.7",
+ "depth": 0,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.modules.audio": "1.0.0",
+ "com.unity.modules.director": "1.0.0",
+ "com.unity.modules.animation": "1.0.0",
+ "com.unity.modules.particlesystem": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.ugui": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.ui": "1.0.0",
+ "com.unity.modules.imgui": "1.0.0"
+ }
+ },
+ "com.unity.visualscripting": {
+ "version": "1.9.4",
+ "depth": 0,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.ugui": "1.0.0",
+ "com.unity.modules.jsonserialize": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.walcht.ide.neovim": {
+ "version": "file:C:/Users/walid/Desktop/com.walcht.ide.neovim",
+ "depth": 0,
+ "source": "local",
+ "dependencies": {}
+ },
+ "com.unity.modules.ai": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.androidjni": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.animation": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.assetbundle": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.audio": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.cloth": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.physics": "1.0.0"
+ }
+ },
+ "com.unity.modules.director": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.audio": "1.0.0",
+ "com.unity.modules.animation": "1.0.0"
+ }
+ },
+ "com.unity.modules.imageconversion": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.imgui": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.jsonserialize": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.particlesystem": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.physics": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.physics2d": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.screencapture": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.imageconversion": "1.0.0"
+ }
+ },
+ "com.unity.modules.subsystems": {
+ "version": "1.0.0",
+ "depth": 1,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.jsonserialize": "1.0.0"
+ }
+ },
+ "com.unity.modules.terrain": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.terrainphysics": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.physics": "1.0.0",
+ "com.unity.modules.terrain": "1.0.0"
+ }
+ },
+ "com.unity.modules.tilemap": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.physics2d": "1.0.0"
+ }
+ },
+ "com.unity.modules.ui": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.uielements": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.ui": "1.0.0",
+ "com.unity.modules.imgui": "1.0.0",
+ "com.unity.modules.jsonserialize": "1.0.0"
+ }
+ },
+ "com.unity.modules.umbra": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.unityanalytics": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.jsonserialize": "1.0.0"
+ }
+ },
+ "com.unity.modules.unitywebrequest": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.unitywebrequestassetbundle": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.assetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequest": "1.0.0"
+ }
+ },
+ "com.unity.modules.unitywebrequestaudio": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.audio": "1.0.0"
+ }
+ },
+ "com.unity.modules.unitywebrequesttexture": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.imageconversion": "1.0.0"
+ }
+ },
+ "com.unity.modules.unitywebrequestwww": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequestaudio": "1.0.0",
+ "com.unity.modules.audio": "1.0.0",
+ "com.unity.modules.assetbundle": "1.0.0",
+ "com.unity.modules.imageconversion": "1.0.0"
+ }
+ },
+ "com.unity.modules.vehicles": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.physics": "1.0.0"
+ }
+ },
+ "com.unity.modules.video": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.audio": "1.0.0",
+ "com.unity.modules.ui": "1.0.0",
+ "com.unity.modules.unitywebrequest": "1.0.0"
+ }
+ },
+ "com.unity.modules.vr": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.jsonserialize": "1.0.0",
+ "com.unity.modules.physics": "1.0.0",
+ "com.unity.modules.xr": "1.0.0"
+ }
+ },
+ "com.unity.modules.wind": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.xr": {
+ "version": "1.0.0",
+ "depth": 0,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.physics": "1.0.0",
+ "com.unity.modules.jsonserialize": "1.0.0",
+ "com.unity.modules.subsystems": "1.0.0"
+ }
+ }
+ }
+}
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/AudioManager.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/AudioManager.asset
new file mode 100644
index 0000000..07ebfb0
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/AudioManager.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!11 &1
+AudioManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Volume: 1
+ Rolloff Scale: 1
+ Doppler Factor: 1
+ Default Speaker Mode: 2
+ m_SampleRate: 0
+ m_DSPBufferSize: 1024
+ m_VirtualVoiceCount: 512
+ m_RealVoiceCount: 32
+ m_SpatializerPlugin:
+ m_AmbisonicDecoderPlugin:
+ m_DisableAudio: 0
+ m_VirtualizeEffects: 1
+ m_RequestedDSPBufferSize: 1024
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/ClusterInputManager.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/ClusterInputManager.asset
new file mode 100644
index 0000000..e7886b2
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/ClusterInputManager.asset
@@ -0,0 +1,6 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!236 &1
+ClusterInputManager:
+ m_ObjectHideFlags: 0
+ m_Inputs: []
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/DynamicsManager.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/DynamicsManager.asset
new file mode 100644
index 0000000..cdc1f3e
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/DynamicsManager.asset
@@ -0,0 +1,34 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!55 &1
+PhysicsManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 11
+ m_Gravity: {x: 0, y: -9.81, z: 0}
+ m_DefaultMaterial: {fileID: 0}
+ m_BounceThreshold: 2
+ m_SleepThreshold: 0.005
+ m_DefaultContactOffset: 0.01
+ m_DefaultSolverIterations: 6
+ m_DefaultSolverVelocityIterations: 1
+ m_QueriesHitBackfaces: 0
+ m_QueriesHitTriggers: 1
+ m_EnableAdaptiveForce: 0
+ m_ClothInterCollisionDistance: 0
+ m_ClothInterCollisionStiffness: 0
+ m_ContactsGeneration: 1
+ m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ m_AutoSimulation: 1
+ m_AutoSyncTransforms: 0
+ m_ReuseCollisionCallbacks: 1
+ m_ClothInterCollisionSettingsToggle: 0
+ m_ContactPairsMode: 0
+ m_BroadphaseType: 0
+ m_WorldBounds:
+ m_Center: {x: 0, y: 0, z: 0}
+ m_Extent: {x: 250, y: 250, z: 250}
+ m_WorldSubdivisions: 8
+ m_FrictionType: 0
+ m_EnableEnhancedDeterminism: 0
+ m_EnableUnifiedHeightmaps: 1
+ m_DefaultMaxAngluarSpeed: 7
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/EditorBuildSettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/EditorBuildSettings.asset
new file mode 100644
index 0000000..0147887
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/EditorBuildSettings.asset
@@ -0,0 +1,8 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1045 &1
+EditorBuildSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Scenes: []
+ m_configObjects: {}
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/EditorSettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/EditorSettings.asset
new file mode 100644
index 0000000..1e44a0a
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/EditorSettings.asset
@@ -0,0 +1,30 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!159 &1
+EditorSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 11
+ m_ExternalVersionControlSupport: Visible Meta Files
+ m_SerializationMode: 2
+ m_LineEndingsForNewScripts: 0
+ m_DefaultBehaviorMode: 0
+ m_PrefabRegularEnvironment: {fileID: 0}
+ m_PrefabUIEnvironment: {fileID: 0}
+ m_SpritePackerMode: 0
+ m_SpritePackerPaddingPower: 1
+ m_EtcTextureCompressorBehavior: 1
+ m_EtcTextureFastCompressor: 1
+ m_EtcTextureNormalCompressor: 2
+ m_EtcTextureBestCompressor: 4
+ m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
+ m_ProjectGenerationRootNamespace:
+ m_CollabEditorSettings:
+ inProgressEnabled: 1
+ m_EnableTextureStreamingInEditMode: 1
+ m_EnableTextureStreamingInPlayMode: 1
+ m_AsyncShaderCompilation: 1
+ m_EnterPlayModeOptionsEnabled: 0
+ m_EnterPlayModeOptions: 3
+ m_ShowLightmapResolutionOverlay: 1
+ m_UseLegacyProbeSampleCount: 0
+ m_SerializeInlineMappingsOnOneLine: 1
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/GraphicsSettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/GraphicsSettings.asset
new file mode 100644
index 0000000..43369e3
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/GraphicsSettings.asset
@@ -0,0 +1,63 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!30 &1
+GraphicsSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_Deferred:
+ m_Mode: 1
+ m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
+ m_DeferredReflections:
+ m_Mode: 1
+ m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
+ m_ScreenSpaceShadows:
+ m_Mode: 1
+ m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
+ m_LegacyDeferred:
+ m_Mode: 1
+ m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
+ m_DepthNormals:
+ m_Mode: 1
+ m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
+ m_MotionVectors:
+ m_Mode: 1
+ m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightHalo:
+ m_Mode: 1
+ m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
+ m_LensFlare:
+ m_Mode: 1
+ m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
+ m_AlwaysIncludedShaders:
+ - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
+ m_PreloadedShaders: []
+ m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
+ type: 0}
+ m_CustomRenderPipeline: {fileID: 0}
+ m_TransparencySortMode: 0
+ m_TransparencySortAxis: {x: 0, y: 0, z: 1}
+ m_DefaultRenderingPath: 1
+ m_DefaultMobileRenderingPath: 1
+ m_TierSettings: []
+ m_LightmapStripping: 0
+ m_FogStripping: 0
+ m_InstancingStripping: 0
+ m_LightmapKeepPlain: 1
+ m_LightmapKeepDirCombined: 1
+ m_LightmapKeepDynamicPlain: 1
+ m_LightmapKeepDynamicDirCombined: 1
+ m_LightmapKeepShadowMask: 1
+ m_LightmapKeepSubtractive: 1
+ m_FogKeepLinear: 1
+ m_FogKeepExp: 1
+ m_FogKeepExp2: 1
+ m_AlbedoSwatchInfos: []
+ m_LightsUseLinearIntensity: 0
+ m_LightsUseColorTemperature: 0
+ m_LogWhenShaderIsCompiled: 0
+ m_AllowEnlightenSupportForUpgradedProject: 0
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/InputManager.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/InputManager.asset
new file mode 100644
index 0000000..17c8f53
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/InputManager.asset
@@ -0,0 +1,295 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!13 &1
+InputManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Axes:
+ - serializedVersion: 3
+ m_Name: Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: left
+ positiveButton: right
+ altNegativeButton: a
+ altPositiveButton: d
+ gravity: 3
+ dead: 0.001
+ sensitivity: 3
+ snap: 1
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: down
+ positiveButton: up
+ altNegativeButton: s
+ altPositiveButton: w
+ gravity: 3
+ dead: 0.001
+ sensitivity: 3
+ snap: 1
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire1
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left ctrl
+ altNegativeButton:
+ altPositiveButton: mouse 0
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire2
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left alt
+ altNegativeButton:
+ altPositiveButton: mouse 1
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire3
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left shift
+ altNegativeButton:
+ altPositiveButton: mouse 2
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Jump
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: space
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse X
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse Y
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 1
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse ScrollWheel
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 2
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0.19
+ sensitivity: 1
+ snap: 0
+ invert: 0
+ type: 2
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0.19
+ sensitivity: 1
+ snap: 0
+ invert: 1
+ type: 2
+ axis: 1
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire1
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 0
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire2
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 1
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire3
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 2
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Jump
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 3
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Submit
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: return
+ altNegativeButton:
+ altPositiveButton: joystick button 0
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Submit
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: enter
+ altNegativeButton:
+ altPositiveButton: space
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Cancel
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: escape
+ altNegativeButton:
+ altPositiveButton: joystick button 1
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/MemorySettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/MemorySettings.asset
new file mode 100644
index 0000000..5b5face
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/MemorySettings.asset
@@ -0,0 +1,35 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!387306366 &1
+MemorySettings:
+ m_ObjectHideFlags: 0
+ m_EditorMemorySettings:
+ m_MainAllocatorBlockSize: -1
+ m_ThreadAllocatorBlockSize: -1
+ m_MainGfxBlockSize: -1
+ m_ThreadGfxBlockSize: -1
+ m_CacheBlockSize: -1
+ m_TypetreeBlockSize: -1
+ m_ProfilerBlockSize: -1
+ m_ProfilerEditorBlockSize: -1
+ m_BucketAllocatorGranularity: -1
+ m_BucketAllocatorBucketsCount: -1
+ m_BucketAllocatorBlockSize: -1
+ m_BucketAllocatorBlockCount: -1
+ m_ProfilerBucketAllocatorGranularity: -1
+ m_ProfilerBucketAllocatorBucketsCount: -1
+ m_ProfilerBucketAllocatorBlockSize: -1
+ m_ProfilerBucketAllocatorBlockCount: -1
+ m_TempAllocatorSizeMain: -1
+ m_JobTempAllocatorBlockSize: -1
+ m_BackgroundJobTempAllocatorBlockSize: -1
+ m_JobTempAllocatorReducedBlockSize: -1
+ m_TempAllocatorSizeGIBakingWorker: -1
+ m_TempAllocatorSizeNavMeshWorker: -1
+ m_TempAllocatorSizeAudioWorker: -1
+ m_TempAllocatorSizeCloudWorker: -1
+ m_TempAllocatorSizeGfx: -1
+ m_TempAllocatorSizeJobWorker: -1
+ m_TempAllocatorSizeBackgroundWorker: -1
+ m_TempAllocatorSizePreloadManager: -1
+ m_PlatformMemorySettings: {}
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/NavMeshAreas.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/NavMeshAreas.asset
new file mode 100644
index 0000000..3b0b7c3
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/NavMeshAreas.asset
@@ -0,0 +1,91 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!126 &1
+NavMeshProjectSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ areas:
+ - name: Walkable
+ cost: 1
+ - name: Not Walkable
+ cost: 1
+ - name: Jump
+ cost: 2
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ m_LastAgentTypeID: -887442657
+ m_Settings:
+ - serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.75
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ debug:
+ m_Flags: 0
+ m_SettingNames:
+ - Humanoid
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/PackageManagerSettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/PackageManagerSettings.asset
new file mode 100644
index 0000000..112a053
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/PackageManagerSettings.asset
@@ -0,0 +1,35 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &1
+MonoBehaviour:
+ m_ObjectHideFlags: 61
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_EnablePreReleasePackages: 0
+ m_EnablePackageDependencies: 0
+ m_AdvancedSettingsExpanded: 1
+ m_ScopedRegistriesSettingsExpanded: 1
+ m_SeeAllPackageVersions: 0
+ oneTimeWarningShown: 0
+ m_Registries:
+ - m_Id: main
+ m_Name:
+ m_Url: https://packages.unity.com
+ m_Scopes: []
+ m_IsDefault: 1
+ m_Capabilities: 7
+ m_UserSelectedRegistryName:
+ m_UserAddingNewScopedRegistry: 0
+ m_RegistryInfoDraft:
+ m_Modified: 0
+ m_ErrorMessage:
+ m_UserModificationsInstanceId: -830
+ m_OriginalInstanceId: -832
+ m_LoadAssets: 0
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json
new file mode 100644
index 0000000..3c7b4c1
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json
@@ -0,0 +1,5 @@
+{
+ "m_Dictionary": {
+ "m_DictionaryValues": []
+ }
+}
\ No newline at end of file
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/Physics2DSettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/Physics2DSettings.asset
new file mode 100644
index 0000000..47880b1
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/Physics2DSettings.asset
@@ -0,0 +1,56 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!19 &1
+Physics2DSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 4
+ m_Gravity: {x: 0, y: -9.81}
+ m_DefaultMaterial: {fileID: 0}
+ m_VelocityIterations: 8
+ m_PositionIterations: 3
+ m_VelocityThreshold: 1
+ m_MaxLinearCorrection: 0.2
+ m_MaxAngularCorrection: 8
+ m_MaxTranslationSpeed: 100
+ m_MaxRotationSpeed: 360
+ m_BaumgarteScale: 0.2
+ m_BaumgarteTimeOfImpactScale: 0.75
+ m_TimeToSleep: 0.5
+ m_LinearSleepTolerance: 0.01
+ m_AngularSleepTolerance: 2
+ m_DefaultContactOffset: 0.01
+ m_JobOptions:
+ serializedVersion: 2
+ useMultithreading: 0
+ useConsistencySorting: 0
+ m_InterpolationPosesPerJob: 100
+ m_NewContactsPerJob: 30
+ m_CollideContactsPerJob: 100
+ m_ClearFlagsPerJob: 200
+ m_ClearBodyForcesPerJob: 200
+ m_SyncDiscreteFixturesPerJob: 50
+ m_SyncContinuousFixturesPerJob: 50
+ m_FindNearestContactsPerJob: 100
+ m_UpdateTriggerContactsPerJob: 100
+ m_IslandSolverCostThreshold: 100
+ m_IslandSolverBodyCostScale: 1
+ m_IslandSolverContactCostScale: 10
+ m_IslandSolverJointCostScale: 10
+ m_IslandSolverBodiesPerJob: 50
+ m_IslandSolverContactsPerJob: 50
+ m_AutoSimulation: 1
+ m_QueriesHitTriggers: 1
+ m_QueriesStartInColliders: 1
+ m_CallbacksOnDisable: 1
+ m_ReuseCollisionCallbacks: 1
+ m_AutoSyncTransforms: 0
+ m_AlwaysShowColliders: 0
+ m_ShowColliderSleep: 1
+ m_ShowColliderContacts: 0
+ m_ShowColliderAABB: 0
+ m_ContactArrowScale: 0.2
+ m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
+ m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
+ m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
+ m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
+ m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/PresetManager.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/PresetManager.asset
new file mode 100644
index 0000000..67a94da
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/PresetManager.asset
@@ -0,0 +1,7 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1386491679 &1
+PresetManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_DefaultPresets: {}
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/ProjectSettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/ProjectSettings.asset
new file mode 100644
index 0000000..7fb16bf
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/ProjectSettings.asset
@@ -0,0 +1,772 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!129 &1
+PlayerSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 26
+ productGUID: d0e8bda652da1704fab7ae1b86bb5940
+ AndroidProfiler: 0
+ AndroidFilterTouchesWhenObscured: 0
+ AndroidEnableSustainedPerformanceMode: 0
+ defaultScreenOrientation: 4
+ targetDevice: 2
+ useOnDemandResources: 0
+ accelerometerFrequency: 60
+ companyName: DefaultCompany
+ productName: unity_test_project_2022_3
+ defaultCursor: {fileID: 0}
+ cursorHotspot: {x: 0, y: 0}
+ m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
+ m_ShowUnitySplashScreen: 1
+ m_ShowUnitySplashLogo: 1
+ m_SplashScreenOverlayOpacity: 1
+ m_SplashScreenAnimation: 1
+ m_SplashScreenLogoStyle: 1
+ m_SplashScreenDrawMode: 0
+ m_SplashScreenBackgroundAnimationZoom: 1
+ m_SplashScreenLogoAnimationZoom: 1
+ m_SplashScreenBackgroundLandscapeAspect: 1
+ m_SplashScreenBackgroundPortraitAspect: 1
+ m_SplashScreenBackgroundLandscapeUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenBackgroundPortraitUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenLogos: []
+ m_VirtualRealitySplashScreen: {fileID: 0}
+ m_HolographicTrackingLossScreen: {fileID: 0}
+ defaultScreenWidth: 1920
+ defaultScreenHeight: 1080
+ defaultScreenWidthWeb: 960
+ defaultScreenHeightWeb: 600
+ m_StereoRenderingPath: 0
+ m_ActiveColorSpace: 1
+ unsupportedMSAAFallback: 0
+ m_SpriteBatchVertexThreshold: 300
+ m_MTRendering: 1
+ mipStripping: 0
+ numberOfMipsStripped: 0
+ numberOfMipsStrippedPerMipmapLimitGroup: {}
+ m_StackTraceTypes: 010000000100000001000000010000000100000001000000
+ iosShowActivityIndicatorOnLoading: -1
+ androidShowActivityIndicatorOnLoading: -1
+ iosUseCustomAppBackgroundBehavior: 0
+ allowedAutorotateToPortrait: 1
+ allowedAutorotateToPortraitUpsideDown: 1
+ allowedAutorotateToLandscapeRight: 1
+ allowedAutorotateToLandscapeLeft: 1
+ useOSAutorotation: 1
+ use32BitDisplayBuffer: 1
+ preserveFramebufferAlpha: 0
+ disableDepthAndStencilBuffers: 0
+ androidStartInFullscreen: 1
+ androidRenderOutsideSafeArea: 1
+ androidUseSwappy: 1
+ androidBlitType: 0
+ androidResizableWindow: 0
+ androidDefaultWindowWidth: 1920
+ androidDefaultWindowHeight: 1080
+ androidMinimumWindowWidth: 400
+ androidMinimumWindowHeight: 300
+ androidFullscreenMode: 1
+ androidAutoRotationBehavior: 1
+ androidPredictiveBackSupport: 1
+ defaultIsNativeResolution: 1
+ macRetinaSupport: 1
+ runInBackground: 1
+ captureSingleScreen: 0
+ muteOtherAudioSources: 0
+ Prepare IOS For Recording: 0
+ Force IOS Speakers When Recording: 0
+ audioSpatialExperience: 0
+ deferSystemGesturesMode: 0
+ hideHomeButton: 0
+ submitAnalytics: 1
+ usePlayerLog: 1
+ dedicatedServerOptimizations: 0
+ bakeCollisionMeshes: 0
+ forceSingleInstance: 0
+ useFlipModelSwapchain: 1
+ resizableWindow: 0
+ useMacAppStoreValidation: 0
+ macAppStoreCategory: public.app-category.games
+ gpuSkinning: 1
+ xboxPIXTextureCapture: 0
+ xboxEnableAvatar: 0
+ xboxEnableKinect: 0
+ xboxEnableKinectAutoTracking: 0
+ xboxEnableFitness: 0
+ visibleInBackground: 1
+ allowFullscreenSwitch: 1
+ fullscreenMode: 1
+ xboxSpeechDB: 0
+ xboxEnableHeadOrientation: 0
+ xboxEnableGuest: 0
+ xboxEnablePIXSampling: 0
+ metalFramebufferOnly: 0
+ xboxOneResolution: 0
+ xboxOneSResolution: 0
+ xboxOneXResolution: 3
+ xboxOneMonoLoggingLevel: 0
+ xboxOneLoggingLevel: 1
+ xboxOneDisableEsram: 0
+ xboxOneEnableTypeOptimization: 0
+ xboxOnePresentImmediateThreshold: 0
+ switchQueueCommandMemory: 0
+ switchQueueControlMemory: 16384
+ switchQueueComputeMemory: 262144
+ switchNVNShaderPoolsGranularity: 33554432
+ switchNVNDefaultPoolsGranularity: 16777216
+ switchNVNOtherPoolsGranularity: 16777216
+ switchGpuScratchPoolGranularity: 2097152
+ switchAllowGpuScratchShrinking: 0
+ switchNVNMaxPublicTextureIDCount: 0
+ switchNVNMaxPublicSamplerIDCount: 0
+ switchNVNGraphicsFirmwareMemory: 32
+ switchMaxWorkerMultiple: 8
+ stadiaPresentMode: 0
+ stadiaTargetFramerate: 0
+ vulkanNumSwapchainBuffers: 3
+ vulkanEnableSetSRGBWrite: 0
+ vulkanEnablePreTransform: 1
+ vulkanEnableLateAcquireNextImage: 0
+ vulkanEnableCommandBufferRecycling: 1
+ loadStoreDebugModeEnabled: 0
+ visionOSBundleVersion: 1.0
+ tvOSBundleVersion: 1.0
+ bundleVersion: 0.1
+ preloadedAssets: []
+ metroInputSource: 0
+ wsaTransparentSwapchain: 0
+ m_HolographicPauseOnTrackingLoss: 1
+ xboxOneDisableKinectGpuReservation: 1
+ xboxOneEnable7thCore: 1
+ vrSettings:
+ enable360StereoCapture: 0
+ isWsaHolographicRemotingEnabled: 0
+ enableFrameTimingStats: 0
+ enableOpenGLProfilerGPURecorders: 1
+ allowHDRDisplaySupport: 0
+ useHDRDisplay: 0
+ hdrBitDepth: 0
+ m_ColorGamuts: 00000000
+ targetPixelDensity: 30
+ resolutionScalingMode: 0
+ resetResolutionOnWindowResize: 0
+ androidSupportedAspectRatio: 1
+ androidMaxAspectRatio: 2.1
+ applicationIdentifier: {}
+ buildNumber:
+ Standalone: 0
+ VisionOS: 0
+ iPhone: 0
+ tvOS: 0
+ overrideDefaultApplicationIdentifier: 0
+ AndroidBundleVersionCode: 1
+ AndroidMinSdkVersion: 22
+ AndroidTargetSdkVersion: 0
+ AndroidPreferredInstallLocation: 1
+ aotOptions:
+ stripEngineCode: 1
+ iPhoneStrippingLevel: 0
+ iPhoneScriptCallOptimization: 0
+ ForceInternetPermission: 0
+ ForceSDCardPermission: 0
+ CreateWallpaper: 0
+ APKExpansionFiles: 0
+ keepLoadedShadersAlive: 0
+ StripUnusedMeshComponents: 1
+ strictShaderVariantMatching: 0
+ VertexChannelCompressionMask: 4054
+ iPhoneSdkVersion: 988
+ iOSSimulatorArchitecture: 0
+ iOSTargetOSVersionString: 12.0
+ tvOSSdkVersion: 0
+ tvOSSimulatorArchitecture: 0
+ tvOSRequireExtendedGameController: 0
+ tvOSTargetOSVersionString: 12.0
+ VisionOSSdkVersion: 0
+ VisionOSTargetOSVersionString: 1.0
+ uIPrerenderedIcon: 0
+ uIRequiresPersistentWiFi: 0
+ uIRequiresFullScreen: 1
+ uIStatusBarHidden: 1
+ uIExitOnSuspend: 0
+ uIStatusBarStyle: 0
+ appleTVSplashScreen: {fileID: 0}
+ appleTVSplashScreen2x: {fileID: 0}
+ tvOSSmallIconLayers: []
+ tvOSSmallIconLayers2x: []
+ tvOSLargeIconLayers: []
+ tvOSLargeIconLayers2x: []
+ tvOSTopShelfImageLayers: []
+ tvOSTopShelfImageLayers2x: []
+ tvOSTopShelfImageWideLayers: []
+ tvOSTopShelfImageWideLayers2x: []
+ iOSLaunchScreenType: 0
+ iOSLaunchScreenPortrait: {fileID: 0}
+ iOSLaunchScreenLandscape: {fileID: 0}
+ iOSLaunchScreenBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreenFillPct: 100
+ iOSLaunchScreenSize: 100
+ iOSLaunchScreenCustomXibPath:
+ iOSLaunchScreeniPadType: 0
+ iOSLaunchScreeniPadImage: {fileID: 0}
+ iOSLaunchScreeniPadBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreeniPadFillPct: 100
+ iOSLaunchScreeniPadSize: 100
+ iOSLaunchScreeniPadCustomXibPath:
+ iOSLaunchScreenCustomStoryboardPath:
+ iOSLaunchScreeniPadCustomStoryboardPath:
+ iOSDeviceRequirements: []
+ iOSURLSchemes: []
+ macOSURLSchemes: []
+ iOSBackgroundModes: 0
+ iOSMetalForceHardShadows: 0
+ metalEditorSupport: 1
+ metalAPIValidation: 1
+ metalCompileShaderBinary: 0
+ iOSRenderExtraFrameOnPause: 0
+ iosCopyPluginsCodeInsteadOfSymlink: 0
+ appleDeveloperTeamID:
+ iOSManualSigningProvisioningProfileID:
+ tvOSManualSigningProvisioningProfileID:
+ VisionOSManualSigningProvisioningProfileID:
+ iOSManualSigningProvisioningProfileType: 0
+ tvOSManualSigningProvisioningProfileType: 0
+ VisionOSManualSigningProvisioningProfileType: 0
+ appleEnableAutomaticSigning: 0
+ iOSRequireARKit: 0
+ iOSAutomaticallyDetectAndAddCapabilities: 1
+ appleEnableProMotion: 0
+ shaderPrecisionModel: 0
+ clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
+ templatePackageId: com.unity.template.3d@8.1.3
+ templateDefaultScene: Assets/Scenes/SampleScene.unity
+ useCustomMainManifest: 0
+ useCustomLauncherManifest: 0
+ useCustomMainGradleTemplate: 0
+ useCustomLauncherGradleManifest: 0
+ useCustomBaseGradleTemplate: 0
+ useCustomGradlePropertiesTemplate: 0
+ useCustomGradleSettingsTemplate: 0
+ useCustomProguardFile: 0
+ AndroidTargetArchitectures: 1
+ AndroidTargetDevices: 0
+ AndroidSplashScreenScale: 0
+ androidSplashScreen: {fileID: 0}
+ AndroidKeystoreName:
+ AndroidKeyaliasName:
+ AndroidEnableArmv9SecurityFeatures: 0
+ AndroidBuildApkPerCpuArchitecture: 0
+ AndroidTVCompatibility: 0
+ AndroidIsGame: 1
+ AndroidEnableTango: 0
+ androidEnableBanner: 1
+ androidUseLowAccuracyLocation: 0
+ androidUseCustomKeystore: 0
+ m_AndroidBanners:
+ - width: 320
+ height: 180
+ banner: {fileID: 0}
+ androidGamepadSupportLevel: 0
+ chromeosInputEmulation: 1
+ AndroidMinifyRelease: 0
+ AndroidMinifyDebug: 0
+ AndroidValidateAppBundleSize: 1
+ AndroidAppBundleSizeToValidate: 150
+ m_BuildTargetIcons: []
+ m_BuildTargetPlatformIcons: []
+ m_BuildTargetBatching:
+ - m_BuildTarget: Standalone
+ m_StaticBatching: 1
+ m_DynamicBatching: 0
+ - m_BuildTarget: tvOS
+ m_StaticBatching: 1
+ m_DynamicBatching: 0
+ - m_BuildTarget: Android
+ m_StaticBatching: 1
+ m_DynamicBatching: 0
+ - m_BuildTarget: iPhone
+ m_StaticBatching: 1
+ m_DynamicBatching: 0
+ - m_BuildTarget: WebGL
+ m_StaticBatching: 0
+ m_DynamicBatching: 0
+ m_BuildTargetShaderSettings: []
+ m_BuildTargetGraphicsJobs:
+ - m_BuildTarget: MacStandaloneSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: Switch
+ m_GraphicsJobs: 1
+ - m_BuildTarget: MetroSupport
+ m_GraphicsJobs: 1
+ - m_BuildTarget: AppleTVSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: BJMSupport
+ m_GraphicsJobs: 1
+ - m_BuildTarget: LinuxStandaloneSupport
+ m_GraphicsJobs: 1
+ - m_BuildTarget: PS4Player
+ m_GraphicsJobs: 1
+ - m_BuildTarget: iOSSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: WindowsStandaloneSupport
+ m_GraphicsJobs: 1
+ - m_BuildTarget: XboxOnePlayer
+ m_GraphicsJobs: 1
+ - m_BuildTarget: LuminSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: AndroidPlayer
+ m_GraphicsJobs: 0
+ - m_BuildTarget: WebGLSupport
+ m_GraphicsJobs: 0
+ m_BuildTargetGraphicsJobMode:
+ - m_BuildTarget: PS4Player
+ m_GraphicsJobMode: 0
+ - m_BuildTarget: XboxOnePlayer
+ m_GraphicsJobMode: 0
+ m_BuildTargetGraphicsAPIs:
+ - m_BuildTarget: AndroidPlayer
+ m_APIs: 150000000b000000
+ m_Automatic: 1
+ - m_BuildTarget: iOSSupport
+ m_APIs: 10000000
+ m_Automatic: 1
+ - m_BuildTarget: AppleTVSupport
+ m_APIs: 10000000
+ m_Automatic: 1
+ - m_BuildTarget: WebGLSupport
+ m_APIs: 0b000000
+ m_Automatic: 1
+ m_BuildTargetVRSettings:
+ - m_BuildTarget: Standalone
+ m_Enabled: 0
+ m_Devices:
+ - Oculus
+ - OpenVR
+ m_DefaultShaderChunkSizeInMB: 16
+ m_DefaultShaderChunkCount: 0
+ openGLRequireES31: 0
+ openGLRequireES31AEP: 0
+ openGLRequireES32: 0
+ m_TemplateCustomTags: {}
+ mobileMTRendering:
+ Android: 1
+ iPhone: 1
+ tvOS: 1
+ m_BuildTargetGroupLightmapEncodingQuality:
+ - m_BuildTarget: Android
+ m_EncodingQuality: 1
+ - m_BuildTarget: iPhone
+ m_EncodingQuality: 1
+ - m_BuildTarget: tvOS
+ m_EncodingQuality: 1
+ m_BuildTargetGroupHDRCubemapEncodingQuality:
+ - m_BuildTarget: Android
+ m_EncodingQuality: 1
+ - m_BuildTarget: iPhone
+ m_EncodingQuality: 1
+ - m_BuildTarget: tvOS
+ m_EncodingQuality: 1
+ m_BuildTargetGroupLightmapSettings: []
+ m_BuildTargetGroupLoadStoreDebugModeSettings: []
+ m_BuildTargetNormalMapEncoding:
+ - m_BuildTarget: Android
+ m_Encoding: 1
+ - m_BuildTarget: iPhone
+ m_Encoding: 1
+ - m_BuildTarget: tvOS
+ m_Encoding: 1
+ m_BuildTargetDefaultTextureCompressionFormat:
+ - m_BuildTarget: Android
+ m_Format: 3
+ playModeTestRunnerEnabled: 0
+ runPlayModeTestAsEditModeTest: 0
+ actionOnDotNetUnhandledException: 1
+ enableInternalProfiler: 0
+ logObjCUncaughtExceptions: 1
+ enableCrashReportAPI: 0
+ cameraUsageDescription:
+ locationUsageDescription:
+ microphoneUsageDescription:
+ bluetoothUsageDescription:
+ macOSTargetOSVersion: 10.13.0
+ switchNMETAOverride:
+ switchNetLibKey:
+ switchSocketMemoryPoolSize: 6144
+ switchSocketAllocatorPoolSize: 128
+ switchSocketConcurrencyLimit: 14
+ switchScreenResolutionBehavior: 2
+ switchUseCPUProfiler: 0
+ switchEnableFileSystemTrace: 0
+ switchLTOSetting: 0
+ switchApplicationID: 0x01004b9000490000
+ switchNSODependencies:
+ switchCompilerFlags:
+ switchTitleNames_0:
+ switchTitleNames_1:
+ switchTitleNames_2:
+ switchTitleNames_3:
+ switchTitleNames_4:
+ switchTitleNames_5:
+ switchTitleNames_6:
+ switchTitleNames_7:
+ switchTitleNames_8:
+ switchTitleNames_9:
+ switchTitleNames_10:
+ switchTitleNames_11:
+ switchTitleNames_12:
+ switchTitleNames_13:
+ switchTitleNames_14:
+ switchTitleNames_15:
+ switchPublisherNames_0:
+ switchPublisherNames_1:
+ switchPublisherNames_2:
+ switchPublisherNames_3:
+ switchPublisherNames_4:
+ switchPublisherNames_5:
+ switchPublisherNames_6:
+ switchPublisherNames_7:
+ switchPublisherNames_8:
+ switchPublisherNames_9:
+ switchPublisherNames_10:
+ switchPublisherNames_11:
+ switchPublisherNames_12:
+ switchPublisherNames_13:
+ switchPublisherNames_14:
+ switchPublisherNames_15:
+ switchIcons_0: {fileID: 0}
+ switchIcons_1: {fileID: 0}
+ switchIcons_2: {fileID: 0}
+ switchIcons_3: {fileID: 0}
+ switchIcons_4: {fileID: 0}
+ switchIcons_5: {fileID: 0}
+ switchIcons_6: {fileID: 0}
+ switchIcons_7: {fileID: 0}
+ switchIcons_8: {fileID: 0}
+ switchIcons_9: {fileID: 0}
+ switchIcons_10: {fileID: 0}
+ switchIcons_11: {fileID: 0}
+ switchIcons_12: {fileID: 0}
+ switchIcons_13: {fileID: 0}
+ switchIcons_14: {fileID: 0}
+ switchIcons_15: {fileID: 0}
+ switchSmallIcons_0: {fileID: 0}
+ switchSmallIcons_1: {fileID: 0}
+ switchSmallIcons_2: {fileID: 0}
+ switchSmallIcons_3: {fileID: 0}
+ switchSmallIcons_4: {fileID: 0}
+ switchSmallIcons_5: {fileID: 0}
+ switchSmallIcons_6: {fileID: 0}
+ switchSmallIcons_7: {fileID: 0}
+ switchSmallIcons_8: {fileID: 0}
+ switchSmallIcons_9: {fileID: 0}
+ switchSmallIcons_10: {fileID: 0}
+ switchSmallIcons_11: {fileID: 0}
+ switchSmallIcons_12: {fileID: 0}
+ switchSmallIcons_13: {fileID: 0}
+ switchSmallIcons_14: {fileID: 0}
+ switchSmallIcons_15: {fileID: 0}
+ switchManualHTML:
+ switchAccessibleURLs:
+ switchLegalInformation:
+ switchMainThreadStackSize: 1048576
+ switchPresenceGroupId:
+ switchLogoHandling: 0
+ switchReleaseVersion: 0
+ switchDisplayVersion: 1.0.0
+ switchStartupUserAccount: 0
+ switchSupportedLanguagesMask: 0
+ switchLogoType: 0
+ switchApplicationErrorCodeCategory:
+ switchUserAccountSaveDataSize: 0
+ switchUserAccountSaveDataJournalSize: 0
+ switchApplicationAttribute: 0
+ switchCardSpecSize: -1
+ switchCardSpecClock: -1
+ switchRatingsMask: 0
+ switchRatingsInt_0: 0
+ switchRatingsInt_1: 0
+ switchRatingsInt_2: 0
+ switchRatingsInt_3: 0
+ switchRatingsInt_4: 0
+ switchRatingsInt_5: 0
+ switchRatingsInt_6: 0
+ switchRatingsInt_7: 0
+ switchRatingsInt_8: 0
+ switchRatingsInt_9: 0
+ switchRatingsInt_10: 0
+ switchRatingsInt_11: 0
+ switchRatingsInt_12: 0
+ switchLocalCommunicationIds_0:
+ switchLocalCommunicationIds_1:
+ switchLocalCommunicationIds_2:
+ switchLocalCommunicationIds_3:
+ switchLocalCommunicationIds_4:
+ switchLocalCommunicationIds_5:
+ switchLocalCommunicationIds_6:
+ switchLocalCommunicationIds_7:
+ switchParentalControl: 0
+ switchAllowsScreenshot: 1
+ switchAllowsVideoCapturing: 1
+ switchAllowsRuntimeAddOnContentInstall: 0
+ switchDataLossConfirmation: 0
+ switchUserAccountLockEnabled: 0
+ switchSystemResourceMemory: 16777216
+ switchSupportedNpadStyles: 22
+ switchNativeFsCacheSize: 32
+ switchIsHoldTypeHorizontal: 0
+ switchSupportedNpadCount: 8
+ switchEnableTouchScreen: 1
+ switchSocketConfigEnabled: 0
+ switchTcpInitialSendBufferSize: 32
+ switchTcpInitialReceiveBufferSize: 64
+ switchTcpAutoSendBufferSizeMax: 256
+ switchTcpAutoReceiveBufferSizeMax: 256
+ switchUdpSendBufferSize: 9
+ switchUdpReceiveBufferSize: 42
+ switchSocketBufferEfficiency: 4
+ switchSocketInitializeEnabled: 1
+ switchNetworkInterfaceManagerInitializeEnabled: 1
+ switchDisableHTCSPlayerConnection: 0
+ switchUseNewStyleFilepaths: 1
+ switchUseLegacyFmodPriorities: 0
+ switchUseMicroSleepForYield: 1
+ switchEnableRamDiskSupport: 0
+ switchMicroSleepForYieldTime: 25
+ switchRamDiskSpaceSize: 12
+ ps4NPAgeRating: 12
+ ps4NPTitleSecret:
+ ps4NPTrophyPackPath:
+ ps4ParentalLevel: 11
+ ps4ContentID: ED1633-NPXX51362_00-0000000000000000
+ ps4Category: 0
+ ps4MasterVersion: 01.00
+ ps4AppVersion: 01.00
+ ps4AppType: 0
+ ps4ParamSfxPath:
+ ps4VideoOutPixelFormat: 0
+ ps4VideoOutInitialWidth: 1920
+ ps4VideoOutBaseModeInitialWidth: 1920
+ ps4VideoOutReprojectionRate: 60
+ ps4PronunciationXMLPath:
+ ps4PronunciationSIGPath:
+ ps4BackgroundImagePath:
+ ps4StartupImagePath:
+ ps4StartupImagesFolder:
+ ps4IconImagesFolder:
+ ps4SaveDataImagePath:
+ ps4SdkOverride:
+ ps4BGMPath:
+ ps4ShareFilePath:
+ ps4ShareOverlayImagePath:
+ ps4PrivacyGuardImagePath:
+ ps4ExtraSceSysFile:
+ ps4NPtitleDatPath:
+ ps4RemotePlayKeyAssignment: -1
+ ps4RemotePlayKeyMappingDir:
+ ps4PlayTogetherPlayerCount: 0
+ ps4EnterButtonAssignment: 1
+ ps4ApplicationParam1: 0
+ ps4ApplicationParam2: 0
+ ps4ApplicationParam3: 0
+ ps4ApplicationParam4: 0
+ ps4DownloadDataSize: 0
+ ps4GarlicHeapSize: 2048
+ ps4ProGarlicHeapSize: 2560
+ playerPrefsMaxSize: 32768
+ ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
+ ps4pnSessions: 1
+ ps4pnPresence: 1
+ ps4pnFriends: 1
+ ps4pnGameCustomData: 1
+ playerPrefsSupport: 0
+ enableApplicationExit: 0
+ resetTempFolder: 1
+ restrictedAudioUsageRights: 0
+ ps4UseResolutionFallback: 0
+ ps4ReprojectionSupport: 0
+ ps4UseAudio3dBackend: 0
+ ps4UseLowGarlicFragmentationMode: 1
+ ps4SocialScreenEnabled: 0
+ ps4ScriptOptimizationLevel: 0
+ ps4Audio3dVirtualSpeakerCount: 14
+ ps4attribCpuUsage: 0
+ ps4PatchPkgPath:
+ ps4PatchLatestPkgPath:
+ ps4PatchChangeinfoPath:
+ ps4PatchDayOne: 0
+ ps4attribUserManagement: 0
+ ps4attribMoveSupport: 0
+ ps4attrib3DSupport: 0
+ ps4attribShareSupport: 0
+ ps4attribExclusiveVR: 0
+ ps4disableAutoHideSplash: 0
+ ps4videoRecordingFeaturesUsed: 0
+ ps4contentSearchFeaturesUsed: 0
+ ps4CompatibilityPS5: 0
+ ps4AllowPS5Detection: 0
+ ps4GPU800MHz: 1
+ ps4attribEyeToEyeDistanceSettingVR: 0
+ ps4IncludedModules: []
+ ps4attribVROutputEnabled: 0
+ monoEnv:
+ splashScreenBackgroundSourceLandscape: {fileID: 0}
+ splashScreenBackgroundSourcePortrait: {fileID: 0}
+ blurSplashScreenBackground: 1
+ spritePackerPolicy:
+ webGLMemorySize: 16
+ webGLExceptionSupport: 1
+ webGLNameFilesAsHashes: 0
+ webGLShowDiagnostics: 0
+ webGLDataCaching: 1
+ webGLDebugSymbols: 0
+ webGLEmscriptenArgs:
+ webGLModulesDirectory:
+ webGLTemplate: APPLICATION:Default
+ webGLAnalyzeBuildSize: 0
+ webGLUseEmbeddedResources: 0
+ webGLCompressionFormat: 1
+ webGLWasmArithmeticExceptions: 0
+ webGLLinkerTarget: 1
+ webGLThreadsSupport: 0
+ webGLDecompressionFallback: 0
+ webGLInitialMemorySize: 32
+ webGLMaximumMemorySize: 2048
+ webGLMemoryGrowthMode: 2
+ webGLMemoryLinearGrowthStep: 16
+ webGLMemoryGeometricGrowthStep: 0.2
+ webGLMemoryGeometricGrowthCap: 96
+ webGLPowerPreference: 2
+ scriptingDefineSymbols: {}
+ additionalCompilerArguments: {}
+ platformArchitecture: {}
+ scriptingBackend: {}
+ il2cppCompilerConfiguration: {}
+ il2cppCodeGeneration: {}
+ managedStrippingLevel:
+ EmbeddedLinux: 1
+ GameCoreScarlett: 1
+ GameCoreXboxOne: 1
+ Nintendo Switch: 1
+ PS4: 1
+ PS5: 1
+ QNX: 1
+ Stadia: 1
+ VisionOS: 1
+ WebGL: 1
+ Windows Store Apps: 1
+ XboxOne: 1
+ iPhone: 1
+ tvOS: 1
+ incrementalIl2cppBuild: {}
+ suppressCommonWarnings: 1
+ allowUnsafeCode: 0
+ useDeterministicCompilation: 1
+ additionalIl2CppArgs:
+ scriptingRuntimeVersion: 1
+ gcIncremental: 1
+ gcWBarrierValidation: 0
+ apiCompatibilityLevelPerPlatform: {}
+ m_RenderingPath: 1
+ m_MobileRenderingPath: 1
+ metroPackageName: unity_test_project_2022_3
+ metroPackageVersion:
+ metroCertificatePath:
+ metroCertificatePassword:
+ metroCertificateSubject:
+ metroCertificateIssuer:
+ metroCertificateNotAfter: 0000000000000000
+ metroApplicationDescription: unity_test_project_2022_3
+ wsaImages: {}
+ metroTileShortName:
+ metroTileShowName: 0
+ metroMediumTileShowName: 0
+ metroLargeTileShowName: 0
+ metroWideTileShowName: 0
+ metroSupportStreamingInstall: 0
+ metroLastRequiredScene: 0
+ metroDefaultTileSize: 1
+ metroTileForegroundText: 2
+ metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
+ metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
+ metroSplashScreenUseBackgroundColor: 0
+ syncCapabilities: 0
+ platformCapabilities: {}
+ metroTargetDeviceFamilies: {}
+ metroFTAName:
+ metroFTAFileTypes: []
+ metroProtocolName:
+ vcxProjDefaultLanguage:
+ XboxOneProductId:
+ XboxOneUpdateKey:
+ XboxOneSandboxId:
+ XboxOneContentId:
+ XboxOneTitleId:
+ XboxOneSCId:
+ XboxOneGameOsOverridePath:
+ XboxOnePackagingOverridePath:
+ XboxOneAppManifestOverridePath:
+ XboxOneVersion: 1.0.0.0
+ XboxOnePackageEncryption: 0
+ XboxOnePackageUpdateGranularity: 2
+ XboxOneDescription:
+ XboxOneLanguage:
+ - enus
+ XboxOneCapability: []
+ XboxOneGameRating: {}
+ XboxOneIsContentPackage: 0
+ XboxOneEnhancedXboxCompatibilityMode: 0
+ XboxOneEnableGPUVariability: 1
+ XboxOneSockets: {}
+ XboxOneSplashScreen: {fileID: 0}
+ XboxOneAllowedProductIds: []
+ XboxOnePersistentLocalStorageSize: 0
+ XboxOneXTitleMemory: 8
+ XboxOneOverrideIdentityName:
+ XboxOneOverrideIdentityPublisher:
+ vrEditorSettings: {}
+ cloudServicesEnabled:
+ UNet: 1
+ luminIcon:
+ m_Name:
+ m_ModelFolderPath:
+ m_PortalFolderPath:
+ luminCert:
+ m_CertPath:
+ m_SignPackage: 1
+ luminIsChannelApp: 0
+ luminVersion:
+ m_VersionCode: 1
+ m_VersionName:
+ hmiPlayerDataPath:
+ hmiForceSRGBBlit: 1
+ embeddedLinuxEnableGamepadInput: 1
+ hmiLogStartupTiming: 0
+ hmiCpuConfiguration:
+ apiCompatibilityLevel: 6
+ activeInputHandler: 0
+ windowsGamepadBackendHint: 0
+ cloudProjectId: da69317f-a623-4792-82db-6244e13cae36
+ framebufferDepthMemorylessMode: 0
+ qualitySettingsNames: []
+ projectName: unity_test_project_2022_3
+ organizationId: unity_curadb2zkvok2a
+ cloudEnabled: 0
+ legacyClampBlendShapeWeights: 0
+ hmiLoadingImage: {fileID: 0}
+ platformRequiresReadableAssets: 0
+ virtualTexturingSupportEnabled: 0
+ insecureHttpOption: 0
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/ProjectVersion.txt b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/ProjectVersion.txt
new file mode 100644
index 0000000..587f809
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/ProjectVersion.txt
@@ -0,0 +1,2 @@
+m_EditorVersion: 2022.3.62f3
+m_EditorVersionWithRevision: 2022.3.62f3 (96770f904ca7)
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/QualitySettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/QualitySettings.asset
new file mode 100644
index 0000000..36c0dad
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/QualitySettings.asset
@@ -0,0 +1,234 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!47 &1
+QualitySettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 5
+ m_CurrentQuality: 5
+ m_QualitySettings:
+ - serializedVersion: 2
+ name: Very Low
+ pixelLightCount: 0
+ shadows: 0
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 15
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ blendWeights: 1
+ textureQuality: 1
+ anisotropicTextures: 0
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ vSyncCount: 0
+ lodBias: 0.3
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 4
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Low
+ pixelLightCount: 0
+ shadows: 0
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 20
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ blendWeights: 2
+ textureQuality: 0
+ anisotropicTextures: 0
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ vSyncCount: 0
+ lodBias: 0.4
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 16
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Medium
+ pixelLightCount: 1
+ shadows: 1
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 20
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ blendWeights: 2
+ textureQuality: 0
+ anisotropicTextures: 1
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ vSyncCount: 1
+ lodBias: 0.7
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 64
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: High
+ pixelLightCount: 2
+ shadows: 2
+ shadowResolution: 1
+ shadowProjection: 1
+ shadowCascades: 2
+ shadowDistance: 40
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ blendWeights: 2
+ textureQuality: 0
+ anisotropicTextures: 1
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ vSyncCount: 1
+ lodBias: 1
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 256
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Very High
+ pixelLightCount: 3
+ shadows: 2
+ shadowResolution: 2
+ shadowProjection: 1
+ shadowCascades: 2
+ shadowDistance: 70
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ blendWeights: 4
+ textureQuality: 0
+ anisotropicTextures: 2
+ antiAliasing: 2
+ softParticles: 1
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ vSyncCount: 1
+ lodBias: 1.5
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 1024
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Ultra
+ pixelLightCount: 4
+ shadows: 2
+ shadowResolution: 2
+ shadowProjection: 1
+ shadowCascades: 4
+ shadowDistance: 150
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ blendWeights: 4
+ textureQuality: 0
+ anisotropicTextures: 2
+ antiAliasing: 2
+ softParticles: 1
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ vSyncCount: 1
+ lodBias: 2
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 4096
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ m_PerPlatformDefaultQuality:
+ Android: 2
+ Lumin: 5
+ GameCoreScarlett: 5
+ GameCoreXboxOne: 5
+ Nintendo 3DS: 5
+ Nintendo Switch: 5
+ PS4: 5
+ PS5: 5
+ Stadia: 5
+ Standalone: 5
+ WebGL: 3
+ Windows Store Apps: 5
+ XboxOne: 5
+ iPhone: 2
+ tvOS: 2
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/SceneTemplateSettings.json b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/SceneTemplateSettings.json
new file mode 100644
index 0000000..5e97f83
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/SceneTemplateSettings.json
@@ -0,0 +1,121 @@
+{
+ "templatePinStates": [],
+ "dependencyTypeInfos": [
+ {
+ "userAdded": false,
+ "type": "UnityEngine.AnimationClip",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.Animations.AnimatorController",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.AnimatorOverrideController",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.Audio.AudioMixerController",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.ComputeShader",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Cubemap",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.GameObject",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.LightingDataAsset",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.LightingSettings",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Material",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.MonoScript",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.PhysicMaterial",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.PhysicsMaterial2D",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Rendering.VolumeProfile",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.SceneAsset",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Shader",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.ShaderVariantCollection",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Texture",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Texture2D",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Timeline.TimelineAsset",
+ "defaultInstantiationMode": 0
+ }
+ ],
+ "defaultDependencyTypeInfo": {
+ "userAdded": false,
+ "type": "",
+ "defaultInstantiationMode": 1
+ },
+ "newSceneOverride": 0
+}
\ No newline at end of file
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/TagManager.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/TagManager.asset
new file mode 100644
index 0000000..1c92a78
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/TagManager.asset
@@ -0,0 +1,43 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!78 &1
+TagManager:
+ serializedVersion: 2
+ tags: []
+ layers:
+ - Default
+ - TransparentFX
+ - Ignore Raycast
+ -
+ - Water
+ - UI
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ m_SortingLayers:
+ - name: Default
+ uniqueID: 0
+ locked: 0
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/TimeManager.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/TimeManager.asset
new file mode 100644
index 0000000..558a017
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/TimeManager.asset
@@ -0,0 +1,9 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!5 &1
+TimeManager:
+ m_ObjectHideFlags: 0
+ Fixed Timestep: 0.02
+ Maximum Allowed Timestep: 0.33333334
+ m_TimeScale: 1
+ Maximum Particle Timestep: 0.03
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/UnityConnectSettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/UnityConnectSettings.asset
new file mode 100644
index 0000000..a88bee0
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/UnityConnectSettings.asset
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!310 &1
+UnityConnectSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 1
+ m_Enabled: 0
+ m_TestMode: 0
+ m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
+ m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
+ m_ConfigUrl: https://config.uca.cloud.unity3d.com
+ m_DashboardUrl: https://dashboard.unity3d.com
+ m_TestInitMode: 0
+ CrashReportingSettings:
+ m_EventUrl: https://perf-events.cloud.unity3d.com
+ m_Enabled: 0
+ m_LogBufferSize: 10
+ m_CaptureEditorExceptions: 1
+ UnityPurchasingSettings:
+ m_Enabled: 0
+ m_TestMode: 0
+ UnityAnalyticsSettings:
+ m_Enabled: 0
+ m_TestMode: 0
+ m_InitializeOnStartup: 1
+ m_PackageRequiringCoreStatsPresent: 0
+ UnityAdsSettings:
+ m_Enabled: 0
+ m_InitializeOnStartup: 1
+ m_TestMode: 0
+ m_IosGameId:
+ m_AndroidGameId:
+ m_GameIds: {}
+ m_GameId:
+ PerformanceReportingSettings:
+ m_Enabled: 0
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/VFXManager.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/VFXManager.asset
new file mode 100644
index 0000000..3a95c98
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/VFXManager.asset
@@ -0,0 +1,12 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!937362698 &1
+VFXManager:
+ m_ObjectHideFlags: 0
+ m_IndirectShader: {fileID: 0}
+ m_CopyBufferShader: {fileID: 0}
+ m_SortShader: {fileID: 0}
+ m_StripUpdateShader: {fileID: 0}
+ m_RenderPipeSettingsPath:
+ m_FixedTimeStep: 0.016666668
+ m_MaxDeltaTime: 0.05
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/VersionControlSettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/VersionControlSettings.asset
new file mode 100644
index 0000000..dca2881
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/VersionControlSettings.asset
@@ -0,0 +1,8 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!890905787 &1
+VersionControlSettings:
+ m_ObjectHideFlags: 0
+ m_Mode: Visible Meta Files
+ m_CollabEditorSettings:
+ inProgressEnabled: 1
diff --git a/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/XRSettings.asset b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/XRSettings.asset
new file mode 100644
index 0000000..482590c
--- /dev/null
+++ b/unity-debug-adapter.E2ETests/unity_test_project_2022_3/ProjectSettings/XRSettings.asset
@@ -0,0 +1,10 @@
+{
+ "m_SettingKeys": [
+ "VR Device Disabled",
+ "VR Device User Alert"
+ ],
+ "m_SettingValues": [
+ "False",
+ "False"
+ ]
+}
\ No newline at end of file
diff --git a/unity-debug-adapter/ProtocolServer.cs b/unity-debug-adapter/ProtocolServer.cs
index d2e2e2f..71fe94f 100644
--- a/unity-debug-adapter/ProtocolServer.cs
+++ b/unity-debug-adapter/ProtocolServer.cs
@@ -100,7 +100,7 @@ private void ProcessData()
{
var buf = _rawData.RemoveFirst(_bodyLength);
string data = Encoding.UTF8.GetString(buf);
- Logger.LogTrace("received data: Content-Length: ({0})rnrn{{{1}}}", _bodyLength, data);
+ Logger.LogTrace("received data: Content-Length: {0}rnrn{1}", _bodyLength, data);
Dispatch(data);
_bodyLength = -1;
continue; // there may be more complete messages to process