Section 3.12. rdActor – Data and Structures

// [rdInst v1.00] The Current Theme name, can be blank meaning themes are disabled
FString currentTheme;

// [rdInst v1.00] When True, the whole actor and all ISMs will be hidden by default
bool bStartHidden=false;

// [rdInst v1.00] The Location Randomization for each of the child Actors is multiplied with this
FVector locMultiplier;

// [rdInst v1.00] The Rotation Randomization for each of the child Actors is multiplied with this
FRotator rotMultiplier;

// [rdInst v1.00] The Scale Randomization for each of the child Actors is multiplied with this
FVector scaleMultiplier;

// [rdInst v1.00] The Show Probability for each of the child Actors is multiplied with this
float showMultiplier;

// [rdInst v1.10] When True, other rdActors can copy our InstanceData and delete us (we're just a container)
uint8 bCanBeAssimilated:1;

// [rdInst v1.00] When True, a new Random Seed is generated every time this Actor is Constructed
uint8 bRandomStart:1;

// [rdInst v1.00] The Seed to use for the RandomStream
int32 randomSeed=0;

// [rdInst v1.00] When this is True, the RandomStream specified in this Actor is used, otherwise the OuterMost ArdActor's one is used
uint8 bOverrideRandom:1;

// [rdInst v1.00] The RandomStream used by this Actor. If this Actor has Outer ArdActors, their RandomStream is used for congruity
FRandomStream randomStream;

// [rdInst v1.00] When this is True, the Theme specified in this Actor is used, otherwise the OuterMost ArdActor's Theme is used
uint8 bOverrideTheme:1;

// [rdInst v1.00] The Mode this ArdActor is. Each Mode behaves differently, see the rdActorMode Enumeration
TEnumAsByte<rdActorMode> actorMode;

// [rdInst v1.00] The Folder of Actors to Show when this Actor is in ThereCanBeOnlyOne Mode
FString showFolder;

// [rdInst v1.00] Internal collated list of instances (do not touch)
TMap<UStaticMesh*,FrdInstanceSettingsArray> InstanceData;

// [rdInst v1.20] When ticked, the instances are created from the InstanceFastArray and the InstanceRandomizedArray. Please note that ticking this in an existing BP will REMOVE all existing instance data created from older versions
uint8 bCreateFromArrays:1;

// [rdInst v1.20] This is an array of UStaticMeshes and transforms for adding as instances (Fast, no randomization)
TArray<FrdAddInstanceFastArray> InstanceFastArray;

// This is an array of UStaticMeshes and transforms for adding as instances (Randomized)
TArray<FrdAddInstanceRandomizedArray> InstanceRandomizedArray;

// [rdInst v1.20] This contains the position in row/column/layer of a built system (see rdBuildBuddy)
FrdPositionInfo positionInfo;

// Bool to Destroy any Attached Actors when this is Destroyed
uint8 bDestroyAttachedActors:1;

// [rdInst v1.35] Bool when set, recurses all components when setting the visibility
uint8 bRecurseVisibilityChanges:1;

// [rdInst v1.35] True when StaticMesh mode is on (ISMs are replaced with SMs)
uint8 bStaticMeshMode:1;

// [rdInst v1.35] Set to true to be ignored by proxy scans
uint8 bScanForProxy:1;

// [rdInst v1.35] the index of the instance for a proxy instance
int32 proxyInstanceIndex=-1;

// [rdInst v1.35] Set to true to edit individual instances
uint8 bEditInstances:1;

// [rdInst v1.35] A DataAsset containing all the data of a prefab. Will be used in next release for dynamic prefab swapping and template pooled actors
UrdInstanceVault*	instanceVault=nullptr;

// [rdInst v1.35] UrdInstanceVault
UCLASS(BlueprintType)
class UrdInstanceVault : public UrdStateDataAsset {
	GENERATED_BODY()
public:

	// The Current Theme name, can be blank meaning themes are disabled
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	FString currentTheme;

	// When True, the whole actor and all ISMs will be hidden by default
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	bool bStartHidden=false;

	// The Location Randomization for each of the child Actors is multiplied with this
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	FVector locMultiplier;

	// The Rotation Randomization for each of the child Actors is multiplied with this
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	FRotator rotMultiplier;

	// The Scale Randomization for each of the child Actors is multiplied with this
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	FVector scaleMultiplier;

	// The Show Probability for each of the child Actors is multiplied with this
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	float showMultiplier;

	// When True, other rdActors can copy our InstanceData and delete us (we're just a container)
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	uint8 bCanBeAssimilated:1;

	// When True, a new Random Seed is generated every time this Actor is Constructed
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	uint8 bRandomStart:1;

	// The Seed to use for the RandomStream
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	int32 randomSeed=0;

	// When this is True, the RandomStream specified in this Actor is used, otherwise the OuterMost ArdActor's one is used
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	uint8 bOverrideRandom:1;

	// The RandomStream used by this Actor. If this Actor has Outer ArdActors, their RandomStream is used for congruity
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	FRandomStream randomStream;

	// When this is True, the Theme specified in this Actor is used, otherwise the OuterMost ArdActor's Theme is used
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	uint8 bOverrideTheme:1;

	// The Mode this ArdActor is. Each Mode behaves differently, see the rdActorMode Enumeration
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	TEnumAsByte<rdActorMode> actorMode;

	// The Folder of Actors to Show when this Actor is in ThereCanBeOnlyOne Mode
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	FString showFolder;

	// Internal collated list of instances (do not touch)
	UPROPERTY(EditDefaultsOnly,Category="rdActor",meta=(DisplayName="(Do Not Edit)"))
	TMap<UStaticMesh*,FrdInstanceSettingsArray> InstanceData;

	// When ticked, the instances are created from the InstanceFastArray and the InstanceRandomizedArray. Please note that ticking this in an existing BP will REMOVE all existing instance data created from older versions
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	uint8 bCreateFromArrays:1;

	// This is an array of UStaticMeshes and transforms for adding as instances (Fast, no randomization)
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	TArray<FrdAddInstanceFastArray> InstanceFastArray;

	// This is an array of UStaticMeshes and transforms for adding as instances (Randomized)
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	TArray<FrdAddInstanceRandomizedArray> InstanceRandomizedArray;

	// This contains the position in row/column/layer of a built system (see rdBuildBuddy)
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="rdActor")
	FrdPositionInfo positionInfo;
};