13class RegionOwnedObject :
virtual public ArrangerObject
16 RegionOwnedObject (ArrangerObjectRegistry &obj_registry) noexcept
17 : object_registry_ (obj_registry)
20 ~RegionOwnedObject ()
override =
default;
21 Q_DISABLE_COPY_MOVE (RegionOwnedObject)
33 template <typename SelfT>
35 this const SelfT &self,
37 dsp::FramesPerTick frames_per_tick)
39 auto r = self.get_region ();
40 pos = self.get_position ();
41 pos.add_ticks (r->get_position ().ticks_, frames_per_tick);
47 template <
typename SelfT>
50 assert (self.region_id_.has_value ());
51 return std::get<typename SelfT::RegionT *> (
52 self.object_registry_.find_by_id_or_throw (*self.region_id_));
59 friend void init_from (
65 static constexpr std::string_view kRegionIdKey =
"regionId";
68 j[kRegionIdKey] =
object.region_id_;
70 friend void from_json (
const nlohmann::json &j, RegionOwnedObject &
object)
72 j.at (kRegionIdKey).get_to (
object.
region_id_);
76 operator== (
const RegionOwnedObject &lhs,
const RegionOwnedObject &rhs)
78 return lhs.region_id_ == rhs.region_id_
79 &&
static_cast<const ArrangerObject &
> (lhs)
80 ==
static_cast<const ArrangerObject &
> (rhs);
84 ArrangerObjectRegistry &object_registry_;
89 BOOST_DESCRIBE_CLASS (RegionOwnedObject, (ArrangerObject), (
region_id_), (), ())