#pragma once struct ViewFrustum { D3DXPLANE Plane[6]; }; struct __declspec(novtable) ICamera { virtual const D3DXMATRIX& get_ProjectionMatrix() const = 0; virtual const D3DXMATRIX& get_ViewMatrix() const = 0; virtual void set_AspectRatio(float argValue) = 0; virtual float get_AspectRatio() const = 0; virtual void set_FarClip(float argValue) = 0; virtual float get_FarClip() const = 0; virtual void set_NearClip(float argValue) = 0; virtual float get_NearClip() const = 0; virtual const ViewFrustum& get_ViewFrustum() const = 0; }; struct __declspec(novtable) IPerspectiveCamera { virtual void set_Fov(float argValue) = 0; virtual float get_Fov() const = 0; virtual ICamera& get_Base() = 0; }; struct __declspec(novtable) IOrthographicCamera { virtual void set_Width(float argValue) = 0; virtual float get_Width() const = 0; virtual void set_Height(float argValue) = 0; virtual float get_Height() const = 0; virtual ICamera& get_Base() = 0; };