Compare commits

...

6 Commits

Author SHA1 Message Date
1b44322325 wrestle with writing to sim 2025-05-13 21:22:39 +01:00
1ae087703d sync simulator state with widget 2025-05-13 19:02:41 +01:00
042fa652b7 0.1x developer 2025-05-12 21:40:39 +01:00
68dbce9607 FUCK vscode 2025-05-11 20:53:44 +01:00
3b36a1f6a7 okey-dokey 2025-05-10 21:31:54 +01:00
2c987be672 working float verification 2025-05-10 13:11:24 +01:00
28 changed files with 581 additions and 715 deletions

View File

@ -23,3 +23,4 @@ PackConstructorInitializers: Never
PointerAlignment: Middle
QualifierAlignment: Right
ShortNamespaceLines: 0
SortIncludes: Never

91
.editorconfig Normal file
View File

@ -0,0 +1,91 @@
[*.{cpp,h}]
# Naming convention rules (note: currently need to be ordered from more to less specific)
cpp_naming_rule.aactor_prefixed.symbols = aactor_class
cpp_naming_rule.aactor_prefixed.style = aactor_style
cpp_naming_rule.swidget_prefixed.symbols = swidget_class
cpp_naming_rule.swidget_prefixed.style = swidget_style
cpp_naming_rule.uobject_prefixed.symbols = uobject_class
cpp_naming_rule.uobject_prefixed.style = uobject_style
cpp_naming_rule.booleans_prefixed.symbols = boolean_vars
cpp_naming_rule.booleans_prefixed.style = boolean_style
cpp_naming_rule.structs_prefixed.symbols = structs
cpp_naming_rule.structs_prefixed.style = unreal_engine_structs
cpp_naming_rule.enums_prefixed.symbols = enums
cpp_naming_rule.enums_prefixed.style = unreal_engine_enums
cpp_naming_rule.templates_prefixed.symbols = templates
cpp_naming_rule.templates_prefixed.style = unreal_engine_templates
cpp_naming_rule.general_names.symbols = all_symbols
cpp_naming_rule.general_names.style = unreal_engine_default
# Naming convention symbols
cpp_naming_symbols.aactor_class.applicable_kinds = class
cpp_naming_symbols.aactor_class.applicable_type = AActor
cpp_naming_symbols.swidget_class.applicable_kinds = class
cpp_naming_symbols.swidget_class.applicable_type = SWidget
cpp_naming_symbols.uobject_class.applicable_kinds = class
cpp_naming_symbols.uobject_class.applicable_type = UObject
cpp_naming_symbols.boolean_vars.applicable_kinds = local,parameter,field
cpp_naming_symbols.boolean_vars.applicable_type = bool
cpp_naming_symbols.enums.applicable_kinds = enum
cpp_naming_symbols.templates.applicable_kinds = template_class
cpp_naming_symbols.structs.applicable_kinds = struct
cpp_naming_symbols.all_symbols.applicable_kinds = *
# Naming convention styles
cpp_naming_style.unreal_engine_default.capitalization = pascal_case
cpp_naming_style.unreal_engine_default.required_prefix =
cpp_naming_style.unreal_engine_default.required_suffix =
cpp_naming_style.unreal_engine_default.word_separator =
cpp_naming_style.unreal_engine_enums.capitalization = pascal_case
cpp_naming_style.unreal_engine_enums.required_prefix = E
cpp_naming_style.unreal_engine_enums.required_suffix =
cpp_naming_style.unreal_engine_enums.word_separator =
cpp_naming_style.unreal_engine_templates.capitalization = pascal_case
cpp_naming_style.unreal_engine_templates.required_prefix = T
cpp_naming_style.unreal_engine_templates.required_suffix =
cpp_naming_style.unreal_engine_templates.word_separator =
cpp_naming_style.unreal_engine_structs.capitalization = pascal_case
cpp_naming_style.unreal_engine_structs.required_prefix = F
cpp_naming_style.unreal_engine_structs.required_suffix =
cpp_naming_style.unreal_engine_structs.word_separator =
cpp_naming_style.uobject_style.capitalization = pascal_case
cpp_naming_style.uobject_style.required_prefix = U
cpp_naming_style.uobject_style.required_suffix =
cpp_naming_style.uobject_style.word_separator =
cpp_naming_style.aactor_style.capitalization = pascal_case
cpp_naming_style.aactor_style.required_prefix = A
cpp_naming_style.aactor_style.required_suffix =
cpp_naming_style.aactor_style.word_separator =
cpp_naming_style.swidget_style.capitalization = pascal_case
cpp_naming_style.swidget_style.required_prefix = S
cpp_naming_style.swidget_style.required_suffix =
cpp_naming_style.swidget_style.word_separator =
cpp_naming_style.boolean_style.capitalization = pascal_case
cpp_naming_style.boolean_style.required_prefix = b
cpp_naming_style.boolean_style.required_suffix =
cpp_naming_style.boolean_style.word_separator =

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "Plugins/hstherac25/Source/hstherac-hs"]
path = Plugins/hstherac25/Source/hstherac-hs
url = git@github.com:pillowtrucker/hstherac25.git

View File

@ -5,3 +5,5 @@
/DerivedDataCache
/Intermediate
/Saved
/Plugins/hstherac25/Content
/Plugins/hstherac25/Intermediate

15
.vsconfig Normal file
View File

@ -0,0 +1,15 @@
{
"version": "1.0",
"components": [
"Microsoft.Net.Component.4.6.2.TargetingPack",
"Microsoft.VisualStudio.Component.Unreal.Workspace",
"Microsoft.VisualStudio.Component.VC.14.38.17.8.ATL",
"Microsoft.VisualStudio.Component.VC.14.38.17.8.x86.x64",
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
"Microsoft.VisualStudio.Component.Windows11SDK.22621",
"Microsoft.VisualStudio.Workload.CoreEditor",
"Microsoft.VisualStudio.Workload.ManagedDesktop",
"Microsoft.VisualStudio.Workload.NativeDesktop",
"Microsoft.VisualStudio.Workload.NativeGame"
]
}

BIN
Content/LinacLab/MyMyUserWidget.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/LinacLab/vt100_Blueprint.uasset (Stored with Git LFS)

Binary file not shown.

View File

@ -1,627 +0,0 @@
{
"folders": [
{
"name": "MyProject",
"path": "."
},
{
"name": "UE5",
"path": "D:\\Epic Games\\UE_5.5"
}
],
"settings": {
"typescript.tsc.autoDetect": "off",
"npm.autoDetect": "off",
"terminal.integrated.env.windows": {
"PATH": "D:\\Epic Games\\UE_5.5\\Engine\\Binaries\\ThirdParty\\DotNet\\8.0.300\\win-x64;${env:PATH}",
"DOTNET_ROOT": "D:\\Epic Games\\UE_5.5\\Engine\\Binaries\\ThirdParty\\DotNet\\8.0.300\\win-x64",
"DOTNET_HOST_PATH": "D:\\Epic Games\\UE_5.5\\Engine\\Binaries\\ThirdParty\\DotNet\\8.0.300\\win-x64\\dotnet.exe",
"DOTNET_MULTILEVEL_LOOKUP": "0",
"DOTNET_ROLL_FORWARD": "LatestMajor"
}
},
"extensions": {
"recommendations": [
"ms-vscode.cpptools",
"ms-dotnettools.csharp"
]
},
"tasks": {
"version": "2.0.0",
"tasks": [
{
"label": "MyProject Win64 Debug Build",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"Debug",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Debug Rebuild",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"Debug",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"MyProject Win64 Debug Clean"
],
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Debug Clean",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Clean.bat",
"args": [
"MyProject",
"Win64",
"Debug",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 DebugGame Build",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"DebugGame",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 DebugGame Rebuild",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"DebugGame",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"MyProject Win64 DebugGame Clean"
],
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 DebugGame Clean",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Clean.bat",
"args": [
"MyProject",
"Win64",
"DebugGame",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Development Build",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"Development",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Development Rebuild",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"Development",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"MyProject Win64 Development Clean"
],
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Development Clean",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Clean.bat",
"args": [
"MyProject",
"Win64",
"Development",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Test Build",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"Test",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Test Rebuild",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"Test",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"MyProject Win64 Test Clean"
],
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Test Clean",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Clean.bat",
"args": [
"MyProject",
"Win64",
"Test",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Shipping Build",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"Shipping",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Shipping Rebuild",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProject",
"Win64",
"Shipping",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"MyProject Win64 Shipping Clean"
],
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProject Win64 Shipping Clean",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Clean.bat",
"args": [
"MyProject",
"Win64",
"Shipping",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProjectEditor Win64 Debug Build",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProjectEditor",
"Win64",
"Debug",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProjectEditor Win64 Debug Rebuild",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProjectEditor",
"Win64",
"Debug",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"MyProjectEditor Win64 Debug Clean"
],
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProjectEditor Win64 Debug Clean",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Clean.bat",
"args": [
"MyProjectEditor",
"Win64",
"Debug",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProjectEditor Win64 DebugGame Build",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProjectEditor",
"Win64",
"DebugGame",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProjectEditor Win64 DebugGame Rebuild",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProjectEditor",
"Win64",
"DebugGame",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"MyProjectEditor Win64 DebugGame Clean"
],
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProjectEditor Win64 DebugGame Clean",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Clean.bat",
"args": [
"MyProjectEditor",
"Win64",
"DebugGame",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProjectEditor Win64 Development Build",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProjectEditor",
"Win64",
"Development",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProjectEditor Win64 Development Rebuild",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Build.bat",
"args": [
"MyProjectEditor",
"Win64",
"Development",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"MyProjectEditor Win64 Development Clean"
],
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
},
{
"label": "MyProjectEditor Win64 Development Clean",
"group": "build",
"command": "Engine\\Build\\BatchFiles\\Clean.bat",
"args": [
"MyProjectEditor",
"Win64",
"Development",
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "D:\\Epic Games\\UE_5.5"
}
}
]
},
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Launch MyProject (Debug)",
"request": "launch",
"program": "C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\Binaries\\Win64\\UnrealGame-Win64-Debug.exe",
"preLaunchTask": "MyProject Win64 Debug Build",
"args": [
],
"cwd": "D:\\Epic Games\\UE_5.5",
"stopAtEntry": false,
"console": "integratedTerminal",
"type": "cppvsdbg",
"visualizerFile": "D:\\Epic Games\\UE_5.5\\Engine\\Extras\\VisualStudioDebugging\\Unreal.natvis",
"sourceFileMap": {
"D:\\build\\++UE5\\Sync": "D:\\Epic Games\\UE_5.5"
}
},
{
"name": "Launch MyProject (DebugGame)",
"request": "launch",
"program": "C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\Binaries\\Win64\\UnrealGame-Win64-DebugGame.exe",
"preLaunchTask": "MyProject Win64 DebugGame Build",
"args": [
],
"cwd": "D:\\Epic Games\\UE_5.5",
"stopAtEntry": false,
"console": "integratedTerminal",
"type": "cppvsdbg",
"visualizerFile": "D:\\Epic Games\\UE_5.5\\Engine\\Extras\\VisualStudioDebugging\\Unreal.natvis",
"sourceFileMap": {
"D:\\build\\++UE5\\Sync": "D:\\Epic Games\\UE_5.5"
}
},
{
"name": "Launch MyProject (Development)",
"request": "launch",
"program": "C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\Binaries\\Win64\\UnrealGame.exe",
"preLaunchTask": "MyProject Win64 Development Build",
"args": [
],
"cwd": "D:\\Epic Games\\UE_5.5",
"stopAtEntry": false,
"console": "integratedTerminal",
"type": "cppvsdbg",
"visualizerFile": "D:\\Epic Games\\UE_5.5\\Engine\\Extras\\VisualStudioDebugging\\Unreal.natvis",
"sourceFileMap": {
"D:\\build\\++UE5\\Sync": "D:\\Epic Games\\UE_5.5"
}
},
{
"name": "Launch MyProject (Test)",
"request": "launch",
"program": "C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\Binaries\\Win64\\UnrealGame-Win64-Test.exe",
"preLaunchTask": "MyProject Win64 Test Build",
"args": [
],
"cwd": "D:\\Epic Games\\UE_5.5",
"stopAtEntry": false,
"console": "integratedTerminal",
"type": "cppvsdbg",
"visualizerFile": "D:\\Epic Games\\UE_5.5\\Engine\\Extras\\VisualStudioDebugging\\Unreal.natvis",
"sourceFileMap": {
"D:\\build\\++UE5\\Sync": "D:\\Epic Games\\UE_5.5"
}
},
{
"name": "Launch MyProject (Shipping)",
"request": "launch",
"program": "C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\Binaries\\Win64\\UnrealGame-Win64-Shipping.exe",
"preLaunchTask": "MyProject Win64 Shipping Build",
"args": [
],
"cwd": "D:\\Epic Games\\UE_5.5",
"stopAtEntry": false,
"console": "integratedTerminal",
"type": "cppvsdbg",
"visualizerFile": "D:\\Epic Games\\UE_5.5\\Engine\\Extras\\VisualStudioDebugging\\Unreal.natvis",
"sourceFileMap": {
"D:\\build\\++UE5\\Sync": "D:\\Epic Games\\UE_5.5"
}
},
{
"name": "Launch MyProjectEditor (Debug)",
"request": "launch",
"program": "D:\\Epic Games\\UE_5.5\\Engine\\Binaries\\Win64\\UnrealEditor-Win64-Debug.exe",
"preLaunchTask": "MyProjectEditor Win64 Debug Build",
"args": [
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject"
],
"cwd": "D:\\Epic Games\\UE_5.5",
"stopAtEntry": false,
"console": "integratedTerminal",
"type": "cppvsdbg",
"visualizerFile": "D:\\Epic Games\\UE_5.5\\Engine\\Extras\\VisualStudioDebugging\\Unreal.natvis",
"sourceFileMap": {
"D:\\build\\++UE5\\Sync": "D:\\Epic Games\\UE_5.5"
}
},
{
"name": "Launch MyProjectEditor (DebugGame)",
"request": "launch",
"program": "D:\\Epic Games\\UE_5.5\\Engine\\Binaries\\Win64\\UnrealEditor-Win64-DebugGame.exe",
"preLaunchTask": "MyProjectEditor Win64 DebugGame Build",
"args": [
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject"
],
"cwd": "D:\\Epic Games\\UE_5.5",
"stopAtEntry": false,
"console": "integratedTerminal",
"type": "cppvsdbg",
"visualizerFile": "D:\\Epic Games\\UE_5.5\\Engine\\Extras\\VisualStudioDebugging\\Unreal.natvis",
"sourceFileMap": {
"D:\\build\\++UE5\\Sync": "D:\\Epic Games\\UE_5.5"
}
},
{
"name": "Launch MyProjectEditor (Development)",
"request": "launch",
"program": "D:\\Epic Games\\UE_5.5\\Engine\\Binaries\\Win64\\UnrealEditor.exe",
"preLaunchTask": "MyProjectEditor Win64 Development Build",
"args": [
"C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject"
],
"cwd": "D:\\Epic Games\\UE_5.5",
"stopAtEntry": false,
"console": "integratedTerminal",
"type": "cppvsdbg",
"visualizerFile": "D:\\Epic Games\\UE_5.5\\Engine\\Extras\\VisualStudioDebugging\\Unreal.natvis",
"sourceFileMap": {
"D:\\build\\++UE5\\Sync": "D:\\Epic Games\\UE_5.5"
}
},
{
"name": "Generate Project Files",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "UnrealBuildTool Win64 Development Build",
"program": "D:\\Epic Games\\UE_5.5\\Engine\\Build\\BatchFiles\\RunUBT.bat",
"args": [
"-projectfiles",
"-vscode",
"-project=C:\\Users\\wonky\\Documents\\Unreal Projects\\MyProject\\MyProject.uproject",
"-game",
"-engine",
"-dotnet"
],
"env": {
"PATH": "D:\\Epic Games\\UE_5.5\\Engine\\Binaries\\ThirdParty\\DotNet\\8.0.300\\win-x64;${env:PATH}",
"DOTNET_ROOT": "D:\\Epic Games\\UE_5.5\\Engine\\Binaries\\ThirdParty\\DotNet\\8.0.300\\win-x64",
"DOTNET_HOST_PATH": "D:\\Epic Games\\UE_5.5\\Engine\\Binaries\\ThirdParty\\DotNet\\8.0.300\\win-x64\\dotnet.exe",
"DOTNET_MULTILEVEL_LOOKUP": "0",
"DOTNET_ROLL_FORWARD": "LatestMajor"
},
"console": "integratedTerminal",
"stopAtEntry": false,
"cwd": "D:\\Epic Games\\UE_5.5"
}
]
}
}

View File

@ -7,20 +7,13 @@
{
"Name": "MyProject",
"Type": "Runtime",
"LoadingPhase": "Default",
"AdditionalDependencies": [
"UMG",
"Engine"
]
"LoadingPhase": "Default"
}
],
"Plugins": [
{
"Name": "ModelingToolsEditorMode",
"Enabled": true,
"TargetAllowList": [
"Editor"
]
"Enabled": true
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,69 @@
#pragma once
#include <HsFFI.h>
typedef enum ExtCallType {
CheekyPadding,
ExtCallSendMEOS,
ExtCallToggleDatentComplete,
ExtCallToggleEditingTakingPlace,
ExtCallReset,
ExtCallProceed
} ExtCallType;
typedef enum BeamType {
BTCheekyPadding,
BeamTypeXRay,
BeamTypeElectron,
BeamTypeUndefined
} BeamType;
typedef enum CollimatorPosition {
CPCheekyPadding,
CollimatorPositionXRay,
CollimatorPositionElectronBeam,
CollimatorPositionUndefined
} CollimatorPosition;
typedef enum StateInfoRequest {
SIRCheekyPadding,
RequestTreatmentOutcome,
RequestActiveSubsystem,
RequestTreatmentState,
RequestReason,
RequestBeamMode,
RequestBeamEnergy
} StateInfoRequest;
#ifdef __cplusplus
extern "C" { // only need to export C interface if
// used by C++ source code
#endif
#if mingw32_HOST_OS || _WIN32
__declspec(dllexport) HsStablePtr start_machine();
__declspec(dllexport) void kill_machine();
__declspec(dllexport) void wrap_external_call(
HsStablePtr wrapped_comms,
ExtCallType ext_call_type,
BeamType beam_type,
CollimatorPosition collimator_position,
HsInt beam_energy
);
__declspec(dllexport) HsPtr request_state_info(
HsStablePtr wrapped_comms,
StateInfoRequest state_info_request
);
#else
HsStablePtr start_machine();
void kill_machine();
void wrap_external_call(
HsStablePtr wrapped_comms,
ExtCallType ext_call_type,
BeamType beam_type,
CollimatorPosition collimator_position,
HsInt beam_energy
);
HsPtr request_state_info(
HsStablePtr wrapped_comms,
StateInfoRequest state_info_request
);
#endif
#ifdef __cplusplus
}
#endif

View File

@ -0,0 +1,91 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "TheracAdapterComponent.h"
#include "HAL/PlatformProcess.h"
#include "Interfaces/IPluginManager.h"
#include "Misc/Paths.h"
#include <Internationalization/Internationalization.h>
#include <Internationalization/Text.h>
#include <Misc/MessageDialog.h>
#include <Therac.h>
#include <map>
#include <Logging/StructuredLog.h>
#define LOCTEXT_NAMESPACE "TheracAdapter"
// Sets default values for this component's properties
UTheracAdapterComponent::UTheracAdapterComponent() {
// Set this component to be initialized when the game starts, and to be ticked
// every frame. You can turn these features off to improve performance if you
// don't need them.
PrimaryComponentTick.bCanEverTick = true;
// ...
}
void UTheracAdapterComponent::UpdateSimulator(
ExtCallType ect,
HsStablePtr wrapped_comms,
BeamType beam_type,
CollimatorPosition collimator_position,
HsInt beam_energy
) {
if (wrapped_comms == nullptr)
wrapped_comms = wrappedComms;
wrap_external_call(
wrapped_comms,
ect,
beam_type,
collimator_position,
beam_energy
);
}
// Called when the game starts
void UTheracAdapterComponent::BeginPlay() {
/*
FString BaseDir =
IPluginManager::Get().FindPlugin("hstherac25")->GetBaseDir();
FString LibraryPath =
FPaths::Combine(*BaseDir, TEXT("Source/hstherac-hs/HSdll.dll"));
auto simulatorLibraryHandle =
!LibraryPath.IsEmpty() ? FPlatformProcess::GetDllHandle(*LibraryPath)
: nullptr;
*/
Super::BeginPlay();
wrappedComms = start_machine();
std::map<FText *, StateInfoRequest> hng = {
{&TreatmentOutcome, RequestTreatmentOutcome},
{&ActiveSubsystem, RequestActiveSubsystem},
{&TreatmentState, RequestTreatmentState},
{&Reason, RequestReason},
{&BeamMode, RequestBeamMode},
{&BeamEnergy, RequestBeamEnergy}
};
for (auto & [hnng, hnnng] : hng) {
compMap.Add(hnng, hnnng);
}
// ...
}
// Called every frame
void UTheracAdapterComponent::TickComponent(
float DeltaTime,
ELevelTick TickType,
FActorComponentTickFunction * ThisTickFunction
) {
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
auto rsi = [&](FText * f) {
return FText::FromString(
StaticCast<char *>(request_state_info(wrappedComms, *compMap.Find(f)))
);
};
for (auto & [f, _] : compMap) {
// UE_LOGFMT(LogTemp, Warning, "what {dildo}", rsi(f).ToString());
*f = rsi(f);
}
}

View File

@ -0,0 +1,72 @@
// Copyright Epic Games, Inc. All Rights Reserved.
#include "hstherac25.h"
#include "HAL/PlatformProcess.h"
#include "Interfaces/IPluginManager.h"
#include "Misc/MessageDialog.h"
#include "Misc/Paths.h"
#include "Modules/ModuleManager.h"
#include "Therac.h"
#define LOCTEXT_NAMESPACE "Fhstherac25Module"
void Fhstherac25Module::StartupModule() {
// This code will execute after your module is loaded into memory; the exact
// timing is specified in the .uplugin file per-module
// Get the base directory of this plugin
FString BaseDir =
IPluginManager::Get().FindPlugin("hstherac25")->GetBaseDir();
// Add on the relative location of the third party dll and load it
FString LibraryPath;
#if PLATFORM_WINDOWS
LibraryPath = FPaths::Combine(*BaseDir, TEXT("Source/hstherac-hs/HSdll.dll"));
#elif PLATFORM_MAC
LibraryPath = FPaths::Combine(
*BaseDir,
TEXT("Source/ThirdParty/hstherac25Library/Mac/Release/"
"libExampleLibrary.dylib")
);
#elif PLATFORM_LINUX
LibraryPath = FPaths::Combine(
*BaseDir,
TEXT("Binaries/ThirdParty/hstherac25Library/Linux/"
"x86_64-unknown-linux-gnu/libExampleLibrary.so")
);
#endif // PLATFORM_WINDOWS
simulatorLibraryHandle = !LibraryPath.IsEmpty()
? FPlatformProcess::GetDllHandle(*LibraryPath)
: nullptr;
if (simulatorLibraryHandle) {
// Call the test function in the third party library that opens a message
// box
// ExampleLibraryFunction();
// HsStablePtr wc = start_machine();
} else {
FMessageDialog::Open(
EAppMsgType::Ok,
LOCTEXT(
"ThirdPartyLibraryError",
"Failed to load example third party library"
)
);
}
}
void Fhstherac25Module::ShutdownModule() {
// This function may be called during shutdown to clean up your module. For
// modules that support dynamic reloading, we call this function before
// unloading the module.
// Free the dll handle
FPlatformProcess::FreeDllHandle(simulatorLibraryHandle);
simulatorLibraryHandle = nullptr;
}
#undef LOCTEXT_NAMESPACE
IMPLEMENT_MODULE(Fhstherac25Module, hstherac25)

View File

@ -0,0 +1,68 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "Components/ActorComponent.h"
#include "CoreMinimal.h"
#include <HsFFI.h>
#include <Therac.h>
#include <Internationalization/Text.h>
#include "TheracAdapterComponent.generated.h"
UCLASS(
BlueprintType,
ClassGroup = (Custom),
meta = (BlueprintSpawnableComponent)
)
class HSTHERAC25_API UTheracAdapterComponent : public UActorComponent {
GENERATED_BODY()
HsStablePtr wrappedComms;
TMap<FText *, StateInfoRequest> compMap;
public:
// Sets default values for this component's properties
UTheracAdapterComponent();
UPROPERTY(BlueprintReadOnly, VisibleAnywhere)
FText TreatmentOutcome;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere)
FText ActiveSubsystem;
// TPhase
UPROPERTY(BlueprintReadOnly, VisibleAnywhere)
FText TreatmentState;
// TreatmentOutcome
UPROPERTY(BlueprintReadOnly, VisibleAnywhere)
FText Reason;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere)
FText BeamMode;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere)
FText BeamEnergy;
void UpdateSimulator(
ExtCallType ect,
HsStablePtr wrapped_comms = nullptr,
BeamType beam_type = BeamTypeUndefined,
CollimatorPosition collimator_position = CollimatorPositionUndefined,
HsInt beam_energy = 25000
);
protected:
// Called when the game starts
virtual void BeginPlay() override;
public:
// Called every frame
virtual void TickComponent(
float DeltaTime,
ELevelTick TickType,
FActorComponentTickFunction * ThisTickFunction
) override;
};

View File

@ -0,0 +1,16 @@
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Modules/ModuleManager.h"
class Fhstherac25Module : public IModuleInterface {
public:
/** IModuleInterface implementation */
virtual void StartupModule() override;
virtual void ShutdownModule() override;
private:
/** Handle to the test dll we will load */
void * simulatorLibraryHandle;
};

View File

@ -0,0 +1,69 @@
// Copyright Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
using System.IO;
public class hstherac25 : ModuleRules
{
public hstherac25(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
PublicIncludePaths.AddRange(
new string[] {
// ... add public include paths required here ...
"C:/ghcup/ghc/9.6.7/include",
}
);
PrivateIncludePaths.AddRange(
new string[] {
"C:/ghcup/ghc/9.6.7/include",
// "C:/ghcup/ghc/9.6.7/include",
// "${workspaceFolder}/Plugins/hstherac25/Source/hstherac-hs/csrc",
// "${workspaceFolder}/Plugins/hstherac25/Source/hstherac-hs/dist-newstyle/build/x86_64-windows/ghc-9.6.7/hstherac25-0.1.0.0/build"
// ... add other private include paths required here ...
}
);
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
"MathCore",
"Projects",
"CoreUObject",
"Engine",
"UMG",
"AudioMixerCore",
"InputCore"
// ... add other public dependencies that you statically link with here ...
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
"Slate", "SlateCore"
// ... add private dependencies that you statically link with here ...
}
);
DynamicallyLoadedModuleNames.AddRange(
new string[]
{
// ... add any modules that your module loads dynamically here ...
}
);
PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "../hstherac-hs", "HSdll.dll.a"));
RuntimeDependencies.Add(Path.Combine(PluginDirectory, "Source/hstherac-hs/HSdll.dll"));
}
}

View File

@ -0,0 +1,24 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0",
"FriendlyName": "hstherac25",
"Description": "",
"Category": "Other",
"CreatedBy": "",
"CreatedByURL": "",
"DocsURL": "",
"MarketplaceURL": "",
"SupportURL": "",
"CanContainContent": true,
"IsBetaVersion": false,
"IsExperimentalVersion": false,
"Installed": false,
"Modules": [
{
"Name": "hstherac25",
"Type": "Runtime",
"LoadingPhase": "Default"
}
]
}

View File

@ -8,12 +8,12 @@ public class MyProject : ModuleRules
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" });
PrivateDependencyModuleNames.AddRange(new string[] { });
// Uncomment if you are using Slate UI
// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
// Uncomment if you are using online features
// PrivateDependencyModuleNames.Add("OnlineSubsystem");

View File

@ -15,9 +15,11 @@ void UMagicFloatInput::HandleOnTextCommitted(
x = FCString::Atod(*inText.ToString());
SetText(FText::FromString(FString::Printf(TEXT("%.7f"), x)));
HandleMagicFloatsMangledEvent();
}
void UMagicFloatInput::HandleMagicFloatsMangledEvent() {
OnMagicFloatsMangled.ExecuteIfBound();
if (myVerifier != nullptr) {
if (sourceInput->GetText().EqualTo(GetText())) {
myVerifier->SetText(FText::FromString("VERIFIED"));
} else {
myVerifier->SetText(FText());
}
}
}

View File

@ -6,5 +6,32 @@ void UModeInputTextBox::HandleOnTextChanged(FText const & inText) {
auto & s = inText.ToString();
auto lastChar = s.LeftChop(1);
lastChar.ToUpperInline();
if (!lastChar.IsEmpty()) {
switch (myTarget) {
case THSModeTarget::Energy:
switch (lastChar[0]) {
case 'E':
break;
case 'X':
break;
default:
break;
}
break;
case THSModeTarget::OpMode:
switch (lastChar[0]) {
case 'T':
break;
case 'R':
break;
case 'P':
break;
}
break;
default:
break;
}
}
SetText(FText::FromString(lastChar));
}

View File

@ -1,7 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "TheracAdapter.h"
TheracAdapter::TheracAdapter() {}
TheracAdapter::~TheracAdapter() {}

View File

@ -1,12 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "VerifierTextBlock.h"
void UVerifierTextBlock::NativeOnInitialized() {
if (destInput != nullptr) {
destInput->OnMagicFloatsMangled.BindUObject(
this,
&UVerifierTextBlock::verifyFloats
);
}
}

View File

@ -7,8 +7,6 @@
#include <Components/TextBlock.h>
#include "MagicFloatInput.generated.h"
DECLARE_DELEGATE(FOnMagicFloatsMangledDelegate);
/**
*
*/
@ -27,9 +25,4 @@ class MYPROJECT_API UMagicFloatInput : public UEditableTextBox {
UPROPERTY(EditAnywhere)
UTextBlock * myVerifier;
UFUNCTION()
void HandleMagicFloatsMangledEvent();
FOnMagicFloatsMangledDelegate OnMagicFloatsMangled;
};

View File

@ -6,6 +6,12 @@
#include "CoreMinimal.h"
#include "ModeInputTextBox.generated.h"
UENUM()
enum class THSModeTarget : uint8 {
Energy,
OpMode
};
/**
*
*/
@ -14,5 +20,8 @@ class MYPROJECT_API UModeInputTextBox : public UEditableTextBox {
GENERATED_BODY()
UPROPERTY(EditAnywhere)
THSModeTarget myTarget;
void HandleOnTextChanged(FText const & inText) override;
};

View File

@ -1,15 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
/**
*
*/
class MYPROJECT_API TheracAdapter
{
public:
TheracAdapter();
~TheracAdapter();
};

View File

@ -1,27 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Components/TextBlock.h"
#include "MagicFloatInput.h"
#include "VerifierTextBlock.generated.h"
/**
*
*/
UCLASS()
class MYPROJECT_API UVerifierTextBlock : public UTextBlock {
GENERATED_BODY()
UPROPERTY(EditAnywhere)
UTextBlock * sourceInput;
UPROPERTY(EditAnywhere)
UMagicFloatInput * destInput;
void verifyFloats();
void BeginPlay() override;
};

8
shadertoolsconfig.json Normal file
View File

@ -0,0 +1,8 @@
{
"hlsl.preprocessorDefinitions": {
},
" hlsl.additionalIncludeDirectories": [
],
"hlsl.virtualDirectoryMappings": {
}
}