MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
NavigationMappings.hpp
Go to the documentation of this file.
1#pragma once
2
4
5namespace MayaFlux::Kinesis {
6
7/**
8 * @struct FlyKeyMap
9 * @brief Key assignments for the Fly navigation preset.
10 *
11 * Movement keys are required; all six default to the canonical WASD/QE layout.
12 * Ortho-snap slots are optional: a std::nullopt entry is silently skipped,
13 * which is the correct default for environments without a numeric keypad.
14 */
15struct FlyKeyMap {
22
23 std::optional<IO::Keys> ortho_front { IO::Keys::KP1 }; ///< Snap to front (+Z) view
24 std::optional<IO::Keys> ortho_right { IO::Keys::KP3 }; ///< Snap to right (+X) view
25 std::optional<IO::Keys> ortho_top { IO::Keys::KP7 }; ///< Snap to top (+Y) view
26 std::optional<IO::Keys> ortho_flip { IO::Keys::KP9 }; ///< Flip to opposite view
27};
28
29/**
30 * @struct OrbitKeyMap
31 * @brief Key assignments for the Orbit navigation preset.
32 *
33 * Orbit has no keyboard translate axes. The only configurable key is the
34 * pan modifier: when held during MMB drag, the focal point pans rather
35 * than the camera rotating. Ortho snap slots follow the same optional
36 * convention as FlyKeyMap.
37 */
39 IO::Keys pan_modifier { IO::Keys::LShift }; ///< Held during MMB drag to pan instead of rotate
40
41 std::optional<IO::Keys> ortho_front { IO::Keys::KP1 };
42 std::optional<IO::Keys> ortho_right { IO::Keys::KP3 };
43 std::optional<IO::Keys> ortho_top { IO::Keys::KP7 };
44 std::optional<IO::Keys> ortho_flip { IO::Keys::KP9 };
45};
46
47/**
48 * @struct PanZoom2DKeyMap
49 * @brief Input assignments for the PanZoom2D navigation preset.
50 *
51 * Only the drag button is configurable. There are no keyboard axes or
52 * ortho snaps in a 2D orthographic controller.
53 */
57
58/**
59 * @struct ScreenspaceKeyMap
60 * @brief Input assignments for the Screenspace navigation preset.
61 *
62 * No keyboard axes. Drag pans the eye in the camera's local right/up plane.
63 * Scroll dollies along the current forward vector.
64 */
68
69} // namespace MayaFlux::Kinesis
MouseButtons
Enumeration for mouse buttons.
Definition Keys.hpp:147
std::optional< IO::Keys > ortho_top
Snap to top (+Y) view.
std::optional< IO::Keys > ortho_right
Snap to right (+X) view.
std::optional< IO::Keys > ortho_flip
Flip to opposite view.
std::optional< IO::Keys > ortho_front
Snap to front (+Z) view.
Key assignments for the Fly navigation preset.
std::optional< IO::Keys > ortho_right
IO::Keys pan_modifier
Held during MMB drag to pan instead of rotate.
std::optional< IO::Keys > ortho_flip
std::optional< IO::Keys > ortho_front
std::optional< IO::Keys > ortho_top
Key assignments for the Orbit navigation preset.
IO::MouseButtons drag_button
Button held to pan.
Input assignments for the PanZoom2D navigation preset.
IO::MouseButtons drag_button
Button held to pan.
Input assignments for the Screenspace navigation preset.