Compare commits

...

120 Commits

Author SHA1 Message Date
0b5c47d8c7 Some changes to make login.init more consistent. 2026-06-09 17:36:58 -04:00
7d6898edb3 This file is not supposed to be here 2026-06-09 16:58:53 -04:00
da858f4a99 Remove some files 2026-06-09 16:58:14 -04:00
514fca47bc checking misc crap 2026-06-09 16:56:00 -04:00
393be51c76 Changes to login.lua to switch characters at a pylon. 2026-06-09 16:56:00 -04:00
29726631dd Auto-reconnect is now deliberately slowed down 2026-06-09 15:06:40 -04:00
7d6b1f207f Move 'break to debugger' into editor preferences 2026-06-09 14:32:02 -04:00
6a230e3ab2 First attempt at error-resistant /cpl directive 2026-06-08 17:47:10 -04:00
53a06281fd replace abandon_server with disconnect_and_reconnect 2026-06-08 15:54:20 -04:00
fa7dcdcb0d Increase view radius, remove radius parameter from get_tangibles_near 2026-06-08 14:58:44 -04:00
536abb2231 Better login handling 2026-06-08 14:23:55 -04:00
8d88c88fa0 Working on redirect/connect/etc 2026-06-05 17:52:46 -04:00
8a46788512 Disable world partition 2026-06-05 16:54:32 -04:00
f7a2d83f6e Disable world partition 2026-06-05 15:24:37 -04:00
e9c562eee5 Invoke can now only invoke method in class 'invoke', likewise for 'probe' 2026-06-03 17:03:07 -04:00
6658fb7940 Add Editor Preference to control server selection 2026-06-03 15:52:20 -04:00
d951d2ab61 More work on redirect 2026-06-02 18:34:03 -04:00
6c9f75bfac Remove error checking from redirect 2026-06-02 02:52:42 -04:00
f0460cdc71 redirect code in place 2026-06-02 02:42:28 -04:00
bfaf161d30 Cleaning up lpxclient and lpxserver in preparation for redirect implementation 2026-06-01 22:49:25 -04:00
1b0d96934f Readme updates 2026-06-01 20:53:02 -04:00
cc34e36cd2 A small refactor in UEWingman, for readability 2026-06-01 20:53:02 -04:00
e1f3c81cbd Progress toward implementing redirect 2026-05-27 17:13:32 -04:00
779c9f5c2e Better code reload 2026-05-27 14:50:34 -04:00
d737879ed6 More slash command stuff 2026-05-26 18:42:48 -04:00
46051526e6 New slash command parser 2026-05-26 18:20:35 -04:00
8dab0d16b7 CPL command 2026-05-26 15:07:42 -04:00
933c1ac6c3 More tweaks on tracebacks 2026-05-21 19:40:30 -04:00
521d4726ad Make lua tracebacks a little better 2026-05-21 19:24:11 -04:00
2bfa3024f1 Lots of work on the lua read-eval-print loop 2026-05-21 18:41:09 -04:00
f7983b1f02 Final form of radial menus 2026-05-19 02:55:31 -04:00
36ec4a3b9b Add new input device processor 2026-05-18 19:26:11 -04:00
1c2be1b4d8 Radial menus are in good shape 2026-05-18 16:12:26 -04:00
0b23c82e73 Progress on radial menus 2026-05-18 02:26:28 -04:00
b1defd821b More work on radial menus 2026-05-16 02:27:18 -04:00
e17f5417f2 Real progress on radial menus 2026-05-16 01:49:26 -04:00
c0848c2670 Completing downgrade to 5.5.4 2026-05-15 19:37:34 -04:00
94e6385f14 Downgrading to Unreal 5.5.4 2026-05-15 18:28:41 -04:00
1328f6e5f7 Working on radial menus 2026-05-15 18:14:38 -04:00
5d2377df1d More work on the argv conversion of ue-wingman 2026-05-13 22:03:19 -04:00
e0d45cc1db Refactoring ue-wingman to be a command-line only tool 2026-05-13 21:36:40 -04:00
ff9c045c8e Initial code for radial rendering 2026-05-11 00:13:30 -04:00
e669140e2c Layout code for radial menu complete. 2026-05-09 03:16:41 -04:00
420ea088d7 More work on radial menus 2026-05-08 17:55:11 -04:00
b00ec49e91 A few tweaks for the latest engine version 2026-05-08 14:16:52 -04:00
1aa888ac82 THinking about radial menus 2026-05-08 04:26:54 -04:00
236693fca6 More work on Prompt Widget 2026-05-07 04:11:37 -04:00
b5e121f884 Update to latest engine 2026-05-05 19:12:03 -04:00
ac4302141c Add gitdeps cache 2026-05-05 18:19:30 -04:00
e16e0978b0 Upgrade to unreal 5.7.4 2026-05-05 16:26:49 -04:00
3be98f3617 Yet another fix for UEDataFormatter.py 2026-05-04 16:51:39 -04:00
3cf984ff65 Fewer log messages from UE Wingman 2026-05-04 16:11:06 -04:00
78c85660c9 Prompt widget is pretty good now 2026-05-04 15:52:05 -04:00
3e7e6a2ae4 More progress on prompt 2026-05-04 15:27:28 -04:00
9d37f02d44 More work on prompt widget 2026-05-04 11:55:08 -04:00
97b5a3c593 Initial work on prompt widget 2026-05-04 02:14:14 -04:00
ae0defbad9 WingProperty now contains an object pointer. This made it possible to implement structprop a lot better, it now can dig into objects it couldn't dig into before, including structprop-within-structprop 2026-04-27 19:06:57 -04:00
9598004e6d remove __intellisense__ 2026-04-27 04:15:33 -04:00
4680a0f3f4 Crosshair is back 2026-04-25 01:14:16 -04:00
3f6ef4b56c Simplify keyboard focus rule to just 'widget in front', full stop. 2026-04-24 20:17:08 -04:00
960abba07f Intellisense clangd fix 2026-04-22 23:32:50 -04:00
a689d59ea0 More work on focus, and good docs 2026-04-22 22:52:04 -04:00
a964211cc8 Fix some issues with new root canvas stuff 2026-04-22 17:02:24 -04:00
d985a6bc55 More fixing everything 2026-04-22 07:22:55 -04:00
4420c52b74 Working on new root canvas stuff 2026-04-21 22:28:22 -04:00
8e5d43fd24 Working on new root canvas stuff 2026-04-21 21:26:06 -04:00
ec983951fe InputModeRequests now use less-than operator to sort 2026-04-21 04:24:35 -04:00
9787522ef6 UE Data formatters done. 2026-04-21 01:00:45 -04:00
0d607ba277 More work on data formatters 2026-04-20 20:52:17 -04:00
4c1eebab96 Working on lldb data formatting some more 2026-04-20 08:42:36 -04:00
f3e1daf4fe More work on getting lldb data formatters in better shape. 2026-04-20 08:23:36 -04:00
21d8c40005 Better data formatters in progress. 2026-04-20 05:42:34 -04:00
275698c5aa Trying to improve lldb 2026-04-19 05:03:11 -04:00
dabb5b8f0b Lots of work on focus management 2026-04-19 03:01:23 -04:00
fd970f20c3 Lots of work on input processing 2026-04-18 01:11:21 -04:00
6388de9b39 Much work on input mode switching 2026-04-17 23:43:28 -04:00
7a09da8a4e Player controller code to sort input components better: widgets with 'Stop Input' go to top of priority stack, and also, priority actually works now. 2026-04-17 17:56:10 -04:00
d396f394ab Sequences are now implemented in UE Wingman 2026-04-17 06:46:18 -04:00
f19e8ccb72 Working on implementing batch commands for UE wingman 2026-04-17 05:51:13 -04:00
6b057d1514 Improve docs for UlxUserWidget 2026-04-17 03:17:15 -04:00
392faff205 Clean up the player controller 2026-04-17 02:53:32 -04:00
ae1ad7640d WB_Hotkeys redesigned to use enhanced input. Amazing! 2026-04-17 02:18:30 -04:00
26399a6a15 More work on managing input events 2026-04-16 00:13:48 -04:00
8a3d200247 First step of new focus management system 2026-04-15 22:55:02 -04:00
2f83910897 A bit of research on mouse clicks 2026-04-14 17:16:46 -04:00
7296847fb5 Some usability tweaks for UE Wingman. 2026-04-14 02:28:22 -04:00
49331773bf Initial menu system by claude 2026-04-14 02:05:15 -04:00
07b90ced1a Work on the ue wingman manual 2026-04-13 22:51:35 -04:00
34011e43d5 Overhaul of manual-generation code 2026-04-13 21:33:16 -04:00
1db2705877 More tweaks 2026-04-13 17:52:55 -04:00
7a48a54ae5 Overhaul code to press hotkeys 2026-04-13 16:35:53 -04:00
f3d9a903d2 Fixed hotkey up/down handling 2026-04-13 16:08:23 -04:00
85a6fad139 Bugfix for wayland 2026-04-12 23:10:42 -04:00
ea74f5fe76 Add support for Blueprint Overrides, and make more progress on the hotkey widget. 2026-04-10 16:56:17 -04:00
ad6a33582b More work on name validation 2026-04-09 22:41:38 -04:00
d98c0081e6 A tweak 2026-04-09 22:10:43 -04:00
224e6604e6 Stricter name validation, and better disambiguation of graph actions 2026-04-09 22:01:19 -04:00
46ac6b34a8 Working on wb_hotkey_image 2026-04-09 17:53:42 -04:00
c14947382d lxLuaWidget is gone. 2026-04-09 16:58:19 -04:00
81989e83d7 Look-at widgets now probe their own configuration. 2026-04-09 16:55:45 -04:00
88b72712ca Better graph dump that shows exec pin names so that the AI knows how to connect them. 2026-04-09 16:44:30 -04:00
3b6207f7a1 First step in redesigning lua widgets 2026-04-09 14:43:11 -04:00
6be07679d2 A few more bug fixes 2026-04-09 04:22:28 -04:00
9c2dcd9efb Fixed some bugs" 2026-04-08 19:39:39 -04:00
5001be6c90 More tstrong 2026-04-08 06:08:48 -04:00
69b249f7ca Fix three bugs in WingVariables 2026-04-08 05:54:00 -04:00
50790280bb Minor cleanups 2026-04-08 03:47:28 -04:00
73f84c1681 Renaming 2026-04-08 03:40:59 -04:00
f4286faeb1 Make component refs into strrong pointers 2026-04-08 03:35:47 -04:00
15beb42d5f IWYU cleanup done 2026-04-08 03:26:22 -04:00
39cc7cd14b Next batch of IWYU cleanup 2026-04-08 03:14:08 -04:00
ba425c1ab3 First batch of include cleanups 2026-04-08 02:17:56 -04:00
868152f302 First attempt at removal of unnecessary include files 2026-04-08 01:48:49 -04:00
a43affe804 Header file reorg, documentation, and cleanup 2026-04-08 00:52:23 -04:00
083452f83f Split WingComponentReference into a static helper class and a simple data class 2026-04-08 00:07:01 -04:00
9c3fab26c4 Start cleaning WingReferences to be *just* the reference type and no methods 2026-04-07 23:41:04 -04:00
9382ed85f8 Remove bullshit fields from UWingComponentReference 2026-04-07 22:50:00 -04:00
e9af515c05 Fix two important bugs: the tokenizer was tokenizing '.' in identifiers wrong, and WingComponent was using the native flag incorrectly. 2026-04-07 22:28:12 -04:00
f77a8553e1 Start creating WingReferences.h 2026-04-07 22:04:44 -04:00
b124cf72aa Graph export is more sophisticated about details, and GraphNode_Add now shows the node it created. 2026-04-07 21:19:12 -04:00
391 changed files with 10988 additions and 4474 deletions

2
.gitignore vendored
View File

@@ -27,6 +27,7 @@ UnrealEngine
*.vcproj
.ignore
.gitdeps-cache/**
.vscode/**
Config/**
Saved/**
@@ -52,3 +53,4 @@ GPF-output/**
__pycache__/
.clangd-query/
COMMIT.txt
CLAUDE.md

View File

@@ -1,8 +0,0 @@
{
"mcpServers": {
"ue-wingman": {
"command": "python3",
"args": ["Plugins/UEWingman/ue-wingman-mcp.py"]
}
}
}

118
AGENTS.md
View File

@@ -1,120 +1,50 @@
# Integration Project
This is **Luprex**, a game engine built on top of Unreal that uses Lua as its scripting language.
The system consists of two parts:
## Behavior Rules
1. The Luprex DLL. Stores the state of the world. Handles networking and lua scripting. The networking is automatic, scripters don't write networking code. The luprex DLL is event-driven, deterministic, OS-independent, no I/O. Pure standard-compliant C++. Organized as a library with struct `EngineWrapper` as the top-level API.
- Be Concise!
* Do not output multiple paragraphs. Doing so is very rude.
* You are having a conversation, give the other person a chance to speak.
2. The Unreal-based Driver. Its job is to peer into the luprex DLL and render whatever it sees. It is also responsible for sending OS events (like TCP/IP events) into the Luprex DLL. Uses struct EngineWrapper access the Luprex DLL. There's also a command-line driver for the game's server.
- Do not use git to make changes (no commit, no push, no stash, etc.)
The luprex DLL never calls into the Unreal driver. Output goes through polled buffers. This separation enables deterministic replay for debugging: the driver logs all events, and can replay them to reproduce crashes.
- Work at the user's pace. Do not start coding until the user says it is time.
## Build System
- Use `build.py` for all builds. Do NOT follow Epic's standard build instructions.
- Use `build.py` for all builds. Do NOT use UBT directly.
- `build.py all` — full rebuild (engine, game, intellisense, project files)
- `build.py c++` — lightweight rebuild (only if you've only edited C++ files in this repo)
- Lua and Blueprint edits don't require a rebuild.
- `build.py c++` — lightweight rebuild (use if you've only edited c++ files)
- Lua and Blueprint edits don't require any kind of build.
## Directory Structure
- `luprex/` — The Luprex DLL.
- `Source/Integration/`Game module C++ source (Unreal-side driver code)
- `Source/Integration/`Unreal interface to Luprex.
- `Content/` — Unreal assets
- `Docs/` — Documentation. When trying to understand this system, start with the markdown files in the Docs directory.
- `Docs/` — Documentation.
- `Config/` — Unreal config files
- `EnginePatches/` — Custom engine modifications
- `Plugins/UEWingman/` - A plugin that gives you control over the unreal editor.
- `../integration.UE/` - the unreal engine source tree
## Architecture: World Models and Predictive Reexecution
## Using ue-wingman
There are four types of world models, each a separate `World` instance with its own Lua interpreter:
- **Master** (server, one) — authoritative state, executes commands immediately when they arrive.
- **Server-synchronous** (server, one per client) — executes commands when the acknowledgement is issued.
- **Client-synchronous** (client, one) — executes commands when the same acknowledgement arrives; determinism keeps it in perfect sync with its server-synchronous counterpart.
- **Asynchronous** (client, one) — snapshot of client-synchronous with predictions applied for responsive rendering; rolled back when server confirms.
The synchronous models lag behind the master but stay in lockstep with each other. The asynchronous model fills the latency gap for the player.
Two update channels flow into the synchronous models:
1. **Command acknowledgements** — for the client's own actions, keeping the two synchronous models in lockstep.
2. **Difference transmission** — for everything else (other players' actions, server-side events, tangibles entering/leaving visibility).
See `Docs/Predictive-Reexecution.md` for the full explanation.
## Architecture: Lua / Unreal Separation
Lua scripts have no access to the Unreal API whatsoever. The scripter works with plain Lua tables, animation queues of key-value tuples, and coroutines. There are no "unreal bindings." The Luprex DLL is engine-agnostic — Unreal (or any other front end) interprets the animation queues and renders accordingly.
Small concessions to reality exist in animation step tuples:
- `bp` — names which Tangible Actor blueprint to use for rendering
- `mat_color` — a persistent value that hints at material color
These are still just key-value data; the script never touches the Unreal API directly.
## Architecture: Tangibles
Tangibles are game objects. Each has:
- A **Lua table** — the scripter stores arbitrary game data here.
- An **animation queue** — a fixed-length sequence of key-value animation steps.
- A **C++ tangible** — holds the ID, animation queue, positional tracker, etc.
- A **metatable** — engine-reserved; contains __id, __index (class), __threads.
Animation steps contain **transient** values (like `action`) that don't propagate, and **persistent** values (like `xyz`, `facing`, `plane`) that carry forward automatically.
On the Unreal side, **Tangible Actor blueprints** (TangibleStaticMesh, TangibleSkeletalMesh, TangibleCharacter) monitor the animation queue and perform the visual animations. Custom blueprints can interpret the queue in any way they want.
## Architecture: Lua Environment
- **Patched Lua runtime** — deterministic table iteration, deterministic table length, flag bits on tables, generalized less-than, C++ exceptions instead of longjmp, and more. See `Docs/A-Summary-of-our-Lua-Patches.md`.
- **LuaStack API** — custom C++ API replacing the standard Lua C API. Uses `LuaDefStack`/`LuaExtStack` with `LuaArg`/`LuaVar`/`LuaRet` slots mapped to stack positions. See `Docs/Our-In-House-Lua-API.md`.
- **LuaDefine macro** — declares Lua-callable C++ functions and auto-registers them in a global registry for automatic insertion into the Lua environment.
- **eng::malloc heap** — custom deterministic memory allocator for the driven portion, ensuring reproducible addresses during replay.
## Architecture: Determinism
The driven portion must be fully deterministic so that synchronous models stay in lockstep and event replay works. Rules: no true random numbers, no iterating unordered maps, no real-time clocks, no threads (with carefully sandboxed exceptions). See `Docs/The-Event-Driven-Structure-of-the-Engine.md`.
## Architecture: GUI System
Blueprints call into Lua via two mechanisms:
- **Invokes** — change world state, forwarded to server, executed in order per predictive reexecution rules.
- **Probes** — read-only, return data to blueprints, run locally on client.
Look-at widgets, hotkeys, and menus are built on top of this. The menu system is implemented entirely in "user space" Lua and blueprint code. See `Docs/Displaying-Widget-Blueprints.md`.
## Blueprint Text Export
Blueprints are automatically exported to readable text files in `Saved/BlueprintExports/` whenever they are saved in the editor. This lets Claude Code read blueprint logic. See `Docs/Blueprint Text Export.md` for format details. Source: `Source/Integration/BlueprintExporter.h/.cpp` and `Source/Integration/Integration.cpp`.
## Key Documentation
Look in the Docs directory for important documentation.
## Git
Do not use git to make changes (commit, push, branch, etc.). Read-only git commands (status, log, diff, etc.) are fine.
## Workflow
- When the user gives a direct command, execute it. But when proposing changes on your own initiative, describe the plan and get approval before editing files.
- If an instruction ends with an ellipsis (`...`), the user has more to say. Wait for the next message before acting.
- Drive it from bash using: ue-wingman <Command> <Arg1> <Arg2> ...
- ue-wingman Documentation_Manual
- ue-wingman Documentation_Commands
- ue-wingman Documentation_Command <specific_command>
## Coding Conventions
- Prefer early returns and `continue` to reduce nesting (never-nester style).
- Do not use static functions in Unreal code. Use class methods or namespace-scoped functions instead.
- Use `LogLuprexIntegration` for log messages, not `LogTemp`.
- When writing UFUNCTIONs that take an `AActor*`, `UObject*`, or similar "self" parameter, add `DefaultToSelf` meta to that pin. Most functions should have this on the obvious pin so the user doesn't have to manually wire it in blueprints.
- Do not use static functions in Unreal code. Use class methods instead.
## Session Startup
## Special commands.
At the beginning of every session, do a directory listing of these three directories so you know what files are available:
- `Docs/` — documentation
- `Source/Integration/` — Unreal-side C++ code
- `luprex/cpp/core/` — Luprex DLL core C++ code
You must learn these shorthands:
These two code directories contain 99% of the code we'll be working on together.
- "bc" - be concise. You must rephrase your most recent
response in a more concise manner, and then, going forward, be
more concise in general.
## Current Status
(Use this section to track what we're working on across sessions.)

1498
Art/gamepad.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 65 KiB

321
Art/radial.svg Normal file
View File

@@ -0,0 +1,321 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="200mm"
height="200mm"
viewBox="0 0 200 200"
version="1.1"
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="radial.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="2.8284271"
inkscape:cx="365.75098"
inkscape:cy="372.82205"
inkscape:window-width="1920"
inkscape:window-height="1026"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid132"
spacingx="0.99999999"
spacingy="0.99999999" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05555556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;fill:none;stroke:#707070;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="120"
y="90"
id="text2926"><tspan
sodipodi:role="line"
id="tspan2924"
style="stroke-width:1;font-size:7.05555556px"
x="120"
y="90" /></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="116"
y="87"
id="text3271"><tspan
sodipodi:role="line"
id="tspan3269"
style="stroke-width:1"
x="116"
y="87">Light the furnace</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="120.365"
y="96.362228"
id="text3325"><tspan
sodipodi:role="line"
id="tspan3323"
style="stroke-width:1"
x="120.365"
y="96.362228">Replenish Fuel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="121"
y="107"
id="text3329"><tspan
sodipodi:role="line"
id="tspan3327"
style="stroke-width:1"
x="121"
y="107">Bake chicken</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="116"
y="117"
id="text3333"><tspan
sodipodi:role="line"
id="tspan3331"
style="stroke-width:1"
x="116"
y="117">Cannibalism</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="84"
y="87"
id="text3337"><tspan
sodipodi:role="line"
id="tspan3335"
style="stroke-width:1"
x="84"
y="87">Banana Bread</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="79"
y="97"
id="text3341"><tspan
sodipodi:role="line"
id="tspan3339"
style="stroke-width:1"
x="79"
y="97">Electric Eel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="79"
y="107"
id="text3345"><tspan
sodipodi:role="line"
id="tspan3343"
style="stroke-width:1"
x="79"
y="107">Engine Fire</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="84"
y="117"
id="text3349"><tspan
sodipodi:role="line"
id="tspan3347"
style="stroke-width:1"
x="84"
y="117">Radial Menu</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#707070;stroke-width:0.3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 89.999999,84.999999 4,-10e-7"
id="path4558"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#707070;stroke-width:0.3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 106,84.999998 4,10e-7"
id="path4562"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#707070;stroke-width:0.3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 84.999999,94.999999 3,0"
id="path4564"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#707070;stroke-width:0.3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 112,94.999997 3,2e-6"
id="path4566"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#707070;stroke-width:0.3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 84.999999,105 3,0"
id="path4568"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#707070;stroke-width:0.3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 112,105 3,0"
id="path4570"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#707070;stroke-width:0.3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 89.999999,115 4,0"
id="path4572"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#707070;stroke-width:0.3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 106,115 4,0"
id="path4574"
sodipodi:nodetypes="cc" />
<path
id="path4576"
style="fill:#662066;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="m 102,100.15803 c 0,1.10457 -0.89543,2 -2.000004,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.104575 2,-4.000005 2,-4.000005 0,0 2.000004,2.89543 2.000004,4.000005 z"
sodipodi:nodetypes="ssscs" />
<path
style="fill:none;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="m 112,105 -5.72673,-2.38614"
id="path1147" />
<path
style="fill:none;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="M 106.27327,97.386131 112,94.999997"
id="path1149" />
<path
style="fill:none;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="M 102.52401,93.689963 106,84.999996"
id="path1151" />
<path
style="fill:none;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="M 97.475986,93.689963 93.999999,84.999996"
id="path1153" />
<path
style="fill:none;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="m 106,115 -3.47599,-8.68997"
id="path1155" />
<path
style="fill:none;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="m 93.999999,115 3.475987,-8.68997"
id="path1157" />
<path
style="fill:none;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="m 87.999998,105 5.726726,-2.38614"
id="path1159" />
<path
style="fill:none;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="m 87.999998,94.999997 5.726726,2.386136"
id="path1161" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="path1220"
cx="102.52401"
cy="106.31003"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1274"
cx="97.475983"
cy="106.31003"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1276"
cx="93.726723"
cy="102.61386"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1278"
cx="106.27327"
cy="102.61386"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1280"
cx="106.27327"
cy="97.386131"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1282"
cx="102.52401"
cy="93.689964"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1284"
cx="90"
cy="85"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1286"
cx="93.726723"
cy="97.386131"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1290"
cx="97.475983"
cy="93.689964"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1292"
cx="110"
cy="85"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1294"
cx="115"
cy="95"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1296"
cx="115"
cy="105"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1298"
cx="110"
cy="115"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1300"
cx="90"
cy="115"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1302"
cx="85"
cy="105"
r="0.49999997" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1304"
cx="85"
cy="95"
r="0.49999997" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

304
Art/radial2.svg Normal file
View File

@@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="200mm"
height="200mm"
viewBox="0 0 200 200"
version="1.1"
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="radial2.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="2"
inkscape:cx="375.25"
inkscape:cy="379.25"
inkscape:window-width="1920"
inkscape:window-height="1026"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid132"
spacingx="0.99999999"
spacingy="0.99999999" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05555556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;fill:none;stroke:#707070;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="120"
y="90"
id="text2926"><tspan
sodipodi:role="line"
id="tspan2924"
style="stroke-width:1;font-size:7.05555556px"
x="120"
y="90" /></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="130"
y="67.497505"
id="text3271"><tspan
sodipodi:role="line"
id="tspan3269"
style="stroke-width:1"
x="130"
y="67.497505">Light the furnace</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="130"
y="77.497505"
id="text3325"><tspan
sodipodi:role="line"
id="tspan3323"
style="stroke-width:1"
x="130"
y="77.497505">Replenish Fuel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="130"
y="87.497505"
id="text3329"><tspan
sodipodi:role="line"
id="tspan3327"
style="stroke-width:1"
x="130"
y="87.497505">Bake chicken</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="130"
y="97.497505"
id="text3333"><tspan
sodipodi:role="line"
id="tspan3331"
style="stroke-width:1"
x="130"
y="97.497505">Cannibalism</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="130"
y="107.49751"
id="text3271-9"><tspan
sodipodi:role="line"
id="tspan3269-1"
style="stroke-width:1"
x="130"
y="107.49751">Light the furnace</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="130"
y="117.49751"
id="text3325-2"><tspan
sodipodi:role="line"
id="tspan3323-7"
style="stroke-width:1"
x="130"
y="117.49751">Replenish Fuel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="130"
y="127.49751"
id="text3329-0"><tspan
sodipodi:role="line"
id="tspan3327-9"
style="stroke-width:1"
x="130"
y="127.49751">Bake chicken</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="130"
y="137.4975"
id="text3333-3"><tspan
sodipodi:role="line"
id="tspan3331-6"
style="stroke-width:1"
x="130"
y="137.4975">Cannibalism</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="70"
y="67.497505"
id="text3337"><tspan
sodipodi:role="line"
id="tspan3335"
style="stroke-width:1"
x="70"
y="67.497505">Banana Bread</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="70"
y="77.497505"
id="text3341"><tspan
sodipodi:role="line"
id="tspan3339"
style="stroke-width:1"
x="70"
y="77.497505">Electric Eel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="70"
y="87.497505"
id="text3345"><tspan
sodipodi:role="line"
id="tspan3343"
style="stroke-width:1"
x="70"
y="87.497505">Engine Fire</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="70"
y="97.497505"
id="text3349"><tspan
sodipodi:role="line"
id="tspan3347"
style="stroke-width:1"
x="70"
y="97.497505">Radial Menu</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="70"
y="107.49751"
id="text3337-3"><tspan
sodipodi:role="line"
id="tspan3335-6"
style="stroke-width:1"
x="70"
y="107.49751">Banana Bread</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="70"
y="117.49751"
id="text3341-7"><tspan
sodipodi:role="line"
id="tspan3339-5"
style="stroke-width:1"
x="70"
y="117.49751">Electric Eel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="70"
y="127.49751"
id="text3345-3"><tspan
sodipodi:role="line"
id="tspan3343-5"
style="stroke-width:1"
x="70"
y="127.49751">Engine Fire</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="70"
y="137.4975"
id="text3349-6"><tspan
sodipodi:role="line"
id="tspan3347-2"
style="stroke-width:1"
x="70"
y="137.4975">Radial Menu</tspan></text>
<path
id="path4576"
style="fill:#662066;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="m 82.000003,188 c 0,1.10457 -0.89543,2 -2.000004,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 2,-4.00001 2,-4.00001 0,0 2.000004,2.89544 2.000004,4.00001 z"
sodipodi:nodetypes="ssscs" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1284"
cx="125"
cy="194.5"
r="0.49999997" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-opacity:1;stroke-dasharray:none"
d="m 135,160 h 30"
id="path1524" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 93.038085,64.999999 99.999992,99.999995 106.96191,65"
id="path1528"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 99.999995,99.999995 83.295555,75"
id="path1530"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 116.70446,75 99.999995,99.999995 77.550899,84.999992"
id="path1532"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 122.44906,84.99999 99.999995,99.999995 74.863225,95"
id="path1536"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 99.999995,99.999995 74.863247,105"
id="path1538" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 99.999992,99.999995 77.550885,114.99999"
id="path1544" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 83.29551,125 99.999995,99.999995"
id="path1546" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 93.038045,135 6.96195,-35.000005"
id="path1548" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 106.96198,135 99.999992,99.999995"
id="path1550" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 116.70444,125 99.999995,99.999995"
id="path1552" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 122.44909,114.99999 99.999995,99.999995"
id="path1554" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 125.13655,95 99.999995,99.999995 125.13674,105"
id="path1556"
sodipodi:nodetypes="ccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

449
Art/radial3.svg Normal file
View File

@@ -0,0 +1,449 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="200mm"
height="200mm"
viewBox="0 0 200 200"
version="1.1"
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="radial3.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="2.8284271"
inkscape:cx="396.51013"
inkscape:cy="365.57421"
inkscape:window-width="1276"
inkscape:window-height="673"
inkscape:window-x="153"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid132"
spacingx="0.99999999"
spacingy="0.99999999" />
</sodipodi:namedview>
<defs
id="defs2">
<inkscape:path-effect
effect="bspline"
id="path-effect7971"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7967"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7963"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7959"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7955"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7951"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7947"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7943"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7939"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7935"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7931"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7927"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7923"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7919"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7915"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect7911"
is_visible="true"
lpeversion="1"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05555556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;fill:none;stroke:#707070;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="120"
y="90"
id="text2926"><tspan
sodipodi:role="line"
id="tspan2924"
style="stroke-width:1;font-size:7.05555556px"
x="120"
y="90" /></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="105"
y="67.497505"
id="text3271"><tspan
sodipodi:role="line"
id="tspan3269"
style="stroke-width:1"
x="105"
y="67.497505">Light the furnace</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="105"
y="77.497505"
id="text3325"><tspan
sodipodi:role="line"
id="tspan3323"
style="stroke-width:1"
x="105"
y="77.497505">Replenish Fuel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="105"
y="87.497505"
id="text3329"><tspan
sodipodi:role="line"
id="tspan3327"
style="stroke-width:1"
x="105"
y="87.497505">Bake chicken</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="105"
y="97.497505"
id="text3333"><tspan
sodipodi:role="line"
id="tspan3331"
style="stroke-width:1"
x="105"
y="97.497505">Cannibalism</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="105"
y="107.49751"
id="text3271-9"><tspan
sodipodi:role="line"
id="tspan3269-1"
style="stroke-width:1"
x="105"
y="107.49751">Light the furnace</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="105"
y="117.49751"
id="text3325-2"><tspan
sodipodi:role="line"
id="tspan3323-7"
style="stroke-width:1"
x="105"
y="117.49751">Replenish Fuel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="105"
y="127.49751"
id="text3329-0"><tspan
sodipodi:role="line"
id="tspan3327-9"
style="stroke-width:1"
x="105"
y="127.49751">Bake chicken</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:start;text-anchor:start;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="105"
y="137.4975"
id="text3333-3"><tspan
sodipodi:role="line"
id="tspan3331-6"
style="stroke-width:1"
x="105"
y="137.4975">Cannibalism</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="65"
y="67.497505"
id="text3337"><tspan
sodipodi:role="line"
id="tspan3335"
style="stroke-width:1"
x="65"
y="67.497505">Banana Bread</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="65"
y="77.497505"
id="text3341"><tspan
sodipodi:role="line"
id="tspan3339"
style="stroke-width:1"
x="65"
y="77.497505">Electric Eel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="65"
y="87.497505"
id="text3345"><tspan
sodipodi:role="line"
id="tspan3343"
style="stroke-width:1"
x="65"
y="87.497505">Engine Fire</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="65"
y="97.497505"
id="text3349"><tspan
sodipodi:role="line"
id="tspan3347"
style="stroke-width:1"
x="65"
y="97.497505">Radial Menu</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="65"
y="107.49751"
id="text3337-3"><tspan
sodipodi:role="line"
id="tspan3335-6"
style="stroke-width:1"
x="65"
y="107.49751">Banana Bread</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="65"
y="117.49751"
id="text3341-7"><tspan
sodipodi:role="line"
id="tspan3339-5"
style="stroke-width:1"
x="65"
y="117.49751">Electric Eel</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="65"
y="127.49751"
id="text3345-3"><tspan
sodipodi:role="line"
id="tspan3343-5"
style="stroke-width:1"
x="65"
y="127.49751">Engine Fire</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;text-anchor:end;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="65"
y="137.4975"
id="text3349-6"><tspan
sodipodi:role="line"
id="tspan3347-2"
style="stroke-width:1"
x="65"
y="137.4975">Radial Menu</tspan></text>
<path
id="path4576"
style="fill:#662066;stroke:#707070;stroke-width:0.3;stroke-linecap:round"
d="m 82.000003,188 c 0,1.10457 -0.89543,2 -2.000004,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 2,-4.00001 2,-4.00001 0,0 2.000004,2.89544 2.000004,4.00001 z"
sodipodi:nodetypes="ssscs" />
<circle
style="fill:#662066;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round"
id="circle1284"
cx="125"
cy="194.5"
r="0.49999997" />
<path
style="fill:none;stroke:#707070;stroke-width:1;stroke-linecap:round;stroke-opacity:1;stroke-dasharray:none"
d="m 135,160 h 30"
id="path1524" />
<path
sodipodi:type="star"
style="fill:none;stroke:#700726;stroke-width:1;stroke-linecap:round"
id="path9423"
inkscape:flatsided="false"
sodipodi:sides="8"
sodipodi:cx="84.999992"
sodipodi:cy="50"
sodipodi:r1="10"
sodipodi:r2="10"
sodipodi:arg1="1.5707963"
sodipodi:arg2="1.9634954"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 84.999993,60 81.173158,59.238795 77.928925,57.071068 75.761197,53.826834 74.999992,50 75.761197,46.173166 77.928924,42.928932 81.173158,40.761205 84.999992,40 l 3.826835,0.761205 3.244233,2.167727 2.167728,3.244234 L 94.999992,50 l -0.761204,3.826834 -2.167728,3.244234 -3.244233,2.167727 z"
inkscape:transform-center-x="1.0036851e-06"
transform="rotate(11.25,-168.82926,75.000033)" />
<path
style="fill:none;stroke:#700726;stroke-width:1;stroke-linecap:round"
d="M 64.999999,64.999999 H 105 V 74.999997 84.999998 94.999997 105 v 10 10 10 H 64.999999 V 125 115 105 94.999997 84.999998 74.999997 64.999999"
id="path9425" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1 +0,0 @@
AGENTS.md

View File

@@ -1,13 +0,0 @@
[/Script/UnrealEd.EditorStyleSettings]
AssetEditorOpenLocation=MainWindow
[/Script/BlueprintGraph.BlueprintEditorSettings]
SaveOnCompile=SoC_SuccessOnly
[/Script/UnrealEd.EditorLoadingSavingSettings]
RestoreOpenAssetTabsOnRestart=AlwaysRestore
AutoSaveWarningInSeconds=0

View File

@@ -4,14 +4,14 @@
[/Script/Engine.Engine]
GameViewportClientClassName=/Script/CommonUI.CommonGameViewportClient
GameViewportClientClassName=/Script/Integration.lxViewportClient
[/Script/EngineSettings.GameMapsSettings]
GameDefaultMap=/Game/LpxLevel.LpxLevel
GameDefaultMap=/Game/LpxBasicLevel.LpxBasicLevel
GlobalDefaultGameMode=/Game/Luprex/lxGameMode.lxGameMode_C
GameInstanceClass=/Script/IntegrationV7.GameInstanceV7
GlobalDefaultServerGameMode=/Game/IntegrationGameModeBaseBP.IntegrationGameModeBaseBP_C
EditorStartupMap=/Game/LpxLevel.LpxLevel
EditorStartupMap=/Game/LpxBasicLevel.LpxBasicLevel
[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
bEnablePlugin=True

View File

@@ -84,3 +84,16 @@ DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.Defaul
-ConsoleKeys=Tilde
+ConsoleKeys=Tilde
[InputPlatformSettings_Linux InputPlatformSettings]
MaxPlatformUserCount=8
input.DeviceMappingPolicy=1
MaxTriggerFeedbackPosition=8
MaxTriggerFeedbackStrength=8
MaxTriggerVibrationTriggerPosition=9
MaxTriggerVibrationFrequency=255
MaxTriggerVibrationAmplitude=8
+HardwareDevices=(InputClassName="",HardwareDeviceIdentifier="",PrimaryDeviceType=Unspecified,SupportedFeaturesMask=0)
+HardwareDevices=(InputClassName="DefaultKeyboardAndMouse",HardwareDeviceIdentifier="KBM",PrimaryDeviceType=KeyboardAndMouse,SupportedFeaturesMask=3)
+HardwareDevices=(InputClassName="DefaultGamepad",HardwareDeviceIdentifier="Gamepad",PrimaryDeviceType=Gamepad,SupportedFeaturesMask=4)
+HardwareDevices=(InputClassName="DefaultMobileTouch",HardwareDeviceIdentifier="MobileTouch",PrimaryDeviceType=Touch,SupportedFeaturesMask=8)

BIN
Content/LandscapeLevel.umap LFS Normal file

Binary file not shown.

BIN
Content/LpxBasicLevel.umap LFS Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Content/Luprex/lxPrompts.uasset LFS Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Content/Widgets/WB_Menu.uasset LFS Normal file

Binary file not shown.

Binary file not shown.

BIN
Content/Widgets/teardrop.uasset LFS Normal file

Binary file not shown.

BIN
Content/Widgets/white-dot.uasset LFS Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More