1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use crate::resources::stack::*;
use core::prefab::{Prefab, PrefabComponent};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum InputStackInstance {
    Setup(InputStackListener),
    #[serde(skip)]
    Listener(InputStackListenerId),
}

impl Default for InputStackInstance {
    fn default() -> Self {
        Self::Setup(Default::default())
    }
}

impl InputStackInstance {
    pub fn as_listener(&self) -> Option<InputStackListenerId> {
        match self {
            Self::Listener(id) => Some(*id),
            _ => None,
        }
    }
}

impl Prefab for InputStackInstance {}
impl PrefabComponent for InputStackInstance {}