diff --git a/.gitignore b/.gitignore index fd307324..a37e4f80 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ gmon.out .vsconfig Integration.uproject Integration.code-workspace +Integration.code-workspace.ubt Makefile *~ diff --git a/Integration.code-workspace.old b/Integration.code-workspace.old deleted file mode 100644 index 98d9d561..00000000 --- a/Integration.code-workspace.old +++ /dev/null @@ -1,868 +0,0 @@ -{ - "folders": [ - { - "name": "Integration", - "path": "." - }, - { - "name": "UE5", - "path": "/home/jyelon/UnrealEngine" - } - ], - "settings": { - "typescript.tsc.autoDetect": "off", - "npm.autoDetect": "off" - }, - "extensions": { - "recommendations": [ - "ms-vscode.cpptools", - "ms-dotnettools.csharp", - "vadimcn.vscode-lldb", - "ms-vscode.mono-debug", - "dfarley1.file-picker" - ] - }, - "tasks": { - "version": "2.0.0", - "tasks": [ - { - "label": "Integration Linux Debug Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Debug", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Debug Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Debug", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration Linux Debug Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Debug Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Debug", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux DebugGame Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "DebugGame", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux DebugGame Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "DebugGame", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration Linux DebugGame Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux DebugGame Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "DebugGame", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Development Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Development", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Development Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Development", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration Linux Development Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Development Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Development", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Test Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Test", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Test Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Test", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration Linux Test Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Test Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Test", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Shipping Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Shipping", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Shipping Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Shipping", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration Linux Shipping Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration Linux Shipping Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "Linux", - "Shipping", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Debug Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Debug", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Debug Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Debug", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration LinuxArm64 Debug Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Debug Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Debug", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 DebugGame Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "DebugGame", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 DebugGame Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "DebugGame", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration LinuxArm64 DebugGame Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 DebugGame Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "DebugGame", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Development Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Development", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Development Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Development", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration LinuxArm64 Development Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Development Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Development", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Test Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Test", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Test Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Test", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration LinuxArm64 Test Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Test Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Test", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Shipping Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Shipping", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Shipping Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Shipping", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "Integration LinuxArm64 Shipping Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "Integration LinuxArm64 Shipping Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "Integration", - "LinuxArm64", - "Shipping", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "IntegrationEditor Linux Debug Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "IntegrationEditor", - "Linux", - "Debug", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "IntegrationEditor Linux Debug Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "IntegrationEditor", - "Linux", - "Debug", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "IntegrationEditor Linux Debug Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "IntegrationEditor Linux Debug Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "IntegrationEditor", - "Linux", - "Debug", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "IntegrationEditor Linux DebugGame Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "IntegrationEditor", - "Linux", - "DebugGame", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "IntegrationEditor Linux DebugGame Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "IntegrationEditor", - "Linux", - "DebugGame", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "IntegrationEditor Linux DebugGame Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "IntegrationEditor Linux DebugGame Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "IntegrationEditor", - "Linux", - "DebugGame", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "IntegrationEditor Linux Development Build", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "IntegrationEditor", - "Linux", - "Development", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "IntegrationEditor Linux Development Rebuild", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "IntegrationEditor", - "Linux", - "Development", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex" - ], - "problemMatcher": "$msCompile", - "dependsOn": [ - "IntegrationEditor Linux Development Clean" - ], - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - }, - { - "label": "IntegrationEditor Linux Development Clean", - "group": "build", - "command": "Engine/Build/BatchFiles/Linux/Build.sh", - "args": [ - "IntegrationEditor", - "Linux", - "Development", - "/home/jyelon/integration/Integration.uproject", - "-waitmutex", - "-clean" - ], - "problemMatcher": "$msCompile", - "type": "shell", - "options": { - "cwd": "/home/jyelon/UnrealEngine" - } - } - ] - }, - "launch": { - "version": "0.2.0", - "configurations": [ - { - "name": "Launch Integration (Debug)", - "request": "launch", - "program": "/home/jyelon/integration/Binaries/Linux/Integration-Linux-Debug", - "preLaunchTask": "Integration Linux Debug Build", - "args": [ - ], - "cwd": "/home/jyelon/UnrealEngine", - "type": "cppdbg", - "visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis", - "showDisplayString": true - }, - { - "name": "Launch Integration (DebugGame)", - "request": "launch", - "program": "/home/jyelon/integration/Binaries/Linux/Integration-Linux-DebugGame", - "preLaunchTask": "Integration Linux DebugGame Build", - "args": [ - ], - "cwd": "/home/jyelon/UnrealEngine", - "type": "cppdbg", - "visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis", - "showDisplayString": true - }, - { - "name": "Launch Integration (Development)", - "request": "launch", - "program": "/home/jyelon/integration/Binaries/Linux/Integration", - "preLaunchTask": "Integration Linux Development Build", - "args": [ - ], - "cwd": "/home/jyelon/UnrealEngine", - "type": "cppdbg", - "visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis", - "showDisplayString": true - }, - { - "name": "Launch Integration (Test)", - "request": "launch", - "program": "/home/jyelon/integration/Binaries/Linux/Integration-Linux-Test", - "preLaunchTask": "Integration Linux Test Build", - "args": [ - ], - "cwd": "/home/jyelon/UnrealEngine", - "type": "cppdbg", - "visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis", - "showDisplayString": true - }, - { - "name": "Launch Integration (Shipping)", - "request": "launch", - "program": "/home/jyelon/integration/Binaries/Linux/Integration-Linux-Shipping", - "preLaunchTask": "Integration Linux Shipping Build", - "args": [ - ], - "cwd": "/home/jyelon/UnrealEngine", - "type": "cppdbg", - "visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis", - "showDisplayString": true - }, - { - "name": "Launch IntegrationEditor (Debug)", - "request": "launch", - "program": "/home/jyelon/UnrealEngine/Engine/Binaries/Linux/UnrealEditor-Linux-Debug", - "preLaunchTask": "IntegrationEditor Linux Debug Build", - "args": [ - "/home/jyelon/integration/Integration.uproject" - ], - "cwd": "/home/jyelon/UnrealEngine", - "type": "cppdbg", - "visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis", - "showDisplayString": true - }, - { - "name": "Launch IntegrationEditor (DebugGame)", - "request": "launch", - "program": "/home/jyelon/UnrealEngine/Engine/Binaries/Linux/UnrealEditor-Linux-DebugGame", - "preLaunchTask": "IntegrationEditor Linux DebugGame Build", - "args": [ - "/home/jyelon/integration/Integration.uproject" - ], - "cwd": "/home/jyelon/UnrealEngine", - "type": "cppdbg", - "visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis", - "showDisplayString": true - }, - { - "name": "Launch IntegrationEditor (Development)", - "request": "launch", - "program": "/home/jyelon/UnrealEngine/Engine/Binaries/Linux/UnrealEditor", - "preLaunchTask": "IntegrationEditor Linux Development Build", - "args": [ - "/home/jyelon/integration/Integration.uproject" - ], - "cwd": "/home/jyelon/UnrealEngine", - "type": "cppdbg", - "visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis", - "showDisplayString": true - }, - { - "name": "Generate Project Files", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "UnrealBuildTool Linux Development Build", - "program": "/home/jyelon/UnrealEngine/Engine/Build/BatchFiles/RunUBT.bat", - "args": [ - "-projectfiles", - "-vscode", - "-project=/home/jyelon/integration/Integration.uproject", - "-game", - "-engine", - "-dotnet" - ], - "console": "internalConsole", - "internalConsoleOptions": "openOnSessionStart", - "stopAtEntry": false, - "cwd": "/home/jyelon/UnrealEngine" - } - ] - } -} diff --git a/Integration.code-workspace.tpl.json b/Integration.code-workspace.tpl.json new file mode 100644 index 00000000..fc973cae --- /dev/null +++ b/Integration.code-workspace.tpl.json @@ -0,0 +1,107 @@ +{ + "macros": { + "macros-explanation" : [ + "We have written a simple macro preprocessor for json.", + "The following macros can be invoked from later in the json", + "file. The macro preprocessing is done as part of the", + "python script build-everything.py" + ], + "luprex-launch-config" : { + "name": "CONFIGNAME", + "request": "launch", + "program": "UE5/Engine/Binaries/Linux/UnrealEditor-Linux-DebugGame", + "preLaunchTask": "Make All", + "args": [ + "INTEGRATION/Integration.uproject", + "-userdir=User/USERNAME", + "-LuprexServer=SERVER" + ], + "cwd": "INTEGRATION", + "type": "lldb", + "initCommands": [ + "command script import UNREALENGINE/Engine/Extras/LLDBDataFormatters/UEDataFormatters_2ByteChars.py", + "settings set target.inline-breakpoint-strategy always", + "target stop-hook add --one-liner \"p ::UngrabAllInputImpl()\"" + ] + } + }, + "folders": [ + { + "name": "Integration", + "path": "INTEGRATION" + }, + { + "name": "UE5", + "path": "UNREALENGINE" + } + ], + "settings": { + "typescript.tsc.autoDetect": "off", + "lldb.dereferencePointers": false, + "npm.autoDetect": "off", + "files.watcherExclude": { + "UE5/Engine/**": true, + "UE5/Samples/**": true, + "UE5/Templates/**": true + }, + "files.associations": { + "**/include/**": "cpp", + "**/bits/**": "cpp", + "**/c++/**": "cpp", + "**/x86_64-linux-gnu/**": "cpp", + "*.ipp": "cpp", + "*.inc": "cpp" + } + }, + "extensions": { + "recommendations": [ + "vadimcn.vscode-lldb", + "dfarley1.file-picker", + "ms-python.python", + "ms-vscode.cpptools", + "ms-dotnettools.csharp", + "ms-vscode.mono-debug" + ] + }, + "tasks": { + "version": "2.0.0", + "tasks": [ + { + "label": "Make All", + "group": { + "kind": "build", + "isDefault": true + }, + "command": "make all", + "presentation": { + "clear": true + }, + "problemMatcher": "$msCompile", + "type": "shell" + }, + { + "label": "Make Clean", + "group": "build", + "command": "make clean", + "presentation": { + "clear": true + }, + "problemMatcher": "$msCompile", + "type": "shell" + } + ] + }, + "launch": { + "version": "0.2.0", + "configurations": [ + { + "macro": "luprex-launch-config", + "vars": {"CONFIGNAME":"Luprex Standalone", "SERVER":""} + }, + { + "macro": "luprex-launch-config", + "vars": {"CONFIGNAME":"Luprex Client", "SERVER":"192.168.0.100"} + } + ] + } +} \ No newline at end of file diff --git a/EnginePatches/uproject b/Integration.uproject.tpl.json similarity index 100% rename from EnginePatches/uproject rename to Integration.uproject.tpl.json diff --git a/Source/Integration/LuprexGameModeBase.cpp b/Source/Integration/LuprexGameModeBase.cpp index ada0939a..e120eb63 100644 --- a/Source/Integration/LuprexGameModeBase.cpp +++ b/Source/Integration/LuprexGameModeBase.cpp @@ -36,6 +36,10 @@ ALuprexGameModeBase::ALuprexGameModeBase() ResetToInitialState(); OnWorldPreActorTickHandle = FWorldDelegates::OnWorldPreActorTick.AddUObject(this, &ALuprexGameModeBase::OnWorldPreActorTick); OnWorldPostActorTickHandle = FWorldDelegates::OnWorldPostActorTick.AddUObject(this, &ALuprexGameModeBase::OnWorldPostActorTick); + + FString LuprexServer; + FParse::Value(FCommandLine::Get(), TEXT("-LuprexServer="), LuprexServer); + UE_LOG(LogTemp, Display, TEXT("LuprexServer = %s"), *LuprexServer) } ALuprexGameModeBase::~ALuprexGameModeBase() diff --git a/build-everything.py b/build-everything.py index a8b62497..2ba6a358 100755 --- a/build-everything.py +++ b/build-everything.py @@ -60,6 +60,69 @@ def shell(dir, cmd): print("Running:", cmd) subprocess.run(cmd, shell=True, check=True, cwd=dir) +# +# This is the code for a simple json macro preprocessor. +# It is used to write json files containing macros, which can +# then be macroexpanded later in the json file. The json +# file should have a 'macros' section at the top level. +# + +def replace_strings_recursively(template, variables): + if isinstance(template, str): + # Then apply macro-local substitutions + for key, value in variables.items(): + template = template.replace(key, str(value)) + return template + elif isinstance(template, list): + return [replace_strings_recursively(item, variables) for item in template] + elif isinstance(template, dict): + return {k: replace_strings_recursively(v, variables) for k, v in template.items()} + else: + return template + + +def macroexpand_json_recursively(data, macros): + if isinstance(data, dict): + if "macro" in data and "vars" in data: + macro_name = data["macro"] + variables = data["vars"] + base_macro = macros[macro_name] + expanded = replace_strings_recursively(base_macro, variables) + return macroexpand_json_recursively(expanded, macros) + else: + return { + key: macroexpand_json_recursively(value, macros) + for key, value in data.items() + } + elif isinstance(data, list): + return [macroexpand_json_recursively(item, macros) for item in data] + else: + return data + + +def macroexpand_json(source_filename, output_filename, globals): + """ + Load JSON from `source_filename`, perform macro expansion using any + macros defined in the "macros" block, and write the expanded JSON to + `output_filename`. Global variables are passed as a Python dict. + """ + # Load the input template + with open(source_filename, "r") as f: + data = json.load(f) + + # Extract and remove macros + macros = data.pop("macros", {}) + + # Expand macros + expanded = macroexpand_json_recursively(data, macros) + + # Expand global variables + expanded2 = replace_strings_recursively(expanded, globals) + + # Write output + with open(output_filename, "w") as f: + json.dump(expanded2, f, indent=4) + # # Find the two repositories and verify them. # @@ -72,6 +135,12 @@ if not os.path.isdir(f"{INTEGRATION}/Source/Integration"): if not os.path.isdir(f"{UNREALENGINE}/Engine/Source/Editor"): sys.exit(f"Integration repository is not valid: {UNREALENGINE}") +JSONGLOBALS= { + "INTEGRATION": INTEGRATION, + "UNREALENGINE": UNREALENGINE, + "USERNAME": USER, +} + # # Create the Saved/UnrealBuildTool directories. These will hold # the file BuildConfiguration.xml @@ -118,19 +187,21 @@ writefile(f"{INTEGRATION}/Source/Integration/lpx-paths.hpp", f""" # print("Applying patch to Unreal Engine...") +PATCHED_FILES = [] for line in readfile(f"{INTEGRATION}/EnginePatches/EnginePatch").splitlines(): if line.startswith("--- a/"): - shell(UNREALENGINE, f"git checkout HEAD {line[6:]}") + PATCHED_FILES.append(line[6:]) +if PATCHED_FILES: + shell(UNREALENGINE, "git checkout HEAD -- " + " ".join(PATCHED_FILES)) shell(UNREALENGINE, f"git apply {INTEGRATION}/EnginePatches/EnginePatch") # # Write Integration.uproject. # -UPROJECTTEMPLATE=readfile(f"{INTEGRATION}/EnginePatches/uproject") -UPROJECT=json.loads(UPROJECTTEMPLATE) -with open(f"{INTEGRATION}/Integration.uproject", "w") as rewritten: - json.dump(UPROJECT, rewritten, indent=4) +macroexpand_json(f"{INTEGRATION}/Integration.uproject.tpl.json", + f"{INTEGRATION}/Integration.uproject", + JSONGLOBALS) # # Run Setup.sh in UNREALENGINE @@ -138,17 +209,6 @@ with open(f"{INTEGRATION}/Integration.uproject", "w") as rewritten: shell(UNREALENGINE, f"{UNREALENGINE}/Setup.{BAT}") -# -# Use UnrealBuildTool to generate a rough draft of Integration.code-workspace. -# We're not going to use it, but we set it aside as a reference that you can -# study to make changes to this script. -# - -Path(f"{INTEGRATION}/Integration.code-workspace").unlink(missing_ok=True) -Path(f"{INTEGRATION}/Integration.code-workspace.old").unlink(missing_ok=True) -shell(INTEGRATION, f'{UNREALENGINE}/GenerateProjectFiles.{BAT} -projectfiles -project="{INTEGRATION}/Integration.uproject" -game') -Path(f"{INTEGRATION}/Integration.code-workspace").rename(f"{INTEGRATION}/Integration.code-workspace.old") - # # Create a trivial makefile that calls into the unreal build system. # @@ -166,135 +226,24 @@ clean: """) # -# Build our own Integration.code-workspace from scratch. +# Use UnrealBuildTool to generate Integration.code-workspace.ubt # +# We're not going to use it, but we keep it as a reference that you can +# use when editing Integration.workspace-template. +# -WORKSPACE={} - -WORKSPACE["folders"] = [] -WORKSPACE["folders"].append({ "name": "Integration", "path": "." }) -WORKSPACE["folders"].append({ "name": "UE5", "path": UNREALENGINE }) - -WORKSPACE["settings"] = {} -WORKSPACE["settings"]["typescript.tsc.autoDetect"] = "off" -WORKSPACE["settings"]["lldb.dereferencePointers"] = False -WORKSPACE["settings"]["npm.autoDetect"] = "off" - -WORKSPACE["settings"]["files.watcherExclude"] = {} -WORKSPACE["settings"]["files.watcherExclude"]["/home/jyelon/UnrealEngine/Engine/**"] = True -WORKSPACE["settings"]["files.watcherExclude"]["/home/jyelon/UnrealEngine/Samples/**"] = True -WORKSPACE["settings"]["files.watcherExclude"]["/home/jyelon/UnrealEngine/Templates/**"] = True -WORKSPACE["settings"]["files.associations"] = { - "*.ipp": "cpp", - "locale": "cpp", - "random": "cpp", - "queue": "cpp", - "stack": "cpp", - "__locale": "cpp", - "functional": "cpp", - "sstream": "cpp", - "regex": "cpp", - "*.inc": "cpp", - "strstream": "cpp", - "string_view": "cpp", - "typeindex": "cpp", - "typeinfo": "cpp", - "scoped_allocator": "cpp", - "array": "cpp", - "hash_map": "cpp", - "hash_set": "cpp", - "bitset": "cpp", - "slist": "cpp", - "initializer_list": "cpp", - "valarray": "cpp", - "__hash_table": "cpp", - "__split_buffer": "cpp", - "__tree": "cpp", - "deque": "cpp", - "list": "cpp", - "map": "cpp", - "set": "cpp", - "span": "cpp", - "string": "cpp", - "unordered_map": "cpp", - "unordered_set": "cpp", - "vector": "cpp", - "ranges": "cpp", - "utility": "cpp", - "ratio": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "__bit_reference": "cpp", - "__node_handle": "cpp", - "atomic": "cpp", - "__memory": "cpp", - "limits": "cpp", - "optional": "cpp", - "variant": "cpp" -} - -WORKSPACE["extensions"] = {} -WORKSPACE["extensions"]["recommendations"] = [ - "vadimcn.vscode-lldb", - "dfarley1.file-picker", - "ms-python.python", - "ms-vscode.cpptools", - "ms-dotnettools.csharp", - "ms-vscode.mono-debug" -] - - -WORKSPACE["tasks"] = {} -WORKSPACE["tasks"]["version"] = "2.0.0" -WORKSPACE["tasks"]["tasks"] = [] -WORKSPACE["tasks"]["tasks"].append({ - "label": "Make All", - "group": { "kind": "build", "isDefault": True }, - "command": "make all", - "presentation" : { "clear" : True }, - "problemMatcher": "$msCompile", - "type": "shell", - }) - -WORKSPACE["tasks"]["tasks"].append({ - "label": "Make Clean", - "group": "build", - "command": "make clean", - "presentation" : { "clear" : True }, - "problemMatcher": "$msCompile", - "type": "shell", - }) - - -WORKSPACE["launch"] = {} -WORKSPACE["launch"]["version"] = "0.2.0" -WORKSPACE["launch"]["configurations"] = [] -WORKSPACE["launch"]["configurations"].append({ - "name": "Launch Editor with Luprex", - "request": "launch", - "program": f"{UNREALENGINE}/Engine/Binaries/Linux/UnrealEditor-Linux-DebugGame", - "preLaunchTask": "Make All", - "args": [ - f"{INTEGRATION}/Integration.uproject", - "-userdir=User/jyelon" - ], - "cwd": UNREALENGINE, - "type": "lldb", - "initCommands": [ - f"command script import {UNREALENGINE}/Engine/Extras/LLDBDataFormatters/UEDataFormatters_2ByteChars.py", - "settings set target.inline-breakpoint-strategy always", - "target stop-hook add --one-liner \"p ::UngrabAllInputImpl()\"" - ] - }) - +Path(f"{INTEGRATION}/Integration.code-workspace").unlink(missing_ok=True) +Path(f"{INTEGRATION}/Integration.code-workspace.ubt").unlink(missing_ok=True) +shell(INTEGRATION, f'{UNREALENGINE}/GenerateProjectFiles.{BAT} -projectfiles -project="{INTEGRATION}/Integration.uproject" -game') +Path(f"{INTEGRATION}/Integration.code-workspace").rename(f"{INTEGRATION}/Integration.code-workspace.ubt") # -# Write Integration.code-workspace. +# Build Integration.code-workspace from Integration.workspace-template. # -with open(f"{INTEGRATION}/Integration.code-workspace", "w") as rewritten: - json.dump(WORKSPACE, rewritten, indent=4) +macroexpand_json(f"{INTEGRATION}/Integration.code-workspace.tpl.json", + f"{INTEGRATION}/Integration.code-workspace", + JSONGLOBALS) # # Do an initial build of Luprex