20 #ifndef ANTKEEPER_NEST_VIEW_STATE_HPP
21 #define ANTKEEPER_NEST_VIEW_STATE_HPP
44 void create_third_person_camera_rig();
45 void destroy_third_person_camera_rig();
47 void set_third_person_camera_zoom(
double zoom);
48 void set_third_person_camera_rotation(
double yaw,
double pitch);
50 void zoom_third_person_camera(
double zoom);
51 void translate_third_person_camera(
const math::dvec3& direction,
double magnitude);
56 void update_third_person_camera();
60 void setup_controls();
62 std::vector<std::shared_ptr<::event::subscription>> action_subscriptions;
63 std::shared_ptr<::event::subscription> mouse_motion_subscription;
65 bool mouse_look{
false};
66 bool mouse_grip{
false};
67 bool mouse_zoom{
false};
73 entity::id third_person_camera_rig_eid{entt::null};
74 double third_person_camera_yaw{0.0};
76 math::dvec3 third_person_camera_focal_point{0.0, 0.0, 0.0};
77 double third_person_camera_zoom{0.25};
78 std::uint32_t third_person_camera_zoom_step_count{6};
80 double third_person_camera_near_focal_plane_height{2.0f};
81 double third_person_camera_far_focal_plane_height{50.0f};
87 double third_person_camera_speed{1.0f};
89 double third_person_camera_hfov{};
90 double third_person_camera_vfov{};
91 double third_person_camera_focal_plane_width{};
92 double third_person_camera_focal_plane_height{};
93 double third_person_camera_focal_distance{};
98 std::shared_ptr<render::matvar_fvec3> light_rectangle_emissive;
99 std::shared_ptr<scene::light_probe> light_probe;
101 std::shared_ptr<geom::brep_mesh> navmesh;
102 std::unique_ptr<geom::bvh> navmesh_bvh;
Abstract base class for game states.
Portion of a shell bounded by loops.
nest_view_state(::game &ctx)
virtual ~nest_view_state()
entt::entity id
Entity ID type.
Publish-subscribe messaging.
constexpr T radians(T degrees) noexcept
Converts an angle given in degrees to radians.
Complete set of ant phenes.
Half of a line proceeding from an initial point.
Quaternion composed of a real scalar part and imaginary vector part.
static constexpr quaternion identity() noexcept
Returns a rotation identity quaternion.