rive_rs/animation/
animator.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

use crate::core::{Core, ObjectRef};

pub(crate) struct Animator<T> {
    val: T,
}

impl<T: Clone> Animator<T> {
    pub fn new(val: T) -> Self {
        Self { val }
    }

    pub fn animate<'a, C: Core, S>(&self, object: &'a ObjectRef<'a, C>, setter: S)
    where
        S: Fn(&'a ObjectRef<'a, C>, T),
    {
        setter(object, self.val.clone());
    }
}