// Copyright HTC Corporation. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "ARPin.h" #include "Kismet/BlueprintAsyncActionBase.h" #include "ViveOpenXRAnchorAsyncTask.h" #include "ViveOpenXRAnchorAsyncAction.generated.h" //DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FExportCompleteOutputPin, const FString&, filePath); /** * @param folderPath The full path of the result exported folder. */ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FExportAllCompleteOutputPin, const FString&, folderPath); //DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FImportCompleteOutputPin, UARPin*, AR_pin); /** * @param AR_pins All AR Pins imported from the folder. */ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FImportAllCompleteOutputPin, const TArray&, AR_pins); DECLARE_DYNAMIC_MULTICAST_DELEGATE(FExportImportFailedOutputPin); /** * */ //UCLASS() //class VIVEOPENXRANCHOR_API UViveOpenXRAnchorExportAsyncAction : public UBlueprintAsyncActionBase, public FTickableGameObject //{ // GENERATED_BODY() // //public: // UPROPERTY(BlueprintAssignable) // FExportCompleteOutputPin Complete; // // UPROPERTY(BlueprintAssignable) // FExportImportFailedOutputPin Failure; // //private: // UObject* WorldContextObject; // UARPin* mARPin = nullptr; // FString mFolder = ""; // FString mFileName = ""; // UExportTask* task = nullptr; // //public: // UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", DisplayName = "Export Saved ARPin"), Category = "ViveOpenXR|SpatialAnchor|Persistence") // static UViveOpenXRAnchorExportAsyncAction* ExportPersistedARPin(UObject* WorldContextObject, UARPin* AR_Pin, const FString folderName = "ARPins"); // // // UBlueprintAsyncActionBase interface // virtual void Activate() override; // virtual void Tick(float DeltaTime) override {}; // // TStatId GetStatId() const override { return TStatId(); } //private: // //}; /** * Expory All Saved AR Pins to external storage folder. */ UCLASS() class VIVEOPENXRANCHOR_API UViveOpenXRAnchorExportAllAsyncAction : public UBlueprintAsyncActionBase, public FTickableGameObject { GENERATED_BODY() public: UPROPERTY(BlueprintAssignable) FExportAllCompleteOutputPin Complete; UPROPERTY(BlueprintAssignable) FExportImportFailedOutputPin Failure; private: UObject* WorldContextObject; FString mFolder = ""; TArray tasks; public: /** * Export All Saved AR Pins to external storage folder. * @param folderName The folder name to store exported AR Pins. */ UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", DisplayName = "Export All Saved ARPins"), Category = "ViveOpenXR|SpatialAnchor|Persistence") static UViveOpenXRAnchorExportAllAsyncAction* ExportAllPersistedARPins(UObject* WorldContextObject, const FString folderName = "ARPins"); // UBlueprintAsyncActionBase interface virtual void Activate() override; virtual void Tick(float DeltaTime) override {}; TStatId GetStatId() const override { return TStatId(); } private: }; /** * */ //UCLASS() //class VIVEOPENXRANCHOR_API UViveOpenXRAnchorImportAsyncAction : public UBlueprintAsyncActionBase, public FTickableGameObject //{ // GENERATED_BODY() // //public: // UPROPERTY(BlueprintAssignable) // FImportCompleteOutputPin Complete; // // UPROPERTY(BlueprintAssignable) // FExportImportFailedOutputPin Failure; // //private: // UObject* WorldContextObject; // FString mFilepath = ""; // TArray mData; // UImportTask* task = nullptr; // FString anchorName; // //public: // UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", DisplayName = "Import ARPin from File"), Category = "ViveOpenXR|SpatialAnchor|Persistence") // static UViveOpenXRAnchorImportAsyncAction* ImportPersistedARPinFromFile(UObject* WorldContextObject, const FString filePath); // // //UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", DisplayName = "Import ARPin from Data"), Category = "ViveOpenXR|SpatialAnchor|Persistence") // //static UViveOpenXRAnchorImportAsyncAction* ImportPersistedARPinFromData(UObject* WorldContextObject, const TArray& data); // // // UBlueprintAsyncActionBase interface // virtual void Activate() override; // virtual void Tick(float DeltaTime) override {}; // // //virtual void Tick(float DeltaTime) override; // TStatId GetStatId() const override { return TStatId(); } //private: // //}; /** * */ UCLASS() class VIVEOPENXRANCHOR_API UViveOpenXRAnchorImportAllAsyncAction : public UBlueprintAsyncActionBase, public FTickableGameObject { GENERATED_BODY() public: UPROPERTY(BlueprintAssignable) FImportAllCompleteOutputPin Complete; UPROPERTY(BlueprintAssignable) FExportImportFailedOutputPin Failure; private: UObject* WorldContextObject; FString mFolderpath = ""; TArray tasks; TArray pins; public: /** * Import All Saved AR Pins from external storage folder. * @param folderPath The full path or relative path to external storage where contains the Persisted Anchor files. */ UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", DisplayName = "Import ARPins from Folder"), Category = "ViveOpenXR|SpatialAnchor|Persistence") static UViveOpenXRAnchorImportAllAsyncAction* ImportAllPersistedARPinsFromFolder(UObject* WorldContextObject, const FString folderPath); // UBlueprintAsyncActionBase interface virtual void Activate() override; virtual void Tick(float DeltaTime) override {}; TStatId GetStatId() const override { return TStatId(); } private: };