Pioneer
ShipViewController.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #pragma once
5 
6 #include "CameraController.h"
7 #include "Input.h"
8 #include "InputBindings.h"
9 #include "ViewController.h"
10 #include "utils.h"
11 
13 public:
15 
16  void Update() override;
17  void Activated() override;
18  void Deactivated() override;
19  void Draw(Camera *camera) override;
20 
21  enum CamType {
25  CAM_FLYBY
26  };
27 
28  void SetCamType(enum CamType);
29  enum CamType GetCamType() const { return m_camType; }
30  CameraController *GetCameraController() const { return m_activeCameraController; }
31 
32  // returns true if the active camera is an exterior view.
33  bool IsExteriorView() const;
34 
35  sigc::signal<void> onChangeCamType;
36 
37 private:
38  // TODO: better system for cockpit rendering that doesn't require
39  // WorldView looking at the internals of ShipViewController.
40  friend class WorldView;
41  void ChangeInternalCameraMode(InternalCameraController::Mode m);
42 
43  enum CamType m_camType;
44 
45  sigc::connection m_onMouseWheelCon;
46 
47  std::unique_ptr<InternalCameraController> m_internalCameraController;
48  std::unique_ptr<ExternalCameraController> m_externalCameraController;
49  std::unique_ptr<SiderealCameraController> m_siderealCameraController;
50  std::unique_ptr<FlyByCameraController> m_flybyCameraController;
51  CameraController *m_activeCameraController; //one of the above
52 
53  bool headtracker_input_priority;
54  bool m_mouseActive;
55 
56  void MouseWheel(bool up);
57 
58 public:
59  void Init();
60  void LoadFromJson(const Json &jsonObj);
61  void SaveToJson(Json &jsonObj);
62 
63  struct InputBinding : public Input::InputFrame {
64  using InputFrame::InputFrame;
65 
70 
73 
80 
83 
84  void RegisterBindings() override;
86 };
nlohmann::json Json
Definition: Json.h:8
Definition: CameraController.h:16
Definition: Camera.h:76
Mode
Definition: CameraController.h:80
Definition: ShipViewController.h:12
void SaveToJson(Json &jsonObj)
Definition: ShipViewController.cpp:89
bool IsExteriorView() const
Definition: ShipViewController.cpp:162
void Init()
Definition: ShipViewController.cpp:98
CameraController * GetCameraController() const
Definition: ShipViewController.h:30
CamType
Definition: ShipViewController.h:21
@ CAM_FLYBY
Definition: ShipViewController.h:25
@ CAM_SIDEREAL
Definition: ShipViewController.h:24
@ CAM_INTERNAL
Definition: ShipViewController.h:22
@ CAM_EXTERNAL
Definition: ShipViewController.h:23
void LoadFromJson(const Json &jsonObj)
Definition: ShipViewController.cpp:76
void Deactivated() override
Definition: ShipViewController.cpp:119
ShipViewController::InputBinding InputBindings
sigc::signal< void > onChangeCamType
Definition: ShipViewController.h:35
enum CamType GetCamType() const
Definition: ShipViewController.h:29
void Draw(Camera *camera) override
Definition: ShipViewController.cpp:264
void Activated() override
Definition: ShipViewController.cpp:108
void Update() override
Definition: ShipViewController.cpp:176
ShipViewController(WorldView *v)
Definition: ShipViewController.cpp:67
void SetCamType(enum CamType)
Definition: ShipViewController.cpp:127
Definition: ViewController.h:9
Definition: WorldView.h:33
Definition: InputBindings.h:142
Definition: InputBindings.h:168
Definition: Input.h:45
Definition: ShipViewController.h:63
Action * rightCamera
Definition: ShipViewController.h:77
Axis * cameraZoom
Definition: ShipViewController.h:69
Action * leftCamera
Definition: ShipViewController.h:76
Axis * lookPitch
Definition: ShipViewController.h:72
Action * cycleCameraMode
Definition: ShipViewController.h:81
void RegisterBindings() override
Definition: ShipViewController.cpp:46
Axis * cameraYaw
Definition: ShipViewController.h:66
Action * resetCamera
Definition: ShipViewController.h:82
Action * rearCamera
Definition: ShipViewController.h:75
Axis * lookYaw
Definition: ShipViewController.h:71
Action * topCamera
Definition: ShipViewController.h:78
Action * frontCamera
Definition: ShipViewController.h:74
Axis * cameraPitch
Definition: ShipViewController.h:67
Action * bottomCamera
Definition: ShipViewController.h:79
Axis * cameraRoll
Definition: ShipViewController.h:68