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

#pragma once

#include "ISCW_FSubobjectData.h"
#include "SCW_Base.h"

struct FSubobjectData;

namespace Sourcify
{
	class SCW_FSubobjectData : public SCW_Base, public ISCW_FSubobjectData
	{
	public:
		SCW_FSubobjectData(FSubobjectData* InSubobjectData);

		vector<shared_ptr<const ISCW_FSubobjectDataHandle>> GetChildrenHandles() const override;

		ISCW_UObjectConstPtr GetObject(bool bEvenIfPendingKill = false) const override;

		ISCW_UObjectConstPtr GetObjectForBlueprint(ISCW_UBlueprintPtr Blueprint) const override;

		wstring GetVariableName() const override;

		FSubobjectData* ToFSubobjectData() const;

		ISCW_FSubobjectDataPtr ToFSubobjectDataPtr() override;
		ISCW_FSubobjectDataConstPtr ToFSubobjectDataPtr() const override;

	protected:
		FSubobjectData* SubobjectData;
	};
} // namespace Sourcify