pub trait AnimatorImpl {
// Required methods
fn animator_cut(&mut self, cx: &mut Cx, state: &[LiveId; 2]);
fn animator_play(&mut self, cx: &mut Cx, state: &[LiveId; 2]);
fn animator_in_state(&self, cx: &Cx, check_state_pair: &[LiveId; 2]) -> bool;
fn animator_apply_state(&mut self, cx: &mut Cx);
fn animator_after_apply(
&mut self,
cx: &mut Cx,
apply_from: ApplyFrom,
index: usize,
nodes: &[LiveNode]
);
fn animator_handle_event(
&mut self,
cx: &mut Cx,
event: &Event
) -> AnimatorAction;
// Provided method
fn animator_toggle(
&mut self,
cx: &mut Cx,
is_state_1: bool,
animate: Animate,
state1: &[LiveId; 2],
state2: &[LiveId; 2]
) { ... }
}