上一节中提到了,编辑器可以包含不同的应用模式(即编辑模式),如行为树。
基类: FApplicationMode
特性: 一种应用模式维护一系列编辑器状态,如布局,标签,工具栏等
用法: 编辑器类中调用SetCurrentMode(ModeName)方法来切换应用模式 (编辑器类需要从FWorkflowCentricApplication派生)
class FTestEditorApplicationMode : public FApplicationMode
{
public:
FTestEditorApplicationMode(TSharedPtr<class FUserDefinedEditor> InTestEditor, FName InModeName);
virtual void RegisterTabFactories(TSharedPtr<class FTabManager> InTabManager) override;
virtual void PreDeactivateMode() override;
virtual void PostActivateMode() override;
};
ModeName: 唯一标识名称
RegisterTabFactories: 注册不同的页签工厂类,每个工厂类对应一个页签,调用PushTabFactories为当前应用模式注册所有工厂类。
void FWorkflowCentricApplication::PushTabFactories(FWorkflowAllowedTabSet& FactorySetToPush)
{
check(TabManager.IsValid());
for (auto FactoryIt = FactorySetToPush.CreateIterator(); FactoryIt; ++FactoryIt)
{
FactoryIt.Value()->RegisterTabSpawner(TabManager.ToSharedRef(), CurrentAppModePtr.Get());
}
}
PreDeactivateMode: 关闭该模式时调用,用于保存状态等功能。
PostActivateMode: 激活该模式时调用,用于恢复该模式各种状态。