rship_entities/
event_track.rs1use serde::{Deserialize, Serialize};
2#[cfg(feature = "mods")]
3use {
4 myko_macros::Eventable, partially::Partial,
6};
7
8#[derive(Clone, Debug, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10#[cfg_attr(feature = "mods", derive(Partial, PartialEq, Eventable))]
11#[cfg_attr(
12 feature = "mods",
13 partially(derive(Clone, Serialize, Deserialize, Default))
14)]
15pub struct EventTrack {
16 pub id: String,
17 pub hash: String,
18 pub name: String,
19 pub locked: bool,
20 pub source_mode: EventTrackSourceMode,
21 pub time_mode: EventTrackTimeMode,
22}
23
24#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
25#[serde(rename_all = "camelCase")]
26pub struct BeatTimeModeData {
27 measure: u64,
28}
29
30#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
31#[serde(rename_all = "camelCase")]
32pub struct FrameTimeModeData {
33 rate: u64,
34}
35
36#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
37#[serde(tag = "type")]
38#[serde(rename_all = "camelCase")]
39pub enum EventTrackTimeMode {
40 Clock,
41 Beat(BeatTimeModeData),
42 Frame(FrameTimeModeData),
43}
44
45#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
46#[serde(rename_all = "camelCase")]
47pub struct SourcedSourceModeData {
48 pub service_id: String,
49}
50#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
51#[serde(rename_all = "camelCase")]
52pub struct ScopedSourceModeData {
53 pub scope_id: String,
54}
55
56#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
57#[serde(tag = "type")]
58#[serde(rename_all = "camelCase")]
59pub enum EventTrackSourceMode {
60 Sourced(SourcedSourceModeData),
61 Scoped(ScopedSourceModeData),
62}