#pragma once #include "shared.hpp" #include "animation.hpp" #include "skeleton.hpp" #include "model_info.hpp" #include "lod_info.hpp" namespace ace { namespace p3d { class face_settings { public: face_settings() {} face_settings(std::istream &stream_, uint32_t version = 68) { stream_.read((char *)&count, sizeof(uint32_t)); stream_.read((char *)&unknown, sizeof(uint8_t) * 21); } uint32_t count; uint8_t unknown[21]; }; typedef std::shared_ptr<face_settings> face_settings_p; class model { public: model(); model(std::istream &, const std::string &filename_ = ""); ~model(); // LOD info bool *useFaceDefaults; std::vector<face> defaultFaces; std::vector<lod_p> lods; size_t size; model_info_p info; skeleton_p skeleton; bool has_animations; std::vector<animation_p> animations; std::vector<uint32_t> start_lod; std::vector<uint32_t> end_lod; // data root fileds std::string filename; uint32_t lod_count; uint32_t filetype; uint64_t version; std::string prefix_name; }; typedef std::shared_ptr<model> model_p; }; };