ArticyXImporter
ArticyXImporter for Unreal Engine
Loading...
Searching...
No Matches
ObjectDefinitionsImport.h
1//
2// Copyright (c) 2023 articy Software GmbH & Co. KG. All rights reserved.
3//
4
5#pragma once
6
7#include "ArticyJSONFactory.h"
8#include "PredefinedTypes.h"
9#include "ArticyObject.h"
10#include "ArticyTexts.h"
11
12#include "ObjectDefinitionsImport.generated.h"
13
14class UArticyObject;
15struct FArticyModelDef;
18
22USTRUCT()
24{
25 GENERATED_BODY()
26
27public:
28 UPROPERTY(VisibleAnywhere, Category = "TemplateConstraint")
29 FString Property = "";
30 UPROPERTY(VisibleAnywhere, Category = "TemplateConstraint")
31 FString Type = "";
32
34 UPROPERTY(VisibleAnywhere, Category = "TemplateConstraint")
35 bool IsLocalized = false;
36
42 void ImportFromJson(const TSharedPtr<FJsonObject> JsonProperty);
43};
44
48USTRUCT()
50{
51 GENERATED_BODY()
52
53public:
61 void ImportFromJson(const TSharedPtr<FJsonObject> JsonProperty, const UArticyImportData* Data, const TArray<FArticyTemplateConstraint>* OptionalConstraints = nullptr);
62
69 void GenerateCode(CodeFileGenerator& header, const UArticyImportData* Data) const;
70
77 void GatherScript(const TSharedPtr<FJsonObject>& JsonValue, UArticyImportData* Data) const;
78
88 void InitializeModel(
89 UArticyBaseObject* Model,
90 const FString& Path,
91 const TSharedPtr<FJsonObject>& JsonValue,
92 const UArticyImportData* Data,
93 const FString& PackageName) const;
94
100 const FName& GetPropetyName() const { return Property; }
101
107 const FName& GetOriginalType() const { return Type; }
108
114 const FName& GetOriginalItemType() const { return ItemType; }
115
122 FString GetCppType(const UArticyImportData* Data) const;
123
124private:
125 UPROPERTY(VisibleAnywhere, Category = "ObjectProperty")
126 FName Property = "";
127 UPROPERTY(VisibleAnywhere, Category = "ObjectProperty")
128 FName Type = "";
129
130 UPROPERTY(VisibleAnywhere, Category = "ObjectProperty")
131 FName ItemType = "";
132 UPROPERTY(VisibleAnywhere, Category = "ObjectProperty")
133 FString DisplayName = "";
134 UPROPERTY(VisibleAnywhere, Category = "ObjectProperty")
135 FString Tooltip = "";
136
137 UPROPERTY(VisibleAnywhere, Category = "ObjectProperty")
138 FArticyType ArticyType;
139
140 friend class UArticyImportData;
141};
142
146USTRUCT()
148{
149 GENERATED_BODY()
150
151public:
152 UPROPERTY(VisibleAnywhere, Category = "EnumValue")
153 FString Name = "";
154 UPROPERTY(VisibleAnywhere, Category = "EnumValue")
155 uint8 Value = 0; //0..255, limited by UE!
156
162 void ImportFromJson(const TPair<FString, TSharedPtr<FJsonValue>> JsonKeyValue);
163};
164
168USTRUCT()
170{
171 GENERATED_BODY()
172
173public:
180 void ImportFromJson(const TSharedPtr<FJsonObject> JsonObject, const UArticyImportData* Data);
181
188 void GenerateDefCode(CodeFileGenerator& header, const UArticyImportData* Data) const;
189
196 void GeneratePropertyCode(CodeFileGenerator& header, const UArticyImportData* Data) const;
197
204 void GatherScripts(const TSharedPtr<FJsonObject>& Json, UArticyImportData* Data) const;
205
215 void InitializeModel(
216 UArticyPrimitive* Model,
217 const FString& Path,
218 const TSharedPtr<FJsonObject>& Json,
219 const UArticyImportData* Data,
220 const FString& PackageName) const;
221
229 FString GetCppType(const UArticyImportData* Data, bool bAsVariable) const;
230
237 UClass* GetUClass(const UArticyImportData* Data) const;
238
244 FString GetTechnicalName() const { return TechnicalName; }
245
251 FString GetDisplayName() const { return DisplayName; }
252
253private:
254 UPROPERTY(VisibleAnywhere, Category = "TemplateFeature")
255 FString TechnicalName = "";
256 UPROPERTY(VisibleAnywhere, Category = "TemplateFeature")
257 FString DisplayName = "";
258
259 UPROPERTY(VisibleAnywhere, Category = "TemplateFeature")
260 TArray<FArticyPropertyDef> Properties;
261
262 UPROPERTY(VisibleAnywhere, Category = "TemplateFeature")
263 TArray<FArticyTemplateConstraint> Constraints;
264
265 UPROPERTY(VisibleAnywhere, Category = "TemplateFeature")
266 FArticyType ArticyType;
267};
268
272USTRUCT()
274{
275 GENERATED_BODY()
276
277public:
284 void ImportFromJson(const TSharedPtr<FJsonObject> JsonObject, const UArticyImportData* Data);
285
292 void GenerateFeaturesDefs(CodeFileGenerator& header, const UArticyImportData* Data) const;
293
300 void GenerateProperties(CodeFileGenerator& header, const UArticyImportData* Data) const;
301
308 void GatherScripts(const TSharedPtr<FJsonObject> Values, UArticyImportData* Data) const;
309
319 void InitializeModel(
320 UArticyPrimitive* Model,
321 const FString& Path,
322 const TSharedPtr<FJsonObject> Values,
323 const UArticyImportData* Data,
324 const FString& PackageName) const;
325
331 FString GetDisplayName() const { return DisplayName; }
332
338 const TArray<FArticyTemplateFeatureDef>& GetFeatures() const { return Features; }
339
340 UPROPERTY(VisibleAnywhere, Category = "Template")
341 FArticyType ArticyType;
342
343private:
344 UPROPERTY(VisibleAnywhere, Category = "Template")
345 FString TechnicalName = "";
346 UPROPERTY(VisibleAnywhere, Category = "Template")
347 FString DisplayName = "";
348
349 UPROPERTY(VisibleAnywhere, Category = "Template")
350 TArray<FArticyTemplateFeatureDef> Features;
351
352};
353
354//---------------------------------------------------------------------------//
355
359UENUM()
360enum class EObjectDefType : uint8
361{
362 Model, //just a Type with properties, no Template
363 Enum,
364 Template,
365};
366
370USTRUCT()
372{
373 GENERATED_BODY()
374
375public:
382 void ImportFromJson(const TSharedPtr<FJsonObject> JsonObjDef, const UArticyImportData* Data);
383
391 bool IsBaseProperty(FName Property, const UArticyImportData* Data) const;
392
399 void GenerateCode(CodeFileGenerator& header, const UArticyImportData* Data) const;
400
407 void GatherScripts(const FArticyModelDef& Values, UArticyImportData* Data) const;
408
417 void InitializeModel(
418 UArticyPrimitive* Model,
419 const FArticyModelDef& Values,
420 const UArticyImportData* Data,
421 const FString& PackageName) const;
422
430 FString GetCppType(const UArticyImportData* Data, const bool bForProperty) const;
431
438 FString GetCppBaseClasses(const UArticyImportData* Data) const;
439
445 const FName& GetOriginalType() const { return Type; }
446
452 const TArray<FArticyTemplateFeatureDef>& GetFeatures() const;
453
454 UPROPERTY(VisibleAnywhere, Category = "ObjectDef")
455 FArticyType ArticyType;
456
457private:
458 UPROPERTY(VisibleAnywhere, Category = "ObjectDef")
459 EObjectDefType DefType = EObjectDefType::Enum;
460
461 UPROPERTY(VisibleAnywhere, Category = "ObjectDef")
462 FName Type = "";
463 UPROPERTY(VisibleAnywhere, Category = "ObjectDef")
464 FName Class = "";
465 UPROPERTY(VisibleAnywhere, Category = "ObjectDef")
466 FName InheritsFrom = "";
467
469 UPROPERTY(VisibleAnywhere, Category = "ObjectDef")
470 TArray<FArticyPropertyDef> Properties;
472 UPROPERTY(VisibleAnywhere, Category = "ObjectDef")
473 FArticyTemplateDef Template;
474
476 UPROPERTY(VisibleAnywhere, Category = "ObjectDef")
477 TArray<FArticyEnumValue> Values;
478};
479
483USTRUCT()
485{
486 GENERATED_BODY()
487
488public:
495 void ImportFromJson(const TArray<TSharedPtr<FJsonValue>>* Json, const UArticyImportData* Data);
496
503 void GatherScripts(const FArticyModelDef& Values, UArticyImportData* Data) const;
504
510 void GatherText(const TSharedPtr<FJsonObject>& Json);
511
520 void InitializeModel(UArticyPrimitive* Model, const FArticyModelDef& Values, const UArticyImportData* Data, const FString& PackageName) const;
521
530 FString GetCppType(const FName& OriginalType, const UArticyImportData* Data, const bool bForProperty) const;
531
538 static const FString& GetCppDefaultValue(const FName& OriginalType);
539
543 struct FClassInfo
544 {
545 FClassInfo() = default;
546 FClassInfo(const FString& Name, UClass* Class) : CppTypeName(Name), StaticClass(Class) {}
547
548 FString CppTypeName;
549 UClass* StaticClass;
550 };
551
559 static const FClassInfo& GetDefaultBaseClass(const FName& OriginalType, const UArticyImportData* Data);
560
567 static const FName& GetProviderInterface(const FArticyPropertyDef& Property);
568
576 static void SetProp(const FName& OriginalType, const FName& Property, PROP_SETTER_PARAMS);
577
584 bool IsNewFeatureType(const FName& CppType) const;
585
591 TMap<FName, FArticyObjectDef>& GetTypes() { return Types; }
592
598 const TMap<FName, FArticyObjectDef>& GetTypes() const { return Types; }
599
605 TMap<FString, FArticyTexts>& GetTexts() { return Texts; }
606
612 const TMap<FString, FArticyTexts>& GetTexts() const { return Texts; }
613
619 const TMap<FName, FArticyTemplateFeatureDef> GetFeatures() const { return FeatureDefs; }
620
621private:
627 UPROPERTY(VisibleAnywhere, Category = "ObjectDefinitions")
628 TMap<FName, FArticyObjectDef> Types;
629
630 UPROPERTY(VisibleAnywhere, Category = "ObjectDefinitions")
631 TMap<FString, FArticyTexts> Texts;
632
637 UPROPERTY(VisibleAnywhere, Category = "ObjectDefinitions")
638 mutable TSet<FName> FeatureTypes;
639
640 UPROPERTY(VisibleAnywhere, Category = "ObjectDefinitions")
641 TMap<FName, FArticyTemplateFeatureDef> FeatureDefs;
642};
A class to generate and manage code files with convenience methods for generating code lines,...
Definition CodeFileGenerator.h:16
Definition ArticyBaseObject.h:25
Definition ArticyImportData.h:411
Definition ArticyObject.h:19
Definition ArticyPrimitive.h:17
Definition ObjectDefinitionsImport.h:148
Definition PackagesImport.h:24
Definition ObjectDefinitionsImport.h:372
void GenerateCode(CodeFileGenerator &header, const UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:185
bool IsBaseProperty(FName Property, const UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:173
FString GetCppBaseClasses(const UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:352
const FName & GetOriginalType() const
Definition ObjectDefinitionsImport.h:445
Definition ObjectDefinitionsImport.h:544
Definition ObjectDefinitionsImport.h:485
static const FString & GetCppDefaultValue(const FName &OriginalType)
Definition ObjectDefinitionsImport.cpp:982
const TMap< FName, FArticyObjectDef > & GetTypes() const
Definition ObjectDefinitionsImport.h:598
static const FClassInfo & GetDefaultBaseClass(const FName &OriginalType, const UArticyImportData *Data)
Definition ObjectDefinitionsImport.cpp:901
void InitializeModel(UArticyPrimitive *Model, const FArticyModelDef &Values, const UArticyImportData *Data, const FString &PackageName) const
Definition ObjectDefinitionsImport.cpp:856
void GatherScripts(const FArticyModelDef &Values, UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:837
static void SetProp(const FName &OriginalType, const FName &Property, PROP_SETTER_PARAMS)
Definition ObjectDefinitionsImport.cpp:1000
bool IsNewFeatureType(const FName &CppType) const
Definition ObjectDefinitionsImport.cpp:1022
FString GetCppType(const FName &OriginalType, const UArticyImportData *Data, const bool bForProperty) const
Definition ObjectDefinitionsImport.cpp:879
TMap< FString, FArticyTexts > & GetTexts()
Definition ObjectDefinitionsImport.h:605
static const FName & GetProviderInterface(const FArticyPropertyDef &Property)
Definition ObjectDefinitionsImport.cpp:943
void ImportFromJson(const TArray< TSharedPtr< FJsonValue > > *Json, const UArticyImportData *Data)
Definition ObjectDefinitionsImport.cpp:785
const TMap< FName, FArticyTemplateFeatureDef > GetFeatures() const
Definition ObjectDefinitionsImport.h:619
const TMap< FString, FArticyTexts > & GetTexts() const
Definition ObjectDefinitionsImport.h:612
TMap< FName, FArticyObjectDef > & GetTypes()
Definition ObjectDefinitionsImport.h:591
void GatherText(const TSharedPtr< FJsonObject > &Json)
Definition ObjectDefinitionsImport.cpp:818
Definition ObjectDefinitionsImport.h:50
const FName & GetOriginalItemType() const
Definition ObjectDefinitionsImport.h:114
const FName & GetOriginalType() const
Definition ObjectDefinitionsImport.h:107
const FName & GetPropetyName() const
Definition ObjectDefinitionsImport.h:100
void GenerateCode(CodeFileGenerator &header, const UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:473
void GatherScript(const TSharedPtr< FJsonObject > &JsonValue, UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:486
Definition ObjectDefinitionsImport.h:24
void ImportFromJson(const TSharedPtr< FJsonObject > JsonProperty)
Definition ObjectDefinitionsImport.cpp:607
bool IsLocalized
Definition ObjectDefinitionsImport.h:35
Definition ObjectDefinitionsImport.h:274
void GenerateFeaturesDefs(CodeFileGenerator &header, const UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:53
const TArray< FArticyTemplateFeatureDef > & GetFeatures() const
Definition ObjectDefinitionsImport.h:338
FString GetDisplayName() const
Definition ObjectDefinitionsImport.h:331
void GenerateProperties(CodeFileGenerator &header, const UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:65
Definition ObjectDefinitionsImport.h:170
FString GetTechnicalName() const
Definition ObjectDefinitionsImport.h:244
void GenerateDefCode(CodeFileGenerator &header, const UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:680
FString GetDisplayName() const
Definition ObjectDefinitionsImport.h:251
void GeneratePropertyCode(CodeFileGenerator &header, const UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:705
UClass * GetUClass(const UArticyImportData *Data) const
Definition ObjectDefinitionsImport.cpp:755
Definition ArticyTexts.h:41
Definition ArticyType.h:52