Pioneer
Loading...
Searching...
No Matches
ShipViewController.h
Go to the documentation of this file.
1// Copyright © 2008-2023 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
15public:
18
19 void Update() override;
20 void Activated() override;
21 void Deactivated() override;
22 void Draw(Camera *camera) override;
23
24 enum CamType {
29 };
30
31 void SetCamType(enum CamType);
32 enum CamType GetCamType() const { return m_camType; }
33 CameraController *GetCameraController() const { return m_activeCameraController; }
34
35 // returns true if the active camera is an exterior view.
36 bool IsExteriorView() const;
37
38 sigc::signal<void> onChangeCamType;
39
40private:
41 // TODO: better system for cockpit rendering that doesn't require
42 // WorldView looking at the internals of ShipViewController.
43 friend class WorldView;
44 void ChangeInternalCameraMode(InternalCameraController::Mode m);
45
46 enum CamType m_camType;
47
48 sigc::connection m_onMouseWheelCon;
49
50 std::unique_ptr<HeadtrackingManager> m_headtrackingManager;
51
52 std::unique_ptr<InternalCameraController> m_internalCameraController;
53 std::unique_ptr<ExternalCameraController> m_externalCameraController;
54 std::unique_ptr<SiderealCameraController> m_siderealCameraController;
55 std::unique_ptr<FlyByCameraController> m_flybyCameraController;
56 CameraController *m_activeCameraController; //one of the above
57
58 bool headtracker_input_priority;
59 bool m_mouseActive;
60
61 void MouseWheel(bool up);
62
63public:
64 void Init();
65 void LoadFromJson(const Json &jsonObj);
66 void SaveToJson(Json &jsonObj);
67
69 using InputFrame::InputFrame;
70
75
78
85
88
89 void RegisterBindings() override;
91};
nlohmann::json Json
Definition Json.h:8
Definition CameraController.h:16
Definition Camera.h:80
Definition Headtracker.h:10
Mode
Definition CameraController.h:82
Definition ShipViewController.h:14
void SaveToJson(Json &jsonObj)
Definition ShipViewController.cpp:95
bool IsExteriorView() const
Definition ShipViewController.cpp:183
void Init()
Definition ShipViewController.cpp:104
CamType
Definition ShipViewController.h:24
@ CAM_FLYBY
Definition ShipViewController.h:28
@ CAM_SIDEREAL
Definition ShipViewController.h:27
@ CAM_INTERNAL
Definition ShipViewController.h:25
@ CAM_EXTERNAL
Definition ShipViewController.h:26
void LoadFromJson(const Json &jsonObj)
Definition ShipViewController.cpp:82
void Deactivated() override
Definition ShipViewController.cpp:135
ShipViewController::InputBinding InputBindings
sigc::signal< void > onChangeCamType
Definition ShipViewController.h:38
enum CamType GetCamType() const
Definition ShipViewController.h:32
~ShipViewController()
Definition ShipViewController.cpp:79
void Draw(Camera *camera) override
Definition ShipViewController.cpp:296
void Activated() override
Definition ShipViewController.cpp:124
CameraController * GetCameraController() const
Definition ShipViewController.h:33
void Update() override
Definition ShipViewController.cpp:197
void SetCamType(enum CamType)
Definition ShipViewController.cpp:143
Definition ViewController.h:9
Definition WorldView.h:30
Definition InputBindings.h:142
Definition InputBindings.h:166
Definition Input.h:46
Definition ShipViewController.h:68
Action * rightCamera
Definition ShipViewController.h:82
Axis * cameraZoom
Definition ShipViewController.h:74
Action * leftCamera
Definition ShipViewController.h:81
Axis * lookPitch
Definition ShipViewController.h:77
Action * cycleCameraMode
Definition ShipViewController.h:86
void RegisterBindings() override
Definition ShipViewController.cpp:48
Axis * cameraYaw
Definition ShipViewController.h:71
Action * resetCamera
Definition ShipViewController.h:87
Action * rearCamera
Definition ShipViewController.h:80
Axis * lookYaw
Definition ShipViewController.h:76
Action * topCamera
Definition ShipViewController.h:83
Action * frontCamera
Definition ShipViewController.h:79
Axis * cameraPitch
Definition ShipViewController.h:72
Action * bottomCamera
Definition ShipViewController.h:84
Axis * cameraRoll
Definition ShipViewController.h:73