Unravel Engine C++ Reference
Loading...
Searching...
No Matches
camera.cpp
Go to the documentation of this file.
1#include "camera.hpp"
3
6
7namespace unravel
8{
10{
11 entt::meta_factory<projection_mode>{}
12 .type("projection_mode"_hs)
14 entt::attribute{"name", "projection_mode"},
15 entt::attribute{"pretty_name", "Projection Mode"},
16 })
17 .data<projection_mode::perspective>("perspective"_hs)
19 entt::attribute{"name", "perspective"},
20 entt::attribute{"pretty_name", "Perspective"},
21 })
22 .data<projection_mode::orthographic>("orthographic"_hs)
24 entt::attribute{"name", "orthographic"},
25 entt::attribute{"pretty_name", "Orthographic"},
26 });
27
28 // Register camera with entt
29 entt::meta_factory<camera>{}
30 .type("camera"_hs)
32 entt::attribute{"name", "camera"},
33 entt::attribute{"pretty_name", "Camera"},
34 });
35}
36
38{
39 try_save(ar, ser20::make_nvp("projection_mode", obj.projection_mode_));
40 try_save(ar, ser20::make_nvp("field_of_view", obj.fov_));
41 try_save(ar, ser20::make_nvp("near_clip", obj.near_clip_));
42 try_save(ar, ser20::make_nvp("far_clip", obj.far_clip_));
43 try_save(ar, ser20::make_nvp("viewport_position", obj.viewport_pos_));
44 try_save(ar, ser20::make_nvp("viewport_size", obj.viewport_size_));
45 try_save(ar, ser20::make_nvp("orthographic_size", obj.ortho_size_));
46 try_save(ar, ser20::make_nvp("aspect_ratio", obj.aspect_ratio_));
47 try_save(ar, ser20::make_nvp("aspect_locked", obj.aspect_locked_));
48 try_save(ar, ser20::make_nvp("frustum_locked", obj.frustum_locked_));
49}
52
54{
55 try_load(ar, ser20::make_nvp("projection_mode", obj.projection_mode_));
56 try_load(ar, ser20::make_nvp("field_of_view", obj.fov_));
57 try_load(ar, ser20::make_nvp("near_clip", obj.near_clip_));
58 try_load(ar, ser20::make_nvp("far_clip", obj.far_clip_));
59 try_load(ar, ser20::make_nvp("viewport_position", obj.viewport_pos_));
60 try_load(ar, ser20::make_nvp("viewport_size", obj.viewport_size_));
61 try_load(ar, ser20::make_nvp("orthographic_size", obj.ortho_size_));
62 try_load(ar, ser20::make_nvp("aspect_ratio", obj.aspect_ratio_));
63 try_load(ar, ser20::make_nvp("aspect_locked", obj.aspect_locked_));
64 try_load(ar, ser20::make_nvp("frustum_locked", obj.frustum_locked_));
65
66 obj.view_dirty_ = true;
67 obj.projection_dirty_ = true;
68 obj.aspect_dirty_ = true;
69 obj.frustum_dirty_ = true;
70}
73} // namespace unravel
Class representing a camera. Contains functionality for manipulating and updating a camera....
Definition camera.h:35
attributes::value_type attribute
Definition reflection.h:19
std::map< std::string, meta_any > attributes
Definition reflection.h:18
BinaryInputArchive iarchive_binary_t
simd::JSONOutputArchive oarchive_associative_t
BinaryOutputArchive oarchive_binary_t
simd::JSONInputArchive iarchive_associative_t
#define REFLECT(cls)
Definition reflection.h:133
#define SAVE_INSTANTIATE(cls, Archive)
#define LOAD(cls)
auto try_save(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool
#define LOAD_INSTANTIATE(cls, Archive)
#define SAVE(cls)
auto try_load(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool