|
|
|
@@ -18,7 +18,7 @@ DECLARE_LOG_CATEGORY_EXTERN(LogComboActionGraphNode, Log, All);
|
|
|
|
|
* Does come with ability to define Colours, Name, Description and Title.
|
|
|
|
|
* Contains information about Parent and Children Nodes.
|
|
|
|
|
*/
|
|
|
|
|
UCLASS(Abstract, BlueprintType, ClassGroup=("Combo Input|Action"), AutoExpandCategories=("Combo Input", "Action", "Combo Input|Action"))
|
|
|
|
|
UCLASS(Abstract, BlueprintType, ClassGroup=("Combo Input|Action"), AutoExpandCategories=("Combo Input", "Action", "Combo Input|Action"), HideCategories=("Private"))
|
|
|
|
|
class COMBOINPUT_API UComboActionGraphNode : public UObject
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
@@ -34,30 +34,30 @@ public:
|
|
|
|
|
* Array of parent nodes for the current active node in the combo string.
|
|
|
|
|
*❗ Parent nodes are nodes that have a directed edge pointing to the current active node.
|
|
|
|
|
*/
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category="Private")
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category="Private")
|
|
|
|
|
TArray<class UComboActionGraphNode*> ParentNodes;
|
|
|
|
|
/**
|
|
|
|
|
* The array of child nodes of the current dialogue node.
|
|
|
|
|
*/
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category="Private")
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category="Private")
|
|
|
|
|
TArray<class UComboActionGraphNode*> ChildrenNodes;
|
|
|
|
|
/**
|
|
|
|
|
* Map of edges connecting this Node in the Combo Action graph.
|
|
|
|
|
*❗ The key of the map is the source node, and the value is the edge connecting it to its target node.
|
|
|
|
|
*❔ Can be used to traverse the graph, get information about node connections...
|
|
|
|
|
*/
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category="Private")
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category="Private")
|
|
|
|
|
TMap<class UComboActionGraphNode*, class UComboActionGraphEdge*> Edges;
|
|
|
|
|
/**
|
|
|
|
|
* Pointer to the parent dialogue graph of this node.
|
|
|
|
|
*/
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category="Private", meta=(DisplayThumbnail=false))
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category="Private", meta=(DisplayThumbnail=false))
|
|
|
|
|
TObjectPtr<class UComboActionGraph> Graph;
|
|
|
|
|
/**
|
|
|
|
|
* Temporary NodeIndex.
|
|
|
|
|
* This variable will be deleted.
|
|
|
|
|
*/
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category="Private")
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category="Private")
|
|
|
|
|
int32 NodeIndex = INDEX_NONE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -67,16 +67,15 @@ protected:
|
|
|
|
|
*❗ This is used to differentiate between nodes, and must be unique within the graph.
|
|
|
|
|
*❔ Can be used for debugging and tracing purposes.
|
|
|
|
|
*/
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category="Private")
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category="Private")
|
|
|
|
|
FGuid NodeGUID;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
/**
|
|
|
|
|
* The world that owns this Dialogue Graph Node.
|
|
|
|
|
*❗ This is the world in which this Dialogue Graph Node is currently running.
|
|
|
|
|
*❔ Can be used for accessing world-related functionality.
|
|
|
|
|
*/
|
|
|
|
|
UPROPERTY(VisibleAnywhere, Category="Private")
|
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category="Private")
|
|
|
|
|
TObjectPtr<UWorld> OwningWorld;
|
|
|
|
|
|
|
|
|
|
#pragma endregion
|
|
|
|
@@ -88,12 +87,9 @@ public:
|
|
|
|
|
*❗ Only nodes with classes from this array can be connected as inputs to this node.
|
|
|
|
|
*❔ Can be used to restrict the types of inputs this node can accept.
|
|
|
|
|
*/
|
|
|
|
|
UPROPERTY(SaveGame, EditDefaultsOnly, BlueprintReadOnly, Category="Combo Input|Action")
|
|
|
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Combo Input|Action")
|
|
|
|
|
TArray<TSubclassOf<class UComboActionGraphNode>> AllowedInputClasses;
|
|
|
|
|
|
|
|
|
|
/** Defines whether this Node will start automatically or if requires input.*/
|
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Combo Input|Action")
|
|
|
|
|
uint8 bAutoStarts : 1;
|
|
|
|
|
/**
|
|
|
|
|
* The maximum number of children nodes that this node can have.
|
|
|
|
|
*❗ If this value is -1, then there is no limit on the number of children nodes.
|
|
|
|
@@ -117,12 +113,6 @@ public:
|
|
|
|
|
UFUNCTION(BlueprintNativeEvent, Category = "Combo Input|Action")
|
|
|
|
|
void InitializeNode(UWorld *InWorld);
|
|
|
|
|
virtual void InitializeNode_Implementation(UWorld *InWorld);
|
|
|
|
|
/**
|
|
|
|
|
* Checks if the node should automatically start when the dialogue is played.
|
|
|
|
|
* @return true if the node should automatically start, false otherwise.
|
|
|
|
|
*/
|
|
|
|
|
UFUNCTION(BlueprintCallable, BlueprintPure, Category="Combo Input|Action")
|
|
|
|
|
virtual bool DoesAutoStart() const { return bAutoStarts; }
|
|
|
|
|
|
|
|
|
|
virtual void PreProcessNode(const TScriptInterface<class IComboActionGraphManagerInterface> &Manager){}
|
|
|
|
|
virtual void ProcessNode(const TScriptInterface<class IComboActionGraphManagerInterface> &Manager);
|
|
|
|
|