3#include "pixelbullet/serialization/node.h"
10enum class CameraProjectionMode
16[[nodiscard]]
constexpr std::string_view ToString(
const CameraProjectionMode value)
noexcept
20 case CameraProjectionMode::Orthographic:
21 return "Orthographic";
22 case CameraProjectionMode::Perspective:
28inline Node& operator<<(
Node& node,
const CameraProjectionMode& value)
30 node << std::string(ToString(value));
34inline const Node& operator>>(
const Node& node, CameraProjectionMode& value)
36 std::string serialized;
38 value = serialized ==
"Orthographic" ? CameraProjectionMode::Orthographic : CameraProjectionMode::Perspective;
45 float field_of_view_degrees = 45.0f;
46 float near_plane = 0.1f;
47 float far_plane = 1000.0f;
48 CameraProjectionMode projection_mode = CameraProjectionMode::Perspective;
49 float orthographic_x_mag = 1.0f;
50 float orthographic_y_mag = 1.0f;
55 node[
"primary"] << camera.primary;
56 node[
"fieldOfViewDegrees"] << camera.field_of_view_degrees;
57 node[
"nearPlane"] << camera.near_plane;
58 node[
"farPlane"] << camera.far_plane;
59 node[
"projectionMode"] << camera.projection_mode;
60 node[
"orthographicXMag"] << camera.orthographic_x_mag;
61 node[
"orthographicYMag"] << camera.orthographic_y_mag;
65inline const Node& operator>>(
const Node& node, CameraComponent& camera)
67 node[
"primary"] >> camera.primary;
68 node[
"fieldOfViewDegrees"] >> camera.field_of_view_degrees;
69 node[
"nearPlane"] >> camera.near_plane;
70 node[
"farPlane"] >> camera.far_plane;
71 if (node.has_property(
"projectionMode"))
73 node[
"projectionMode"] >> camera.projection_mode;
75 if (node.has_property(
"orthographicXMag"))
77 node[
"orthographicXMag"] >> camera.orthographic_x_mag;
79 if (node.has_property(
"orthographicYMag"))
81 node[
"orthographicYMag"] >> camera.orthographic_y_mag;
Represents a hierarchical node capable of storing various data types and supporting YAML serializatio...
Definition node.h:49
Definition camera_component.h:43