467 Commits
Author SHA1 Message Date
Virgile Bello 0688aa6942 Merge branch 'master' into feature/xplat/rename-projectcs
# Conflicts:
#	docs/launcher/settings.md
#	sources/editor/Stride.Editor.Wpf/GraphicsDeviceLoss.cs
2026-10-06 11:11:42 +09:00
Virgile Bello cdbfb1b88b Launcher, VS extension: a project edited since its restore shows the Stride version written in it (csproj or Directory.Packages.props), one shared reader 2026-09-30 22:26:52 +02:00
Nicolas Musset ff09df9b1f Merge branch 'master' into feature/xplat/rename-projectcs 2026-09-21 17:23:34 +02:00
xen2 c68dcba73c Merge pull request #3442 from xen2/feature/samples-content-versioning
Samples: version and release the content templates separately from the engine
2026-09-18 13:15:48 +09:00
Virgile Bello 75497567c4 Samples: version the content template packs separately from the engine 2026-09-18 09:15:19 +09:00
Virgile Bello 29f044884a TextureConverter: resize non-8-bit textures again (fix #3441)
ImageSharpTexLib only handles 8-bit BGRA/RGBA but claimed every non-Nearest
rescale, so Lanczos3 on R16G16B16A16_Float or R16_Float threw. Since the
FreeImage removal no other library implements Lanczos3, so TextureTool now
falls back to Bicubic (DirectXTex) for formats ImageSharp cannot process.
2026-09-17 22:14:54 +09:00
Nicolas Musset 8cc3d8dea1 feat: move Stride.Core.Translation.Presentation.Wpf 2026-09-13 03:07:03 +02:00
Nicolas Musset 156eb01d70 feat: rename Wpf projects by adding a suffix 2026-09-13 03:06:41 +02:00
Virgile Bello c715498ae7 Build directxtex without OpenMP
We never request TEX_COMPRESS_PARALLEL, the only path DirectXTex uses OpenMP
for, so it only added a load-time dependency on libgomp.so.1 on Linux and
vcomp140.dll on Windows.
2026-09-09 19:47:33 +09:00
xen2 a7eac0e27f Fix new projects whose name contains spaces (#3356) (#3406)
The template engine used the raw name for file names but its safe form
for file contents, so The Quiet Archive.Game.csproj was referenced as
The_Quiet_Archive.Game.csproj. Both now use a compact form of the name
with whitespace removed (TheQuietArchive).

Game Studio saves its own solution, named from the New Project dialog,
so it now asks the template not to emit one (skipSolution) instead of
leaving a second solution behind when the names differ.
2026-09-09 11:43:18 +09:00
Virgile Bello 8360f57d4c Templates: stamp the engine version into Stride.* references through the project XML rather than a regex 2026-09-05 21:57:22 +09:00
Virgile Bello 7cbc828fee Templates: stamp engine version without build metadata (generated csproj referenced 4.4.0-beta5+g34c7f40f) 2026-09-05 14:28:19 +09:00
Jakub Ławreszuk 72b6ad680b fix: Remove metrics leftovers 2026-08-10 08:53:12 +02:00
Virgile Bello 2e6d6eaf1b feat: asset packs for New Game as dotnet new item templates
New Stride.Templates.AssetPacks package (nuget.org only, fetched on demand)
ships Building blocks / Animated models / Materials / Particles. GameStudio
offers them as checkboxes when creating a game; dotnet new and the stride
CLI instantiate them into an existing game.
2026-08-08 01:00:27 +02:00
Virgile Bello f12d2ac238 chore: track .ico/.cur/.xcf/.pdn/.woff/.eot binaries with git-lfs 2026-07-16 11:16:26 +02:00
Virgile Bello 07edb16066 templates: hide internal updateOnly param via dotnetcli.host.json
Emit dotnetcli.host.json marking updateOnly isVisible:false, add the
dotnetcli fallback host-config name so GameStudio honors it too, and skip
isVisible:false params in the new-project wizard.
2026-07-15 18:33:37 +02:00
Virgile Bello 363228f23c templates: fix Update Platforms spawning a spurious .Game package on pre-4.4 projects (fixes #3262)
The updateOnly and LDR excludes still pointed at MyTemplate/ after the library dir was renamed to MyTemplate.Game/, so updateOnly no longer excluded the game library and it got regenerated. Point the excludes at MyTemplate.Game/, and repoint generated exec references at the session's actual library so bare-named (pre-4.4) libraries link correctly.
2026-07-15 01:56:21 +02:00
Virgile Bello 0be1e58338 Stride.VisualStudio.Package.Shaders: add companion VSIX for .sdsl/.sdfx highlighting
The out-of-process extension can't register a TextMate grammar (its generated
manifest can't carry the classic VsPackage/MefComponent assets VS needs). So a
small classic (net472) content-only companion VSIX does just that: it ships the
generated grammar + a companion .tmTheme + a language-configuration, registered via
a pkgdef, giving instant .sdsl/.sdfx coloring in VS.

The grammar and its generator move here from Stride.VisualStudio.Package/syntaxes.
Delivery packs both vsixes into the one NuGet package; PackageInstall installs both
in a single call and uninstalls both.
2026-07-04 17:46:18 +09:00
Virgile Bello 7ec8d9bda7 Stride.VisualStudio.Package: add SDSL TextMate grammar generator (unused)
Generate sdsl.tmLanguage.json from Stride's shader vocabulary (Reserved.cs) via a
.NET 10 file-based generator, so the coloring never drifts from the language.

Not wired into anything yet: the out-of-process extension can't register a TextMate
grammar (needs a classic pkgdef asset). Kept for a future VS Code extension / LSP
baseline; see syntaxes/README.md.
2026-07-04 17:46:17 +09:00
Virgile Bello 583c1a74e0 Stride.VisualStudio.Package: version independently + fix uninstall id
Version the VS package and its delivery nuspec independently of the engine
(VersionPrefix 4.4.0, hand-bumped), with an optional prerelease VersionSuffix
wired through release-vspackage.yml and the nuget pack step; the .vsix manifest
version follows AssemblyVersion (numeric only, suffix stripped).

Fix PackageInstall to uninstall the current extension id (was the stale
Stride.VisualStudio.Package.2022), plus the legacy id for clean upgrades.
2026-07-04 17:46:17 +09:00
Virgile Bello 90eda16781 Stride.VisualStudio.Package: replace net472 in-proc extension with the net8 out-of-process one
Remove the old net472 VSPackage implementation (StridePackage, StrideCommandsProxy,
NShader language service, classifiers, code generators, .vsct/.vsixmanifest) and its
obsolete integration tests, and promote the net8 VisualStudio.Extensibility extension
(built in parallel as Package.New) into its place as Stride.VisualStudio.Package.

Delivery is unchanged: PackageInstall still installs the vsix, and the nuspec/VSIXPlugin
still pack it as tools\Stride.vsix. The nuspec now sources the SDK-built vsix via a
$VsixPath$ token that VSIXPlugin fills from the project's $(OutputPath), so it tracks
$(Configuration)/$(TargetFramework) instead of hardcoding the bin subfolder.
2026-07-04 17:46:17 +09:00
Virgile Bello a0263e417e Stride.VisualStudio.Package.New: add Regenerate Stride Shaders command
Right-click a solution, project, or .sdsl/.sdfx file in Solution Explorer to
regenerate the shader C# for Stride 4.0-4.3 projects, delegating to the bundled
stride CLI (generate-legacy-shader-code). 4.4+ generates it at build.

Output streams live into a dialog while the CLI runs. Placed on the per-node
"…EXPLORE" context-menu groups (solution/project/item).
2026-07-04 15:16:49 +09:00
Virgile Bello d8eb5e9ef1 Stride.VisualStudio.Package.New: load only for Stride solutions 2026-07-04 15:16:44 +09:00
Virgile Bello a86b292c31 Stride.VisualStudio.Package.New: add Update Stride Version command 2026-07-04 15:16:41 +09:00
Virgile Bello 92409cbe33 Stride.VisualStudio: add net8 out-of-process extension (resolver + Open in Game Studio) 2026-07-04 15:16:38 +09:00
Virgile Bello b3af8f02d3 Stride.VisualStudio.Package: project cleanup (drop launchSettings devenv workaround, deploy via solution config, remove no-op EmbeddedResource Update) 2026-07-04 15:16:37 +09:00
Virgile Bello 8fe408b665 Stride.VisualStudio.Package: remove dead platform-switching (startup-project/config sync) 2026-07-04 15:16:36 +09:00
Virgile Bello 0d02c5a3be templates: stamp the engine version into packed template content (concrete Stride.* PackageReferences, not just $EngineVersion$ literals) 2026-07-03 18:58:04 +09:00
Virgile Bello 1689e403ff Fix Stride.VisualStudio.Package build: compile GraphicsApiSelector.cs alongside RestoreHelper.cs 2026-07-02 12:00:58 +09:00
Virgile Bello 929d0008cb Classify project type from OutputType, drop explicit StrideProjectType=Executable
The editor's main load path already derived project type from OutputType;
StrideProjectType=Executable was only read in two spots (the VS package and a
dead project-reference path) and set redundantly in every executable head.

- VSProjectHelper.GetProjectTypeFromProject now classifies from OutputType
  (winexe/exe/appcontainerexe/AndroidApplication -> Executable, else Library),
  and PackageSession.Dependencies uses it (single source of truth).
- StridePackage.IsProjectExecutable checks OutputType.
- Remove <StrideProjectType>Executable</StrideProjectType> from samples/templates.

Unset OutputType falls to Library, matching the .NET SDK default. The Cpp/CSharp
auto-detection in Stride.Platform.props is unaffected.
2026-07-01 19:04:11 +09:00
Virgile Bello 9989d3fafe templates: exclude .sdtpl metadata dir from instantiated projects 2026-06-30 14:35:48 +09:00
Virgile Bello f47b2f0bc0 templates: generate .slnx for new projects
dotnet new / GameStudio new-game now synthesize MyTemplate.slnx (each
platform exec marked DefaultStartup since .slnx ignores file order for
the startup project). Editor SolutionExtension and 'stride new' discovery
follow. Existing .sln projects keep their format (solution serialization
picks by extension on save).
2026-06-30 13:45:23 +09:00
Virgile Bello 11ecd98ffa build: convert all solutions from .sln to .slnx
- migrate 15 tracked solutions; update .slnf paths, workflows, build
  files, repo-root markers, ios/android runners, .vscode, docs
- Stride.slnx: drop vestigial x86/x64/Mixed Platforms (solution is
  all-managed) and build with Platform=Any CPU; GameStudio listed first
  so it stays the default startup project
- Stride.VisualStudio.slnx: Package project first (default startup)
- samples: drop dead AppStore/Testing/Windows configs (no per-platform
  exec projects remain, only .Game + .Windows)
2026-06-30 13:45:23 +09:00
Virgile Bello 352619f421 build: fix Stride.VisualStudio.Package after solution reader/writer were replaced by SolutionPersistence 2026-06-29 13:10:14 +09:00
Virgile Bello 1d0dbca41a templates: skip bin/obj/.vs when staging sample content
Build artifacts bloat the package and their deep asset-build cache paths can exceed Windows MAX_PATH once nested under the staging dir.
2026-06-27 03:25:14 +09:00
Virgile Bello 8bcd9204a1 build: pack root-app editors (GameStudio, EffectCompilerServer) under tools/ only
These are run, never referenced as libraries, so a lib/ folder made them phantom libraries
(and put the apphost beside the managed dll). All their package payload flows through
BuildOutputInPackage, so BuildOutputTargetFolder=tools relocates everything (exe, dll, Roslyn,
BuildHost, resolver bootstrap) to tools/<tfm>/ with no lib/. NU5128 (no lib/ but has dependencies)
is expected and suppressed - the dependency closure is still declared so it restores.

Point install-gamestudio.targets at tools/. The launcher already probes tools/ before lib/
(UpdateFrameworks + LocateMainExecutable), so no launcher change is needed.
2026-06-25 13:45:13 +09:00
Virgile Bello 14d3bed506 build: split dual-role exes (AssetCompiler, ConnectionRouter) into lib/ reference + tools/ runnable
AssetCompiler and ConnectionRouter are referenced in-process (Stride.Editor, GameStudio,
Presentation) AND run as a tool/service. Packing the whole runnable app (apphost + resolver
bootstrap dlls) into lib/ made consumers inherit those dlls and exposed the apphost as a duplicate
of the managed assembly (found as both .exe and .dll), which blocks deps.json generation.

Add a gated StridePackRunnableInTools option to the shared NuGet-resolver targets: it packs the
runnable app under tools/<tfm>/ instead of the build-output folder (lib/), leaving lib/<tfm>/ with
just the reference assembly. Default behaviour (root apps) is unchanged. Opt both in. AssetCompiler's
StrideCompileAssetCommand locator is repointed lib/->tools/; ConnectionRouter needs no locator change
(RouterHelper and the router's service resolution find the exe by package file search).
2026-06-25 13:45:12 +09:00
Virgile Bello 9b176cb0d8 importer: resolve highest-version libassimp so Linux/macOS loads Assimp 6 instead of the stale v5 soname Silk.NET requests (regression from #3126) 2026-06-23 17:57:26 +09:00
Virgile Bello ab55182347 templates: fix BasicCameraController camera-script injection 2026-06-19 16:16:27 +09:00
Virgile Bello 78c62d3f04 build: declare runtime TargetFrameworks explicitly, drop StrideRuntime indirection
Runtime assemblies now set <TargetFrameworks> from precomputed props-time sets
(StrideRuntimeTargetFrameworks[/Windows/MacOS]) instead of the StrideRuntime
boolean expanded in Stride.Frameworks.targets. Behaviour is identical (verified
across platform configs); the literal element makes Roslyn MSBuildWorkspace
tooling (LSPs, analyzers) treat them as SDK-style.
2026-06-18 17:40:40 +09:00
Virgile Bello acc984103e build: release + VSIX packaging via dotnet build (macOS platform wiring, binlog option, locate-devenv enumerates VS) 2026-06-13 22:00:47 +09:00
Virgile Bello 968e793164 tools: remove vendored DirectXTex source + legacy vcxproj/sln (DxtWrapper builds via CMake in dep-dxtwrapper.yml) 2026-06-13 17:49:56 +09:00
Vaclav Elias cc95f8f082 Merge pull request #3211 from VaclavElias/refactor-remove-references
refactor: Remove unused package references from project files
2026-06-12 17:12:48 +09:00
Virgile Bello 2c9a7765c4 templates: wire orientation choice into iOS UIInterfaceOrientation + Info.plist scaffold 2026-06-11 15:04:58 +09:00
Virgile Bello cc82f2fe60 templates: pack missing platform exec projects into every sample
TemplatePreprocessor copies MyTemplate.{Platform}/ from a reference template
(NewGame) at pack time for any platform the sample didn't author by hand.
NewGame's library dir renamed MyTemplate/ → MyTemplate.Game/ to unify the
naming with samples so injected csprojs reference the right sibling verbatim.
2026-06-10 17:27:10 +09:00
Virgile Bello 7128ee1d70 Stride.Assets: frame SDF glyphs inside the msdfgen wrapper
The C# importer hand-computed msdfgen's scale/translate across three coordinate
systems and got the glyph bounds wrong, producing flat single-distance bitmaps
(garbage SDF). Move the framing into the wrapper: msdfgenGenerateGlyph frames the
glyph from shape.getBounds() and returns the bitmap, pixel offsets and advance, so
the importer does no coordinate math. Rebuild stride_msdfgen for the new entry
point (msdfgen v1.12, FreeType VER-2-13-3).

Tests: TestSignedDistanceFieldFont asserts glyph metrics; TestStaticSpriteFont
gains an SDF rendering frame exercising the importer + SDF shader end to end.
2026-06-10 06:04:06 +00:00
Virgile Bello a8e339e29a templates: UpdatePlatforms reuses stride-game instead of a duplicate template
stride-platforms was a near-clone of stride-game and drifting from it (e.g. the
icon refresh only landed on NewGame's copy). Collapsed via an updateOnly
preprocessor symbol that excludes MyTemplate/ + *.sln; UpdatePlatformsGenerator
drives stride-game with updateOnly=true. samples/Platforms/Platforms/ deleted.
2026-06-08 01:03:05 +09:00
Virgile Bello cf79c9ce8b templates: drop Stride.Core.ProjectTemplating + tests
The T4-based .ttproj engine is no longer reachable from any live generator;
deleting the project along with its ProjectReferences in Stride.Assets and
Stride.Assets.Presentation and the solution entries.
2026-06-08 01:03:02 +09:00
Virgile Bello f223a51be5 templates: move DotNetNew machinery into Stride.Assets
WPF dialog injection becomes an IDotNetNewParameterPrompt constructor
parameter (WpfDotNetNewParameterPrompt adapter stays in Presentation).
SdtplMetadata also moves here and is linked from the CLI tool.
2026-06-06 20:42:42 +09:00
Virgile Bello c5e242c339 Upgrade to Avalonia 12.0.2 2026-06-02 21:59:40 +09:00