CryEngineBase类的设计

CryEngineBase类,包含了基本的系统指针对象,其对象都是静态对象,则所有派生类均可共享。

struct Cry3DEngineBase
{
    static ISystem*   m_pSystem;
    static IRenderer* m_pRenderer;
    static ITimer*m_pTimer;
    static ILog*  m_pLog;
    static IPhysicalWorld*m_pPhysicalWorld;
    static IConsole*  m_pConsole;
    static C3DEngine* m_p3DEngine;
    static CVars* m_pCVars;
    static ICryPak*   m_pCryPak;
    static CObjManager*   m_pObjManager;
    static CTerrain*  m_pTerrain;
    static IParticleManager*  m_pPartManager;
    static std::shared_ptr<pfx2::IParticleSystem> m_pParticleSystem;
    static IOpticsManager*m_pOpticsManager;
    static CDecalManager* m_pDecalManager;
    static CCloudsManager*m_pCloudsManager;
    static CVisAreaManager*   m_pVisAreaManager;
    static CClipVolumeManager*m_pClipVolumeManager;
    static CMatMan*   m_pMatMan;
    static CSkyLightManager*  m_pSkyLightManager;
    static CWaterWaveManager* m_pWaterWaveManager;
    static CRenderMeshMerger* m_pRenderMeshMerger;
    static CMergedMeshesManager*  m_pMergedMeshesManager;
    static CBreezeGenerator*  m_pBreezeGenerator;
    static IStreamedObjectListener*   m_pStreamListener;
    static CGeomCacheManager* m_pGeomCacheManager;
}

这样设计也很精妙,所有子类都可以方便访问系统全局的对象。

class CObjManager : public Cry3DEngineBase;
class C3DEngine : public I3DEngine, public Cry3DEngineBase;
class CObjManager : public Cry3DEngineBase
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值