#pragma once

/*
* SDK generated by Dumper-7
*
* https://github.com/Encryqed/Dumper-7
*/

// Package: ChaosCaching

#include "Basic.hpp"

#include "MovieSceneTracks_classes.hpp"
#include "MovieScene_classes.hpp"
#include "ChaosCaching_structs.hpp"
#include "CoreUObject_structs.hpp"
#include "CoreUObject_classes.hpp"
#include "Engine_structs.hpp"
#include "Engine_classes.hpp"


SDK_NAMESPACE_START

// Class ChaosCaching.MovieSceneSpawnableChaosCacheBinding
// 0x0000 (0x0048 - 0x0048)
class UMovieSceneSpawnableChaosCacheBinding final : public UMovieSceneSpawnableActorBinding
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("MovieSceneSpawnableChaosCacheBinding")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"MovieSceneSpawnableChaosCacheBinding")
	}
	static class UMovieSceneSpawnableChaosCacheBinding* GetDefaultObj()
	{
		return GetDefaultObjImpl<UMovieSceneSpawnableChaosCacheBinding>();
	}
};
DUMPER7_ASSERTS_UMovieSceneSpawnableChaosCacheBinding;

// Class ChaosCaching.ChaosCacheCollection
// 0x0018 (0x0040 - 0x0028)
class UChaosCacheCollection final : public UObject
{
public:
	TArray<class UChaosCache*>                    Caches;                                            // 0x0028(0x0010)(Edit, ExportObject, ZeroConstructor, ContainsInstancedReference, UObjectWrapper, NativeAccessSpecifierPublic, TObjectPtr)
	EChaosCacheInterpolationMode                  InterpolationMode;                                 // 0x0038(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_39[0x7];                                       // 0x0039(0x0007)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ChaosCacheCollection")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ChaosCacheCollection")
	}
	static class UChaosCacheCollection* GetDefaultObj()
	{
		return GetDefaultObjImpl<UChaosCacheCollection>();
	}
};
DUMPER7_ASSERTS_UChaosCacheCollection;

// Class ChaosCaching.ChaosCacheManager
// 0x00B8 (0x0360 - 0x02A8)
class AChaosCacheManager : public AActor
{
public:
	class UChaosCacheCollection*                  CacheCollection;                                   // 0x02A8(0x0008)(Edit, ZeroConstructor, DisableEditOnTemplate, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic, TObjectPtr)
	ECacheMode                                    CacheMode;                                         // 0x02B0(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	EStartMode                                    StartMode;                                         // 0x02B1(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_2B2[0x2];                                      // 0x02B2(0x0002)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         StartTime;                                         // 0x02B4(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, Interp, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_2B8[0x8];                                      // 0x02B8(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<struct FObservedComponent>             ObservedComponents;                                // 0x02C0(0x0010)(Edit, ZeroConstructor, NativeAccessSpecifierPrivate)
	uint8                                         Pad_2D0[0x90];                                     // 0x02D0(0x0090)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void EnablePlayback(int32 Index_0, bool bEnable);
	void EnablePlaybackByCache(class FName InCacheName, bool bEnable);
	void ResetAllComponentTransforms();
	void ResetSingleTransform(int32 InIndex);
	void SetCacheCollection(class UChaosCacheCollection* InCacheCollection);
	void SetCurrentTime(float CurrentTime);
	void SetStartTime(float InStartTime);
	void TriggerAll();
	void TriggerComponent(class UPrimitiveComponent* InComponent);
	void TriggerComponentByCache(class FName InCacheName);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ChaosCacheManager")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ChaosCacheManager")
	}
	static class AChaosCacheManager* GetDefaultObj()
	{
		return GetDefaultObjImpl<AChaosCacheManager>();
	}
};
DUMPER7_ASSERTS_AChaosCacheManager;

// Class ChaosCaching.ChaosCachePlayer
// 0x0000 (0x0360 - 0x0360)
class AChaosCachePlayer final : public AChaosCacheManager
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ChaosCachePlayer")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ChaosCachePlayer")
	}
	static class AChaosCachePlayer* GetDefaultObj()
	{
		return GetDefaultObjImpl<AChaosCachePlayer>();
	}
};
DUMPER7_ASSERTS_AChaosCachePlayer;

// Class ChaosCaching.ChaosCacheData
// 0x0000 (0x0000 - 0x0000)
class IChaosCacheData final
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ChaosCacheData")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ChaosCacheData")
	}
	static class IChaosCacheData* GetDefaultObj()
	{
		return GetDefaultObjImpl<IChaosCacheData>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_IChaosCacheData;

// Class ChaosCaching.ChaosCache
// 0x0368 (0x0390 - 0x0028)
class UChaosCache final : public UObject
{
public:
	float                                         RecordedDuration;                                  // 0x0028(0x0004)(Edit, ZeroConstructor, EditConst, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint32                                        NumRecordedFrames;                                 // 0x002C(0x0004)(Edit, ZeroConstructor, EditConst, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	EChaosCacheInterpolationMode                  InterpolationMode;                                 // 0x0030(0x0001)(Edit, ZeroConstructor, EditConst, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_31[0x7];                                       // 0x0031(0x0007)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<int32>                                 TrackToParticle;                                   // 0x0038(0x0010)(ZeroConstructor, NativeAccessSpecifierPublic)
	TArray<struct FPerParticleCacheData>          ParticleTracks;                                    // 0x0048(0x0010)(ZeroConstructor, NativeAccessSpecifierPublic)
	TArray<int32>                                 ChannelCurveToParticle;                            // 0x0058(0x0010)(ZeroConstructor, NativeAccessSpecifierPublic)
	TMap<class FName, struct FRichCurves>         ChannelsTracks;                                    // 0x0068(0x0050)(NativeAccessSpecifierPublic)
	TMap<class FName, struct FCompressedRichCurves> CompressedChannelsTracks;                        // 0x00B8(0x0050)(NativeAccessSpecifierPublic)
	TMap<class FName, struct FRichCurve>          CurveData;                                         // 0x0108(0x0050)(NativeAccessSpecifierPublic)
	TMap<class FName, struct FParticleTransformTrack> NamedTransformTracks;                          // 0x0158(0x0050)(NativeAccessSpecifierPublic)
	bool                                          bCompressChannels;                                 // 0x01A8(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_1A9[0x3];                                      // 0x01A9(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         ChannelsCompressionErrorThreshold;                 // 0x01AC(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         ChannelsCompressionSampleRate;                     // 0x01B0(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_1B4[0x4];                                      // 0x01B4(0x0004)(Fixing Size After Last Property [ Dumper-7 ])
	TScriptInterface<class IChaosCacheData>       CacheData;                                         // 0x01B8(0x0010)(ZeroConstructor, IsPlainOldData, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	TMap<class FName, struct FCacheEventTrack>    EventTracks;                                       // 0x01C8(0x0050)(NativeAccessSpecifierPrivate)
	uint8                                         Pad_218[0x8];                                      // 0x0218(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FCacheSpawnableTemplate                Spawnable;                                         // 0x0220(0x00D0)(Edit, EditConst, NoDestructor, NativeAccessSpecifierPrivate)
	struct FGuid                                  AdapterGuid;                                       // 0x02F0(0x0010)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         Version;                                           // 0x0300(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_304[0x8C];                                     // 0x0304(0x008C)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ChaosCache")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ChaosCache")
	}
	static class UChaosCache* GetDefaultObj()
	{
		return GetDefaultObjImpl<UChaosCache>();
	}
};
DUMPER7_ASSERTS_UChaosCache;

// Class ChaosCaching.MovieSceneChaosCacheSection
// 0x0028 (0x0138 - 0x0110)
class UMovieSceneChaosCacheSection final : public UMovieSceneBaseCacheSection
{
public:
	struct FMovieSceneChaosCacheParams            Params_0;                                          // 0x0110(0x0028)(Edit, NativeAccessSpecifierPublic)

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("MovieSceneChaosCacheSection")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"MovieSceneChaosCacheSection")
	}
	static class UMovieSceneChaosCacheSection* GetDefaultObj()
	{
		return GetDefaultObjImpl<UMovieSceneChaosCacheSection>();
	}
};
DUMPER7_ASSERTS_UMovieSceneChaosCacheSection;

// Class ChaosCaching.MovieSceneChaosCacheTrack
// 0x0018 (0x0128 - 0x0110)
class UMovieSceneChaosCacheTrack final : public UMovieSceneNameableTrack
{
public:
	uint8                                         Pad_110[0x8];                                      // 0x0110(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<class UMovieSceneSection*>             AnimationSections;                                 // 0x0118(0x0010)(ExportObject, ZeroConstructor, ContainsInstancedReference, UObjectWrapper, NativeAccessSpecifierPrivate, TObjectPtr)

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("MovieSceneChaosCacheTrack")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"MovieSceneChaosCacheTrack")
	}
	static class UMovieSceneChaosCacheTrack* GetDefaultObj()
	{
		return GetDefaultObjImpl<UMovieSceneChaosCacheTrack>();
	}
};
DUMPER7_ASSERTS_UMovieSceneChaosCacheTrack;

SDK_NAMESPACE_END
