#pragma once

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

// Package: UMGSpline

#include "Basic.hpp"

#include "UMGSpline_structs.hpp"
#include "UMG_classes.hpp"


namespace SDK
{

// Class UMGSpline.SplineWidget
// 0x0170 (0x02A0 - 0x0130)
class USplineWidget : public UWidget
{
public:
	struct FUMGSplineInfo                         SplineInfo;                                        // 0x0130(0x0110)(Edit, BlueprintVisible, NativeAccessSpecifierPublic)
	struct FUMGSplineDebugInfo                    SplineDebugInfo;                                   // 0x0240(0x0014)(Edit, BlueprintVisible, NoDestructor, NativeAccessSpecifierPublic)
	uint8                                         Pad_254[0x14];                                     // 0x0254(0x0014)(Fixing Size After Last Property [ Dumper-7 ])
	struct FUMGSplineCurves                       SplineCurves;                                      // 0x0268(0x0038)(Transient, NativeAccessSpecifierPrivate)

public:
	void AddSplinePoint(const struct FUMGSplinePoint& SplinePoint, bool bUpdateSpline);
	void AddSplinePointAtIndex(const struct FUMGSplinePoint& SplinePoint, int32 Index_0, bool bUpdateSpline);
	void ChangeSplinePointAtIndex(const struct FUMGSplinePoint& SplinePoint, int32 Index_0, bool bUpdateSpline);
	class UMaterialInstanceDynamic* GetSplineDynamicMaterial();
	void RemoveAllSplinePoint(bool bUpdateSpline);
	void RemoveSplinePoint(int32 Index_0, bool bUpdateSpline);
	void SetSplineMaterial(class UMaterialInterface* Material);
	void SetSplineThickness(float Thickness);
	void SetSplineType(EUMGSplineType Type);
	void UpdateSpline();

	struct FVector2D GetDirectionAtDistanceAlongSpline(float Distance, EUMGSplineCoordinateSpace CoordinateSpace) const;
	struct FVector2D GetDirectionAtSplineInputKey(float InKey, EUMGSplineCoordinateSpace CoordinateSpace) const;
	struct FVector2D GetDirectionAtSplinePoint(int32 PointIndex, EUMGSplineCoordinateSpace CoordinateSpace) const;
	float GetDistanceAlongSplineAtSplineInputKey(float InKey) const;
	float GetInputKeyAtDistanceAlongSpline(float Distance, EUMGSplineCoordinateSpace CoordinateSpace) const;
	struct FVector2D GetLocationAtDistanceAlongSpline(float Distance, EUMGSplineCoordinateSpace CoordinateSpace) const;
	struct FVector2D GetLocationAtSplineInputKey(float InKey, EUMGSplineCoordinateSpace CoordinateSpace) const;
	struct FVector2D GetLocationAtSplinePoint(int32 PointIndex, EUMGSplineCoordinateSpace CoordinateSpace) const;
	int32 GetNumberOfSplinePoints() const;
	float GetRotationAngleAtDistanceAlongSpline(float Distance, EUMGSplineCoordinateSpace CoordinateSpace) const;
	float GetRotationAngleAtSplineInputKey(float InKey, EUMGSplineCoordinateSpace CoordinateSpace) const;
	float GetSplineLength() const;
	class UMaterialInterface* GetSplineMaterial() const;
	float GetSplineThickness() const;
	EUMGSplineType GetSplineType() const;
	struct FVector2D GetTangentAtDistanceAlongSpline(float Distance, EUMGSplineCoordinateSpace CoordinateSpace) const;
	struct FVector2D GetTangentAtSplineInputKey(float InKey, EUMGSplineCoordinateSpace CoordinateSpace) const;
	struct FVector2D GetTangentAtSplinePoint(int32 PointIndex, EUMGSplineCoordinateSpace CoordinateSpace) const;

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

}

