diff --git a/editor/src/com/talosvfx/talos/editor/addons/scene/assets/AssetRepository.java b/editor/src/com/talosvfx/talos/editor/addons/scene/assets/AssetRepository.java index a1c43e711..e6abcde74 100644 --- a/editor/src/com/talosvfx/talos/editor/addons/scene/assets/AssetRepository.java +++ b/editor/src/com/talosvfx/talos/editor/addons/scene/assets/AssetRepository.java @@ -96,6 +96,8 @@ public class AssetRepository extends BaseAssetRepository implements Observer { private ObjectSet newFilesSeen = new ObjectSet<>(); + public static boolean dragAndDropping = false; + public GameAsset getAssetForUniqueIdentifier (UUID uuid, GameAssetType type) { if (uniqueIdentifierGameAssetMap.containsKey(type)) { if (uniqueIdentifierGameAssetMap.get(type).containsKey(uuid)) { @@ -1305,8 +1307,15 @@ public GameAsset createOrUpdateGameAssetForType (GameAssetType assetTypeFromE } VFXProjectData projectData = VFXProjectSerializer.readTalosTLSProject(value.handle, getTalosContext().getIdentifier()); + + ((GameAsset) gameAssetOut).setResourcePayload(projectData); + if (dragAndDropping) { + Toasts.getInstance().showInfoToast("Auto saved imported VFX " + value.handle.name());; + AssetRepository.getInstance().saveGameAssetResourceJsonToFile(gameAssetOut); + } + //This is mega hack. Only because we will be making it into DynamicNodeStage later ParticleNodeEditorApp app = new ParticleNodeEditorApp(); app.loadProject(projectData); diff --git a/editor/src/com/talosvfx/talos/editor/addons/scene/widgets/directoryview/DirectoryViewWidget.java b/editor/src/com/talosvfx/talos/editor/addons/scene/widgets/directoryview/DirectoryViewWidget.java index 11e92944b..eb4d6de6e 100644 --- a/editor/src/com/talosvfx/talos/editor/addons/scene/widgets/directoryview/DirectoryViewWidget.java +++ b/editor/src/com/talosvfx/talos/editor/addons/scene/widgets/directoryview/DirectoryViewWidget.java @@ -542,6 +542,7 @@ private void handlePayloadDropToDirectory(GlobalDragAndDrop.BaseDragAndDropPaylo } if (!files.isEmpty()) { + AssetRepository.dragAndDropping = true; asyncHandleFiles(files, targetDir, copy, 0); } } @@ -571,6 +572,8 @@ private void asyncHandleFiles(Array files, FileHandle targetDir, boo // Note: fileHandle is current directory open in view projectExplorerWidget.expand(fileHandle.path()); projectExplorerWidget.select(fileHandle.path()); + + AssetRepository.dragAndDropping = false; }); } else { moveFileHandle(source, targetDir, () -> { diff --git a/runtimes/talos/src/main/java/com/talosvfx/talos/runtime/assets/GameResourceOwner.java b/runtimes/talos/src/main/java/com/talosvfx/talos/runtime/assets/GameResourceOwner.java index 28e6f155c..34ea4a581 100644 --- a/runtimes/talos/src/main/java/com/talosvfx/talos/runtime/assets/GameResourceOwner.java +++ b/runtimes/talos/src/main/java/com/talosvfx/talos/runtime/assets/GameResourceOwner.java @@ -57,7 +57,7 @@ static GameAsset readAsset (Json json, JsonValue jsonValue) { return asset; } else { GameAsset assetForUniqueIdentifier = baseAssetRepository.getAssetForUniqueIdentifier(uuid, type); - if (assetForUniqueIdentifier == null) { + if (assetForUniqueIdentifier == null || assetForUniqueIdentifier.isNonFound()) { if (identifier != null) { GameAsset asset = baseAssetRepository.getAssetForIdentifier(identifier, type); if (asset == null) {