physis/havok/
animation_container.rs

1// SPDX-FileCopyrightText: 2020 Inseok Lee
2// SPDX-License-Identifier: MIT
3
4#![allow(dead_code)]
5
6use crate::havok::animation_binding::HavokAnimationBinding;
7use crate::havok::object::HavokObject;
8use crate::havok::skeleton::HavokSkeleton;
9use std::cell::RefCell;
10use std::sync::Arc;
11
12pub struct HavokAnimationContainer {
13    pub skeletons: Vec<HavokSkeleton>,
14    pub bindings: Vec<HavokAnimationBinding>,
15}
16
17impl HavokAnimationContainer {
18    pub fn new(object: Arc<RefCell<HavokObject>>) -> Self {
19        let root = object.borrow();
20
21        let raw_skeletons = root.get("skeletons").as_array();
22        let skeletons = raw_skeletons
23            .iter()
24            .map(|x| HavokSkeleton::new(x.as_object()))
25            .collect::<Vec<_>>();
26
27        let raw_bindings = root.get("bindings").as_array();
28        let bindings = raw_bindings
29            .iter()
30            .map(|x| HavokAnimationBinding::new(x.as_object()))
31            .collect::<Vec<_>>();
32
33        Self {
34            skeletons,
35            bindings,
36        }
37    }
38}