#pragma once

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

// Package: BP_LinkManager

#include "Basic.hpp"

#include "Engine_structs.hpp"
#include "EN_GlueType_structs.hpp"
#include "PenguinHotel_classes.hpp"


SDK_NAMESPACE_START

// BlueprintGeneratedClass BP_LinkManager.BP_LinkManager_C
// 0x0030 (0x0338 - 0x0308)
class ABP_LinkManager_C final : public ACPP_LinkManager
{
public:
	struct FPointerToUberGraphFrame               UberGraphFrame;                                    // 0x0308(0x0008)(ZeroConstructor, Transient, DuplicateTransient)
	class USceneComponent*                        DefaultSceneRoot;                                  // 0x0310(0x0008)(BlueprintVisible, ZeroConstructor, InstancedReference, NonTransactional, NoDestructor, HasGetValueTypeHash)
	int32                                         LatestInstanceID;                                  // 0x0318(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash)
	int32                                         BranchInstanceID;                                  // 0x031C(0x0004)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, IsPlainOldData, NoDestructor, HasGetValueTypeHash)
	TArray<class ABP_LinkBranchData_C*>           BranchDatas;                                       // 0x0320(0x0010)(Edit, BlueprintVisible, DisableEditOnTemplate)
	class ABP_LinkDataBank_C*                     LinkDataBank;                                      // 0x0330(0x0008)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnTemplate, DisableEditOnInstance, NoDestructor, HasGetValueTypeHash)

public:
	void AddCustomForce(class UPrimitiveComponent* SourcePrimitive, class UPrimitiveComponent* PrePrimitive, double& ForceValue);
	void ExecuteUbergraph_BP_LinkManager(int32 EntryPoint);
	void MergeCheck(class UPrimitiveComponent* Primitive, TArray<int32>& UsedBranchIndex);
	void MergeCheckForce(class UPrimitiveComponent* Primitive, const TSet<int32>& UsedBranchIndex, double& ForceValue);
	void Propagation(class UPrimitiveComponent* TargetPrimitive, TArray<int32>& UsedBranch);
	void PropagationForce(class UPrimitiveComponent* TargetPrimitive, class UPrimitiveComponent* Primitive, const TSet<int32>& UsedBranch, double ForceValue, const TSet<int32>& ParallelIndex);
	void PropagationProto(class UPrimitiveComponent* Primitive);
	void PropagationProtoStart(class UPrimitiveComponent* Primitive);
	void PropagationReset();
	void ReceiveBeginPlay();
	void SelectBranchDatas(class ABP_Glue_CustomPhysics_C* Glue, class ABP_LinkBranchData_C** BranchData, bool* IsNewBranch);
	void SetGlueData(class ACPP_Glue* TargetGlue, EN_GlueType GlueType, bool State);
	void UpdateBranch();
	void UpdateForceValue();
	void UpdateGlueGroundDistance();

public:
	static class UClass* StaticClass()
	{
		BP_STATIC_CLASS_IMPL("BP_LinkManager_C")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"BP_LinkManager_C")
	}
	static class ABP_LinkManager_C* GetDefaultObj()
	{
		return GetDefaultObjImpl<ABP_LinkManager_C>();
	}
};
DUMPER7_ASSERTS_ABP_LinkManager_C;

SDK_NAMESPACE_END
