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

#pragma once

#include "ISCW_FInstancedPropertyBag.h"
#if ISCW_UE_VERSION_NEWER_THAN_OR_EQUAL(5,5,0)

struct FInstancedPropertyBag;

namespace Sourcify
{
	class SCW_FInstancedPropertyBag : public ISCW_FInstancedPropertyBag
	{
	public:
		SCW_FInstancedPropertyBag(::FInstancedPropertyBag& InBag);

		vector<ISCW_UObjectPtr> GetDescriptorTypeObjects() const override;
		void ReplaceDescriptorType(ISCW_UObjectConstPtr oldType, ISCW_UObjectPtr newType) override;
		vector<wstring> GetPropertyNamesWithType(ISCW_UObjectConstPtr typeObject) const override;
		wstring GetPropertyValueAsString(const wstring& propertyName) const override;
		void SetPropertyValueFromString(const wstring& propertyName, const wstring& value) override;

	private:
		::FInstancedPropertyBag& Bag;
	};
} // namespace Sourcify

#endif // ISCW_UE_VERSION_NEWER_THAN_OR_EQUAL(5,5,0)