Claude/port mmlaunch avalonia hxl9 j#79
Merged
Merged
Conversation
The old MMLaunch was locked to .NET Framework 4.6.2 and FsXaml/WPF, which required Visual Studio on Windows to build. Replace it with an SDK-style F# Avalonia project on net8.0 so both Windows and Linux contributors can build with just `dotnet build`. The launcher still only runs on Windows (Linux users run it under Proton). - Convert all .xaml + .xaml.fs files to Avalonia .axaml + .axaml.fs. - Drop FsXaml type providers, FSharp.ViewModule, MonoGame, SharpDX, WpfInteropSample, and the linked MMView preview host. Replace the MVVM bits with a hand-rolled INotifyPropertyChanged / RelayCommand pair. - Inline a slim Domain layer (CoreTypes, RegConfig, State, SnapshotProfile) so MMLaunch builds standalone on net8.0 without pulling in the net462-only MMManaged / MMManaged.Engine assemblies (which depend on MonoGame and SharpDX type aliases at the module level). - Replace the old D3D11 PreviewHost with a small Avalonia MeshPreviewControl that parses .mmobj/.obj files inline and draws an orbiting wireframe via Skia. Mouse drag rotates, mouse wheel zooms. - Replace Win32 file/folder pickers with Avalonia StorageProvider. - Update build.fsx to invoke `dotnet build` for MMLaunch via a new BuildMMLaunch target, and remove WpfInteropSample from MMDotNet.sln.
- Also enable console output in debug builds
- Fix delete profile button never being enabled (prop changed event needed to be manually raised from UpdateProfileButtons - Remove d3d9 from old profile - Log root on startup but don't keeping logging each time - Note that removing snapshots is permanent since recycle bin not readily accessible in dotnet SDK - When starting, try to copy from hook_core.dll if it is found in the working tree. verify bitness on target and hook core.
- Avoids dotnet install dialog when running under proton
- claude made a copy of a bunch of stuff to avoid pulling in some dependencies that are problematic on dotnet 8+ (Monogame/SharpDx, with possible .net framework versions conflicts) - instead of that I pushed out the config types it needs to a new module that doesn't depend on the iffy stuff. The new modules are ConfigTypes and SnapProfileLoad. Then I used its Domain in the MMLaunch project file trick to "static link" those into MMLaunch - Required a bunch of reshuffling of names/prefixes/modules but mostly mechanical - Since claude included its own software-rendered wireframe mesh preview (albeit a slow one for big meshes), it doesn't need monogame or the old WPF/D3D integration I did - good thing because I don't think that builds on dotnet 8+ - I did update MMView so that it still builds and works from VS Studio, although I think nothing really uses it now. - The new MMLaunch only builds with dotnet, not visual studio - though I suppose its possible to make a VS project for it, I didn't bother as I'm trying to move away from that build.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.