As it stands an Input cannot be an interface. Suppose I have a behavior which depends on an interface available in a given resource. Let’s say that resource isn’t available in the framework but rather is defined in the game.
Here’s an example:
USTRUCT()
struct FMyFrameworkPursueCalculationTaskData : public FMyFrameworkSteeringCalculationTaskData
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, Category = "Context")
ACharacter* Source = nullptr;
UPROPERTY(EditAnywhere, Category = "Input")
TScriptInterface<IMyFrameworkPursueSteeringResourceInterface> Resource = nullptr;
FVector StartDirection;
};
USTRUCT(meta = (Category = "MyFramework|Behaviors", DisplayName = "Pursue Calculation"))
struct FMyFrameworkPursueCalculationTask : public FMyFrameworkSteeringCalculationTask
{
GENERATED_BODY()
COURAGE_DECL_STATETREE_ENTER_OVERRIDE
COURAGE_USE_INSTANCE_DATA_TYPE(FMyFrameworkPursueCalculationTaskData)
void Calculate(FStateTreeExecutionContext& Context, FMyFrameworkSteeringData& Steering, float DeltaTime) const override;
};