ArticyXImporter
ArticyXImporter for Unreal Engine
Loading...
Searching...
No Matches
ArticyScriptFragment.h
1//
2// Copyright (c) 2023 articy Software GmbH & Co. KG. All rights reserved.
3//
4
5#pragma once
6
7#include "ArticyPausableType.h"
8#include "Interfaces/ArticyNode.h"
9#include "Interfaces/ArticyConditionProvider.h"
10#include "Interfaces/ArticyInstructionProvider.h"
11#include "ArticyScriptFragment.generated.h"
12
19UCLASS(BlueprintType, abstract)
20class ARTICYRUNTIME_API UArticyScriptFragment : public UArticyPrimitive
21{
22 GENERATED_BODY()
23public:
29 const FString& GetExpression() const { return Expression; }
30protected:
31
35 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Articy")
36 FString Expression = "";
37
43 int GetExpressionHash() const;
44
45 template<typename Type, typename PropType>
46 friend struct ArticyObjectTypeInfo;
47
53 void InitFromJson(TSharedPtr<FJsonValue> Json) override;
54
55private:
56
60 mutable int CachedExpressionHash;
61};
62
64
68UCLASS(BlueprintType)
70{
71 GENERATED_BODY()
72
73public:
74
82 bool Evaluate(class UArticyGlobalVariables* GV = nullptr, class UObject* MethodProvider = nullptr) override;
83};
84
88UCLASS(BlueprintType)
89class ARTICYRUNTIME_API UArticyCondition : public UArticyNode, public IArticyConditionProvider
90{
91 GENERATED_BODY()
92
93public:
99 UFUNCTION(BlueprintCallable, Category = "Condition")
101
107 EArticyPausableType GetType() override { return EArticyPausableType::Condition; }
108
116 bool Evaluate(class UArticyGlobalVariables* GV = nullptr, class UObject* MethodProvider = nullptr) override;
117
125 void Explore(UArticyFlowPlayer* Player, TArray<FArticyBranch>& OutBranches, const uint32& Depth) override;
126
127private:
128
132 UPROPERTY(transient)
133 mutable UArticyScriptCondition* Condition = nullptr;
134};
135
137
141UCLASS(BlueprintType)
143{
144 GENERATED_BODY()
145
146public:
147
154 void Execute(class UArticyGlobalVariables* GV = nullptr, class UObject* MethodProvider = nullptr) override;
155};
156
160UCLASS(BlueprintType)
161class ARTICYRUNTIME_API UArticyInstruction : public UArticyNode, public IArticyInstructionProvider
162{
163 GENERATED_BODY()
164
165public:
171 UFUNCTION(BlueprintCallable, Category = "Instruction")
173
179 EArticyPausableType GetType() override { return EArticyPausableType::Instruction; }
180
187 void Execute(class UArticyGlobalVariables* GV = nullptr, class UObject* MethodProvider = nullptr) override;
188
196 void Explore(UArticyFlowPlayer* Player, TArray<FArticyBranch>& OutBranches, const uint32& Depth) override;
197
198private:
199
203 UPROPERTY(transient)
204 mutable UArticyScriptInstruction* Instruction = nullptr;
205};
Definition ArticyConditionProvider.h:16
Definition ArticyInstructionProvider.h:16
Definition ArticyScriptFragment.h:90
EArticyPausableType GetType() override
Definition ArticyScriptFragment.h:107
UArticyScriptCondition * GetCondition() const
Definition ArticyScriptFragment.cpp:117
Definition ArticyFlowPlayer.h:29
Definition ArticyGlobalVariables.h:479
Definition ArticyScriptFragment.h:162
EArticyPausableType GetType() override
Definition ArticyScriptFragment.h:179
UArticyScriptInstruction * GetInstruction() const
Definition ArticyScriptFragment.cpp:134
Base class for all nodes (fragments) in the flow.
Definition ArticyNode.h:24
Definition ArticyPrimitive.h:17
Definition ArticyScriptFragment.h:70
bool Evaluate(class UArticyGlobalVariables *GV=nullptr, class UObject *MethodProvider=nullptr) override
Definition ArticyScriptFragment.cpp:52
Definition ArticyScriptFragment.h:21
void InitFromJson(TSharedPtr< FJsonValue > Json) override
Definition ArticyScriptFragment.cpp:29
int GetExpressionHash() const
Definition ArticyScriptFragment.cpp:15
const FString & GetExpression() const
Definition ArticyScriptFragment.h:29
FString Expression
Definition ArticyScriptFragment.h:36
Definition ArticyScriptFragment.h:143
void Execute(class UArticyGlobalVariables *GV=nullptr, class UObject *MethodProvider=nullptr) override
Definition ArticyScriptFragment.cpp:105