Section 2.12. rdInstBase – Data and Structures

// [rdInst v1.24] Bool to use HISMs rather than ISMs - defaults to True, but will change once UE4.27 is obsolete
bool bUseHISMs=true;

// [rdInst v1.35] Bool to recycle Instances rather than remove them
bool bRecycleInstances=true;

// [rdInst v1.00] Contains the return from Counting the ISMs
int32 numInstances=0;

// [rdInst v1.24] Add PhysicalMaterials to this Ignore List (for the procedural population)
TArray<UPhysicalMaterial*> ignorePMaps;

// [rdInst v1.00] Map of StaticMesh Keys with Arrays of Instances as the Values
TMap<const UStaticMesh*,FrdInstList> instList;

// [rdInst v1.35] How often the scan for swapping proxies should happen (tick count) -1 turns it off
int32 proxyProcessInterval=-1;

// [rdInst v1.35] Distance to swap proxy actors (this is a float in 4.27)
double proxySwapDistance=1000.0f;

// [rdInst v1.35] Distance to swap long-distance proxy actors (this is a float in 4.27)
double proxyLongDistanceSwapDistance=20000.0f;

// [rdInst v1.35] List of Actors to ignore when doing the proxy scans
TArray<AActor*> proxyScanIgnoreActors;

// [rdInst v1.35] How long to leave the Interactive Actor in place after leaving the radius (in ticks)
int32 proxyIdleTicks=10;

// [rdInst v1.35] How long to leave the Destruction Actor in place after it's been swapped (in ticks)
int32 proxyDestructionIdleTicks=200;

// [rdInst v1.35] Map of Meshes to recycled Instances available for re-use
TMap<UStaticMesh*,TArray<int32>> freeInstanceMap;

// [rdInst v1.20] Structure used to store spawn data for Distributed Transactions
struct rdDistributedObjectData {
	bool				pooled=false;
	FrdProxySetup			proxy;
	AActor*				actorTemplate=nullptr;
	TArray<TArray<FTransform>>	tList;
	TArray<int32>*			iList;
	TArray<AActor*>*		aList;
	TArray<UNiagaraComponent*>*	fxList;
};

// [rdInst v1.35] Structure with items for spawning
struct FrdSetObjectItem {
	GENERATED_BODY()
public:
	UStaticMesh*		mesh;
	UClass*			actorClass;
	AActor*			actorTemplate;
	UNiagaraSystem*		vfx;
	bool			pool;
	int32			numToPool;
	TArray<FTransform>	transforms;
};

// [rdInst v1.35] List of the previous items
class UrdSetObjectsList : public UObject {
	GENERATED_BODY()
public:
	TArray<FrdSetObjectItem> objects;
};