#pragma once struct IDisplayAdapter; struct IResourceFactory; struct ICommonObjectFactory; struct IFileSystem; struct IShader; struct IRenderTargetBase; struct IGeometryBuffer; struct ITimeline; struct IAnimationManager; struct EngineStates { IShader* LastShader; IRenderTargetBase* LastRenderTarget; IGeometryBuffer* LastVertexBufferProvider; IGeometryBuffer* LastIndexBufferProvider; }; struct __declspec(novtable) IEngine { virtual ~IEngine() {} virtual void Initialize(IDisplayAdapter* ar_Adapter_ = NULL) = 0; virtual void Uninitialize() = 0; virtual bool get_IsInitialized() const = 0; virtual bool get_IsUsingReferenceDriver() const = 0; virtual IResourceFactory& get_ResourceFactory() const = 0; virtual ICommonObjectFactory& get_CommonObjectFactory() const = 0; virtual IFileSystem& get_FileSystem() const = 0; virtual ITimeline& get_Timeline() const = 0; virtual IAnimationManager& get_AnimationManager() const = 0; virtual ID3D10Device& get_DX10Device() const = 0; virtual IDXGIFactory& get_DXGIFactory() const = 0; virtual EngineStates& get_EngineStates() = 0; };