NVIDIA DeepLearning Dataset Synthesizer (NDDS)
 All Classes Namespaces Functions Variables Typedefs Pages
NVDataObject.h
1 /*
2 * Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
3 *
4 * NVIDIA CORPORATION and its licensors retain all intellectual property
5 * and proprietary rights in and to this software, related documentation
6 * and any modifications thereto. Any use, reproduction, disclosure or
7 * distribution of this software and related documentation without an express
8 * license agreement from NVIDIA CORPORATION is strictly prohibited.
9 */
10 
11 #pragma once
12 
13 #include "GameFramework/Actor.h"
14 #include "NVDataObject.generated.h"
15 
16 class UNVDataObject;
17 
18 DECLARE_LOG_CATEGORY_EXTERN(LogNVDataObject, Log, All)
19 
20 // UNVDataObject contain data which define how we want to create an object in the game
21 UCLASS()
22 class NVDATAOBJECT_API UNVDataObjectAsset : public UObject
23 {
24  GENERATED_BODY()
25 
26 public:
27  UNVDataObjectAsset(const FObjectInitializer& ObjectInitializer);
28 
29  static bool SerializeToJsonFile(const UNVDataObjectAsset* DataObject, const FString& OutputFilePath);
30  static UNVDataObjectAsset* DeserializeFromJsonFile(const FString& SourceFilePath, UObject* InParent, FName InName, EObjectFlags Flags);
31  static UNVDataObjectAsset* DeserializeFromJsonString(const FString& SourceJsonString, UObject* InParent, FName InName, EObjectFlags Flags);
32  static UObject* CreateObjectFromDefinitionData(UNVDataObjectAsset* DefinitionDataObj);
33 
34  virtual void Serialize(FArchive& Ar) override;
35 
36  virtual bool IsAsset() const override
37  {
38  return true;
39  }
40 
41  virtual void PostSaveRoot(bool bCleanupIsRequired) override;
42 
43 public: // Editor properties
44  UPROPERTY(EditAnywhere, SimpleDisplay)
45  UNVDataObject* DataObject;
46 
47 #if WITH_EDITORONLY_DATA
48 public:
49  UPROPERTY(VisibleAnywhere, Instanced, AdvancedDisplay, Category = Config)
50  class UAssetImportData* AssetImportData;
51 
52  virtual void GetAssetRegistryTags(TArray<FAssetRegistryTag>& OutTags) const override;
53  virtual void PostInitProperties() override;
54 #endif //WITH_EDITORONLY_DATA
55 };
56 
57 UCLASS(DefaultToInstanced, editinlinenew)
58 class NVDATAOBJECT_API UNVDataObject : public UObject
59 {
60  GENERATED_BODY()
61 
62 public:
63  UNVDataObject(const FObjectInitializer& ObjectInitializer);
64 
65  static bool SerializeToJsonFile(const UNVDataObject* DataObject, const FString& OutputFilePath);
66  static UNVDataObject* DeserializeFromJsonFile(const FString& SourceFilePath, UObject* InParent, FName InName, EObjectFlags Flags);
67  static UNVDataObject* DeserializeFromJsonString(const FString& SourceJsonString, UObject* InParent, FName InName, EObjectFlags Flags);
68  static UObject* CreateObjectFromDefinitionData(UNVDataObjectAsset* DefinitionDataObj);
69 
70  virtual void Serialize(FArchive& Ar) override;
71 
72 protected: // Editor properties
73  // The class of the logic object
74  UPROPERTY(VisibleAnywhere, AdvancedDisplay, Category = Config)
75  TSubclassOf<UObject> LogicHandlerClassType;
76 };
77 
78 UINTERFACE()
79 class NVDATAOBJECT_API UNVDataObjectOwner : public UInterface
80 {
81  GENERATED_UINTERFACE_BODY()
82 };
83 
84 class NVDATAOBJECT_API INVDataObjectOwner
85 {
86  GENERATED_IINTERFACE_BODY()
87 
88 public:
89  virtual void SetDataObject(UNVDataObjectAsset* NewDataObject) = 0;
90  virtual const UNVDataObjectAsset* GetDataObject() const = 0;
91 };