Nazara Engine  0.4
A fast, complete, cross-platform API designed for game development
AbstractViewer.hpp
1 // Copyright (C) 2017 Jérôme Leclercq
2 // This file is part of the "Nazara Engine - Graphics module"
3 // For conditions of distribution and use, see copyright notice in Config.hpp
4 
5 #pragma once
6 
7 #ifndef NAZARA_ABSTRACTVIEWER_HPP
8 #define NAZARA_ABSTRACTVIEWER_HPP
9 
10 #include <Nazara/Prerequesites.hpp>
11 #include <Nazara/Graphics/Config.hpp>
12 #include <Nazara/Graphics/Enums.hpp>
13 #include <Nazara/Math/Frustum.hpp>
14 #include <Nazara/Math/Matrix4.hpp>
15 #include <Nazara/Math/Rect.hpp>
16 
17 namespace Nz
18 {
19  class RenderTarget;
20 
21  class NAZARA_GRAPHICS_API AbstractViewer
22  {
23  public:
24  AbstractViewer() = default;
25  AbstractViewer(const AbstractViewer&) = default;
26  AbstractViewer(AbstractViewer&&) noexcept = default;
27  virtual ~AbstractViewer();
28 
29  virtual void ApplyView() const = 0;
30 
31  virtual float GetAspectRatio() const = 0;
32  virtual Vector3f GetEyePosition() const = 0;
33  virtual Vector3f GetForward() const = 0;
34  virtual const Frustumf& GetFrustum() const = 0;
35  virtual const Matrix4f& GetProjectionMatrix() const = 0;
36  virtual Nz::ProjectionType GetProjectionType() const = 0;
37  virtual const RenderTarget* GetTarget() const = 0;
38  virtual const Matrix4f& GetViewMatrix() const = 0;
39  virtual const Recti& GetViewport() const = 0;
40  virtual float GetZFar() const = 0;
41  virtual float GetZNear() const = 0;
42 
43  AbstractViewer& operator=(const AbstractViewer&) = default;
44  AbstractViewer& operator=(AbstractViewer&&) noexcept = default;
45  };
46 }
47 
48 #endif // NAZARA_ABSTRACTVIEWER_HPP
Math class that represents a frustum in the three dimensional vector space.
Definition: Frustum.hpp:24
TODO: Inherit SoundEmitter from Node.
Definition: Algorithm.hpp:12
Graphics class that represents the viewer for our scene.
Definition: AbstractViewer.hpp:21