CommonLibSSE NG
IFormFactory.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/F/FormTypes.h"
4 
5 namespace RE
6 {
7  template <class T, FormType>
8  class ConcreteFormFactory;
9 
10  enum class OBJECT_TYPE
11  {
12  };
13 
15  {
16  };
17 
19  {
20  public:
21  inline static constexpr auto RTTI = RTTI_IFormFactory;
22 
23  virtual ~IFormFactory(); // 00
24 
25  protected:
26  // add
27  virtual TESForm* CreateImpl() = 0; // 01
28 
29  public:
30  [[nodiscard]] virtual const char* GetFormName() const = 0; // 02
31  [[nodiscard]] virtual FormType GetFormType() const = 0; // 03
32  [[nodiscard]] virtual const char* GetObjectName() const; // 04 - { return 0; }
33  [[nodiscard]] virtual OBJECT_TYPE GetObjectType() const; // 05 - { return 106; }
34  [[nodiscard]] virtual OBJECT_CATEGORY_TYPE GetObjectCategory() const; // 06 - { return 9; }
35 
36  static std::pair<IFormFactory**, bool> GetFormFactories();
38 
39  template <class T>
41 
43  };
44  static_assert(sizeof(IFormFactory) == 0x8);
45 }
Definition: ConcreteFormFactory.h:10
Definition: IFormFactory.h:19
virtual const char * GetObjectName() const
static constexpr auto RTTI
Definition: IFormFactory.h:21
static std::pair< IFormFactory **, bool > GetFormFactories()
virtual const char * GetFormName() const =0
virtual OBJECT_CATEGORY_TYPE GetObjectCategory() const
TESForm * Create()
virtual ~IFormFactory()
static IFormFactory * GetFormFactoryByType(FormType a_formType)
virtual OBJECT_TYPE GetObjectType() const
virtual TESForm * CreateImpl()=0
static ConcreteFormFactory< T, T::FORMTYPE > * GetConcreteFormFactoryByType()
Definition: ConcreteFormFactory.h:34
virtual FormType GetFormType() const =0
Definition: TESForm.h:36
Definition: AbsorbEffect.h:6
OBJECT_TYPE
Definition: IFormFactory.h:11
OBJECT_CATEGORY_TYPE
Definition: IFormFactory.h:15
FormType
Definition: FormTypes.h:139
constexpr REL::VariantID RTTI_IFormFactory(684588, 392214, 0x1ed6cf8)