#pragma once #include struct IFormFactory { virtual ~IFormFactory(); virtual TESForm* Create(); virtual void sub_2(); virtual void sub_3(); virtual void sub_4(); virtual void sub_5(); virtual void sub_6(); static IFormFactory* GetForType(const FormType aId) noexcept; template static T* Create() { return static_cast(GetForType(T::Type)->Create()); } };