UE5.7 ChooserTables do not work with C++ Structs

Hi everyone!

After updating to Unreal Engine 5.7 I’ve noticed that ChooserTables no longer work with Input Structs created in C++ (they still work fine with Blueprint Structs).

For example, I have this ChooserTable that was configured before 5.7:


It uses the CL_TraversalChooserInput as follows:

USTRUCT()
struct CURSEDLANDS_API FCL_TraversalChooserInput
{
    GENERATED_BODY()

    UPROPERTY()
    bool bHasFrontLedge = false;

    UPROPERTY()
    bool bHasBackLedge = false;

    UPROPERTY()
    bool bHasBackFloor = false;

    UPROPERTY()
    float ObstacleHeight = 0.f;

    UPROPERTY()
    float ObstacleDepth = 0.f;

    UPROPERTY()
    float BackLedgeHeight = 0.f;

    UPROPERTY()
    TEnumAsByte<EMovementMode> MovementMode = MOVE_None;

    UPROPERTY()
    ECL_Gait Gait = ECL_Gait::Walking;

    UPROPERTY()
    float Speed = 0.f;
};

And prior to 5.7 clicking on the column to choose the properties worked fine, now clicking it won’t open any dropdown. Additionally, if I went to create a new ChooserTable for that struct I won’t be able to choose any property and configure it at all:

I was hoping to check in if this is a known issue that’s hopefully going to be fixed with 5.7.2?

Okay, eventually I’ve solved the issue :slight_smile:

Seems like with 5.7, for properties to be used in a ChooserTable they have to be marked as Blueprint Readable, either with BlueprintReadOnly or BlueprintReadWrite, so this struct works:

USTRUCT()
struct CURSEDLANDS_API FCL_TraversalChooserInput
{
    GENERATED_BODY()

    UPROPERTY(BlueprintReadWrite)
    bool bHasFrontLedge = false;

    UPROPERTY(BlueprintReadWrite)
    bool bHasBackLedge = false;

    UPROPERTY(BlueprintReadWrite)
    bool bHasBackFloor = false;

    UPROPERTY(BlueprintReadWrite)
    float ObstacleHeight = 0.f;

    UPROPERTY(BlueprintReadWrite)
    float ObstacleDepth = 0.f;

    UPROPERTY(BlueprintReadWrite)
    float BackLedgeHeight = 0.f;

    UPROPERTY(BlueprintReadWrite)
    TEnumAsByte<EMovementMode> MovementMode = MOVE_None;

    UPROPERTY(BlueprintReadWrite)
    ECL_Gait Gait = ECL_Gait::Walking;

    UPROPERTY(BlueprintReadWrite)
    float Speed = 0.f;
};

I’m using ‘BlueprintReadWrite’ because otherwise those properties can’t actually be set in Blueprints when using the Chooser Table.