#pragma once
#pragma once

#include "shared.hpp"


namespace ace {
    namespace p3d {
        class bone {
        public:
            bone() : name(""), parent("") {}
            bone(const std::string & name_, const std::string & parent_)
                : name(name_), parent(parent_) {
            }
            std::string name;
            std::string parent;
            std::vector<std::string> children;
            std::vector<uint32_t> animations;
        };
        typedef std::shared_ptr<bone> bone_p;

        class skeleton {
        public:
            skeleton();
            skeleton(std::istream &, const uint32_t lod_count);
            ~skeleton();

            std::string name;
            bool inherited;
            uint32_t size;
            std::map<std::string, bone_p> root_bones;
            std::vector<bone_p> all_bones;
        };
        typedef std::shared_ptr<skeleton> skeleton_p;
    }
}