Tatooine
interactively_renderable.h
Go to the documentation of this file.
1#ifndef TATOOINE_RENDERING_INTERACTIVE_INTERACTIVELY_RENDERABLE_H
2#define TATOOINE_RENDERING_INTERACTIVE_INTERACTIVELY_RENDERABLE_H
3//==============================================================================
6
7#include <type_traits>
8//==============================================================================
10//==============================================================================
11template <typename T>
12concept interactively_renderable = requires(T t) {
13 t.render();
14}
15|| requires(T t) { t.late_render(); }
16|| requires(T t) {
17 t.render(std::declval<camera_interface<double>>());
18}
19|| requires(T t) {
20 t.render(std::declval<camera_interface<float>>());
21}
22|| requires(renderer<std::decay_t<T>> t) { t.render(); }
23|| requires(renderer<std::decay_t<T>> t) {
24 t.render(std::declval<std::decay_t<T>>());
25}
26|| requires(renderer<std::decay_t<T>> t) {
27 t.render(std::declval<std::decay_t<T>>(),
28 std::declval<camera_interface<double>>());
29}
30|| requires(renderer<std::decay_t<T>> t) {
31 t.render(std::declval<std::decay_t<T>>(),
32 std::declval<camera_interface<float>>());
33}
34|| requires(renderer<std::decay_t<T>> t) { t.late_render(); }
35|| requires(renderer<std::decay_t<T>> t) {
36 t.late_render(std::declval<std::decay_t<T>>());
37};
38//==============================================================================
39} // namespace tatooine::rendering::interactive
40//==============================================================================
41#endif
Definition: interactively_renderable.h:12
Definition: interactive.h:15
Interface for camera implementations.
Definition: camera.h:19