XNSim/Release/include/XNCore/XNModelManager.h

119 lines
3.5 KiB
C
Raw Normal View History

2025-04-28 12:25:20 +08:00
/**
* @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;
class XNModelManagerPrivate;
/**
* @brief
* @details 仿IDID访问或控制该模型
*/
class XNModelManager : public XNBaseFrameObject
{
/**
* @brief 使
*/
Q_OBJECT
Q_DECLARE_PRIVATE(XNModelManager)
Q_DISABLE_COPY(XNModelManager)
public:
/**
* @brief
*/
explicit XNModelManager(QObject *parent = nullptr);
/**
* @brief
*/
virtual ~XNModelManager();
protected:
/**
* @brief
* @param p:
* @details
*/
XNModelManager(XNModelManagerPrivate &dd, QObject *parent = nullptr);
public slots:
/**
* @brief
* @details
*/
virtual void OnPrepareForExecute() override;
/**
* @brief
* @details
*/
virtual void OnInitialize() override;
/**
* @brief
* @param modelPath: QString类型
* @param className: QString类型
* @details
*/
void OnLoadModel(const QString &modelPath, const QString &className);
/**
* @brief 仿
* @param dBaseFreq: double类型Hz
* @details 仿线 1 1/2 1/4 1/8 1/16 1/32
*/
void OnSetBaseFreq(const double &dBaseFreq);
public:
/**
* @brief
* @return UINT32: ID
* @details ID
*/
quint32 RegisterModel();
/**
* @brief
* @param modelID: UINT32类型ID
* @return XNModelObjectPtr:
*/
XNModelObject *GetModel(quint32 modelID);
public slots:
/**
* @brief
* @param ModelID: UINT32类型ID
* @param fun:
* @param freqGroup: UINT32类型0121/431/841/1651/32
* @param RunPos: UINT32类型<2^(freqGroup)
* @param RunPriorty: UINT32类型990
*/
void OnRegisterFunction(quint32 id, XNCallBack fun, quint32 freqGroup, quint32 RunPos,
quint32 RunPriorty);
signals:
/**
* @brief
* @param id: UINT32类型ID
* @param fun:
* @param freqGroup: UINT32类型0121/431/841/1651/32
* @param RunPos: UINT32类型<2^(freqGroup)
* @param RunPriorty: UINT32类型990
*/
void RegisterFunction(quint32 id, XNCallBack fun, quint32 freqGroup, quint32 RunPos,
quint32 RunPriorty);
void InitializeSuccess();
void PrepareForExecuteSuccess();
};