Wayverb
raytracer.h
1 #pragma once
2 
3 #include "combined/model/member.h"
4 
5 #include "raytracer/simulation_parameters.h"
6 
7 namespace wayverb {
8 namespace combined {
9 namespace model {
10 
11 class raytracer final : public basic_member<raytracer> {
12 public:
13  explicit raytracer(double room_volume = 0,
14  double speed_of_sound = 340,
15  size_t quality = 3,
16  size_t img_src_order = 4,
17  double receiver_radius = 0.1,
18  double histogram_sample_rate = 1000);
19 
20  void set_quality(size_t quality);
21  size_t get_quality() const;
22 
23  void set_max_img_src_order(size_t max);
24  size_t get_max_img_src_order() const;
25 
26  void set_room_volume(double volume);
27 
29 
30  template <typename Archive>
31  void serialize(Archive& archive) {
32  archive(quality_, img_src_order_);
33  }
34 
35  NOTIFYING_COPY_ASSIGN_DECLARATION(raytracer)
36 private:
37  void swap(raytracer& other) noexcept {
38  using std::swap;
39  swap(quality_, other.quality_);
40  swap(img_src_order_, other.img_src_order_);
41  }
42 
43  double room_volume_;
44  double speed_of_sound_;
45 
46  size_t quality_;
47  size_t img_src_order_;
48 
49  double receiver_radius_;
50  double histogram_sample_rate_;
51 };
52 
53 bool operator==(const raytracer& a, const raytracer& b);
54 bool operator!=(const raytracer& a, const raytracer& b);
55 
56 } // namespace model
57 } // namespace combined
58 } // namespace wayverb
Definition: pressure.h:22
Definition: capsule_base.h:9
Definition: simulation_parameters.h:9