XNSim/XNCore/XNModelManager.h

97 lines
2.8 KiB
C++
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file XNModelManager.h
* @author jinchao
* @brief 模型管理器类头文件
* @version 1.0
* @date 2024-11-06
*
* @copyright Copyright (c) 2024 XN
*
*/
#pragma once
#include "XNBaseFrameObject.h"
class XNModelObject;
XNCLASS_PTR_DECLARE(XNModelObject)
struct XNModelManagerPrivate;
/**
* @brief 模型管理器类
* @details 用于管理仿真系统中所有加载的模型为模型分配唯一ID。其它组件或模型可以通过该唯一ID访问或控制该模型。
*/
class XNModelManager : public XNBaseFrameObject
{
XN_METATYPE(XNModelManager, XNBaseFrameObject)
XN_DECLARE_PRIVATE(XNModelManager)
public:
/**
* @brief 模型管理器类默认构造函数
*/
XNModelManager();
/**
* @brief 模型管理器类默认析构函数
*/
virtual ~XNModelManager();
protected:
/**
* @brief 模型管理器带参构造函数
* @param p:私有结构体指针
* @details 子类构造时调用此构造函数,传入子类的私有结构体指针
*/
XNModelManager(PrivateType *p);
public:
/**
* @brief 系统开始运行前的最后准备工作
* @details 系统运行前模型管理器做最后处理的接口
*/
virtual bool PrepareForExecute() override;
/**
* @brief 初始化模型管理器
* @details 模型管理器的初始化接口
*/
virtual bool Initialize() override;
/**
* @brief 加载模型
* @param modelPath: QString类型模型动态链接库路径
* @param className: QString类型模型类名
* @param modelVersion: QString类型模型版本号
* @param initialType: UINT32类型初始化类型
* @param threadID: UINT32类型线程ID
* @details 加载模型
*/
void LoadModel(const std::string &modelPath, const std::string &className,
const std::string &modelVersion, const std::string &planeName,
uint32_t initialType, uint32_t threadID);
/**
* @brief 注册模型信息
* @return UINT32: 模型的全局唯一ID
* @details 模型通过此接口注册自身并获取自身全局唯一ID
*/
uint32_t RegisterModel();
/**
* @brief 获取模型指针
* @param modelID: UINT32类型模型全局唯一ID
* @return XNModelObjectPtr: 模型基类指针
*/
XNModelObjectPtr GetModel(uint32_t modelID);
/**
* @brief 注册模型函数
* @param ModelID: UINT32类型模型全局唯一ID
* @param fun: 函数指针
* @param freqGroup: UINT32类型提交的函数运行频率组0为基频1为半频2为1/4频3为1/8频4为1/16频5为1/32频
* @param RunPos: UINT32类型提交的函数运行节点号<2^(freqGroup)
* @param RunPriorty: UINT32类型提交的函数运行优先级990优先级数值越大优先级越高
*/
void RegisterFunction(uint32_t id, XNCallBack fun, uint32_t threadID, uint32_t freqGroup,
uint32_t RunPos, uint32_t RunPriorty);
};