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

#pragma once

#include "ISCW_AActor.h"
#include "ISCW_USceneComponent.h"
#include "SCW_UObject.h"

class AActor;

namespace Sourcify
{
	class SCW_AActor : public SCW_UObject, public ISCW_AActor
	{
	public:
		SCW_AActor(AActor* InActor);

		void Destroy() override;
		
		void GetComponents(vector<ISCW_UActorComponentPtr>& OutComponents, bool bIncludeFromChildActors = false) const override;

		ISCW_USceneComponentPtr GetRootComponent() const override;

		void PostEditMove(bool bFinished) override;

		void RerunConstructionScripts() const override;

		AActor* ToAActor() const;

		ISCW_AActorPtr ToAActorPtr() override;
		ISCW_AActorConstPtr ToAActorPtr() const override;

	protected:
		AActor* Actor;
	};
} // namespace Sourcify