ArticyXImporter
ArticyXImporter for Unreal Engine
Loading...
Searching...
No Matches
ArticyBaseTypes.h
1//
2// Copyright (c) 2023 articy Software GmbH & Co. KG. All rights reserved.
3//
4
5#pragma once
6
7#include "CoreMinimal.h"
8#include "ArticyHelpers.h"
9#include "ArticyBaseTypes.generated.h"
10
11class UArticyObject;
12
16USTRUCT(BlueprintType)
17struct ARTICYRUNTIME_API FArticyId
18{
19 GENERATED_BODY()
20
21public:
22
23 FArticyId() = default;
24
25 // ReSharper disable once CppNonExplicitConvertingConstructor
27 FArticyId(const uint64& Value) { *this = Value; }
28 // ReSharper disable once CppNonExplicitConvertingConstructor
30 FArticyId(const FString& Value) { *this = Value; }
32 FArticyId(const TSharedPtr<FJsonValue> Json) { *this = (Json->Type == EJson::String ? ArticyHelpers::HexToUint64(Json->AsString()) : -1); }
33
34 //========================================//
35
43 bool InitFromString(const FString InSourceString);
44
46 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Articy")
47 int32 Low = 0;
48
50 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Articy")
51 int32 High = 0;
52
53 //========================================//
54
56 uint64 Get() const { return static_cast<uint64>(High) << 32 | static_cast<uint64>(Low); }
57
59 FArticyId& operator=(const uint64& Value)
60 {
61 //the lower 32 bit are stored in Low, the higher 32 bit in high
62 Low = static_cast<int32>(Value & 0xFFFFFFFF);
63 High = static_cast<int32>(Value >> 32);
64
65 return *this;
66 }
67
68 FArticyId& operator=(const FString& Value)
69 {
70 return *this = ArticyHelpers::HexToUint64(Value);
71 }
72
74 operator uint64 const() const { return Get(); }
75
82 class UArticyPrimitive* GetObject(const UObject* WorldContext) const;
83
91 template<typename T>
92 T* GetObject(const UObject* WorldContext) const { return Cast<T>(GetObject(WorldContext)); }
93
94 //========================================//
95
102 friend uint32 GetTypeHash(const FArticyId& Id)
103 {
104 return Id.Low ^ Id.High;
105 }
106
108 bool IsNull() const
109 {
110 return High == 0 && Low == 0;
111 }
112
119 FString ToString() const
120 {
121 return FString::Printf(TEXT("(Low=%d, High=%d)"), Low, High);
122 }
123
130 FString ToAssetFriendlyString() const
131 {
132 return FString::Printf(TEXT("%d_%d"), Low, High);
133 }
134};
135
136//---------------------------------------------------------------------------//
137//---------------------------------------------------------------------------//
138
142USTRUCT(BlueprintType)
143struct ARTICYRUNTIME_API FArticySize
144{
145 GENERATED_BODY()
146
147public:
148
149 FArticySize() = default;
151 FArticySize(TSharedPtr<FJsonValue> Json);
152
154 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Articy")
155 float w = 0.f;
157 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Articy")
158 float h = 0.f;
159
161 FVector2D AsVector() const { return FVector2D{ w, h }; }
162};
163
167USTRUCT(BlueprintType)
168struct ARTICYRUNTIME_API FArticyRect
169{
170 GENERATED_BODY()
171
172public:
173
174 FArticyRect() = default;
176 FArticyRect(TSharedPtr<FJsonValue> Json);
177
179 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Articy")
180 float x = 0.f;
182 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Articy")
183 float y = 0.f;
185 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Articy")
186 float w = 0.f;
188 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Articy")
189 float h = 0.f;
190};
191
192//---------------------------------------------------------------------------//
193
197UENUM(BlueprintType)
198enum class EArticyPreviewImageViewBoxModes : uint8
199{
200 FromAsset = 0,
201 Custom = 1,
202};
203
207UENUM()
208enum class EArticyLocationAnchorSize : uint8
209{
210 Small = 0,
211 Medium = 1,
212 Large = 2,
213};
214
218USTRUCT(BlueprintType)
219struct ARTICYRUNTIME_API FArticyStdString
220{
221 GENERATED_BODY()
222
223public:
224
225 FArticyStdString() = default;
227 FArticyStdString(const TSharedPtr<FJsonValue>& Json);
228
230 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Articy")
231 FText Text;
232};
233
237USTRUCT(BlueprintType)
238struct ARTICYRUNTIME_API FArticyMultiLanguageString : public FArticyStdString
239{
240 GENERATED_BODY()
241
242};
Definition ArticyObject.h:19
Definition ArticyPrimitive.h:17
bool IsNull() const
Definition ArticyBaseTypes.h:108
FArticyId & operator=(const FString &Value)
Definition ArticyBaseTypes.h:68
FArticyId & operator=(const uint64 &Value)
Definition ArticyBaseTypes.h:59
FArticyId(const TSharedPtr< FJsonValue > Json)
Definition ArticyBaseTypes.h:32
friend uint32 GetTypeHash(const FArticyId &Id)
Definition ArticyBaseTypes.h:102
FString ToString() const
Definition ArticyBaseTypes.h:119
FArticyId(const uint64 &Value)
Definition ArticyBaseTypes.h:27
int32 Low
Definition ArticyBaseTypes.h:47
FString ToAssetFriendlyString() const
Definition ArticyBaseTypes.h:130
int32 High
Definition ArticyBaseTypes.h:51
T * GetObject(const UObject *WorldContext) const
Definition ArticyBaseTypes.h:92
FArticyId(const FString &Value)
Definition ArticyBaseTypes.h:30
uint64 Get() const
Definition ArticyBaseTypes.h:56
Definition ArticyBaseTypes.h:239
float h
Definition ArticyBaseTypes.h:189
float y
Definition ArticyBaseTypes.h:183
float x
Definition ArticyBaseTypes.h:180
float w
Definition ArticyBaseTypes.h:186
FVector2D AsVector() const
Definition ArticyBaseTypes.h:161
float w
Definition ArticyBaseTypes.h:155
float h
Definition ArticyBaseTypes.h:158
FText Text
Definition ArticyBaseTypes.h:231