Hi,
I encountered a problem where after I added a member variable of a custom struct type to my ActorComponent which is exposed to the details panel I can not save any values of said member or other members in this component in the details Panel.
I have this struct:
USTRUCT(BlueprintType)
struct FAdvancedMovementData
{
GENERATED_BODY()
public:
FAdvancedMovementData()
{
MinSpeed = 0.f;
MaxSpeed = 0.f;
MaxSprintSpeed = 0.f;
TurnRate = 0.f;
LookUpRate = 0.f;
IsMoving = false;
IsSprinting = false;
SpeedLevel = 0;
MovementStance = EAdvancedMovementStance::Standing;
MovementType = EAdvancedMovementType::None;
CharacterRotation = FRotator::ZeroRotator;
LookRotation = FRotator::ZeroRotator;
InputVelocityRotationDiff = 0.f;
TargetCharacterRotationDiff = 0.f;
}
UPROPERTY(EditDefaultsOnly)
float MinSpeed;
UPROPERTY(EditDefaultsOnly)
float MaxSpeed;
UPROPERTY(EditDefaultsOnly)
float MaxSprintSpeed;
UPROPERTY(EditDefaultsOnly)
float TurnRate;
UPROPERTY(EditDefaultsOnly)
float LookUpRate;
UPROPERTY(VisibleAnywhere)
bool IsMoving;
UPROPERTY(VisibleAnywhere)
bool IsSprinting;
UPROPERTY(VisibleAnywhere)
int SpeedLevel;
UPROPERTY(VisibleAnywhere)
EAdvancedMovementStance MovementStance;
UPROPERTY(VisibleAnywhere)
EAdvancedMovementType MovementType;
UPROPERTY(VisibleAnywhere)
FRotator CharacterRotation;
UPROPERTY(VisibleAnywhere)
FRotator LookRotation;
UPROPERTY(VisibleAnywhere)
float InputVelocityRotationDiff;
UPROPERTY(VisibleAnywhere)
float TargetCharacterRotationDiff;
};
and this is my ActorComponent:
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class SHOOTER_API UAdvancedMovementComponent : public UActorComponent
{
GENERATED_BODY()
public:
UAdvancedMovementComponent();
protected:
virtual void BeginPlay() override;
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
public:
UPROPERTY(EditDefaultsOnly)
FAdvancedMovementData MovementData;
private:
class ACharacter* ParentActor;
class UAdvancedMovementInputComponent* AdvancedMovementInput;
};
I noticed that this issue appears only when I have struct members which are set to EditDefaultsOnly while others are set to VisibleAnywhere, if I set all of them to VisibleAnywhere or EditDefaultsOnly it works fine. Does anybody know if this is the expected behavior or if it may be a bug?
Greetings