#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_p; class model { public: model(); model(std::istream &, const std::string &filename_ = ""); ~model(); // LOD info bool *useFaceDefaults; std::vector defaultFaces; std::vector lods; size_t size; model_info_p info; skeleton_p skeleton; bool has_animations; std::vector animations; std::vector start_lod; std::vector 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_p; } }