From e25b4168841c20a7d7a1f76e9651c9baf33dc28a Mon Sep 17 00:00:00 2001 From: Will B Date: Tue, 5 May 2026 09:25:51 -0600 Subject: [PATCH] Add GetInputFiles to SpriteSheet Asset and Thumbnail compiler so changes to the source are picked up --- .../SpriteSheetThumbnailCompiler.cs | 19 +++++++++++++++++ .../Sprite/SpriteSheetAssetCompiler.cs | 21 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/sources/editor/Stride.Assets.Presentation/Thumbnails/SpriteSheetThumbnailCompiler.cs b/sources/editor/Stride.Assets.Presentation/Thumbnails/SpriteSheetThumbnailCompiler.cs index 69c25541c0..81221f6733 100644 --- a/sources/editor/Stride.Assets.Presentation/Thumbnails/SpriteSheetThumbnailCompiler.cs +++ b/sources/editor/Stride.Assets.Presentation/Thumbnails/SpriteSheetThumbnailCompiler.cs @@ -1,9 +1,12 @@ // Copyright (c) .NET Foundation and Contributors (https://dotnetfoundation.org/ & https://stride3d.net) and Silicon Studio Corp. (https://www.siliconstudio.co.jp) // Distributed under the MIT license. See the LICENSE.md file in the project root for more information. using System; +using System.Collections.Generic; +using System.IO; using Stride.Core.Assets; using Stride.Core.Assets.Compiler; using Stride.Core.BuildEngine; +using Stride.Core.Serialization.Contents; using Stride.Core.Mathematics; using Stride.Assets.Sprite; using Stride.Editor.Thumbnails; @@ -48,6 +51,22 @@ public SpriteSheetThumbnailCommand(ThumbnailCompilerContext context, AssetItem a { } + public override IEnumerable GetInputFiles() + { + foreach (var input in base.GetInputFiles()) + yield return input; + + var spriteSheet = (SpriteSheetAsset)Parameters.Asset; + if (spriteSheet?.Sprites == null) + yield break; + + foreach (var sprite in spriteSheet.Sprites) + { + if (sprite.Source != null && File.Exists(sprite.Source)) + yield return new ObjectUrl(UrlType.File, sprite.Source); + } + } + protected override void RenderSprites(RenderDrawContext context) { if (LoadedAsset == null || LoadedAsset.Sprites == null || LoadedAsset.Sprites.Count == 0) diff --git a/sources/engine/Stride.Assets/Sprite/SpriteSheetAssetCompiler.cs b/sources/engine/Stride.Assets/Sprite/SpriteSheetAssetCompiler.cs index ff84afb0c6..02f018713c 100644 --- a/sources/engine/Stride.Assets/Sprite/SpriteSheetAssetCompiler.cs +++ b/sources/engine/Stride.Assets/Sprite/SpriteSheetAssetCompiler.cs @@ -131,6 +131,27 @@ protected override void ComputeAssemblyHash(BinarySerializationWriter writer) writer.Write(TextureSerializationData.Version); } + public override IEnumerable GetInputFiles() + { + if (Parameters.SheetAsset.Packing.Enabled) + { + // When packing, source images are read directly from disk + foreach (var sprite in Parameters.SheetAsset.Sprites) + { + if (sprite.Source != null && File.Exists(sprite.Source)) + yield return new ObjectUrl(UrlType.File, sprite.Source); + } + } + else + { + // When not packing, textures are compiled by TextureConvertCommands so re-run when they change + foreach (var textureUrl in Parameters.ImageToTextureUrl.Values) + { + yield return new ObjectUrl(UrlType.Content, textureUrl); + } + } + } + protected override Task DoCommandOverride(ICommandContext commandContext) { var assetManager = new ContentManager(MicrothreadLocalDatabases.ProviderService);