// Copyright (c) 2024 Codemongous LLC. All Rights Reserved.

#pragma once

#include "ISCW_USceneComponent.h"
#include "SCW_UActorComponent.h"

class USceneComponent;

namespace Sourcify
{
	class SCW_USceneComponent : public SCW_UActorComponent, public virtual ISCW_USceneComponent
	{
	public:
		SCW_USceneComponent(USceneComponent* InSceneComponent);

		bool AttachToComponent(shared_ptr<ISCW_USceneComponent> InParent, SCW_EAttachmentTransformRules AttachmentRules, wstring InSocketName = L"None" /*NAME_None*/) const override;
		
		ISCW_USceneComponentPtr GetAttachParent() const override;

		wstring GetAttachSocketName() const override;
		
		SCW_FTransform GetRelativeTransform() const override;

		USceneComponent* ToUSceneComponent() const;

	protected:
		USceneComponent* SceneComponent;
	};
} // namespace Sourcify