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