#pragma once #include #include "primitive/simple/sphere.hpp" #include "primitive/simple/cylinder.hpp" using plane_container_t = flat_object_set_mp; using sphere_container_t = flat_object_set_mp; using cylinder_container_t = flat_object_set_mp; EXTERN_C struct PE_API primitive_data_center_t { // all other data depend on cached transform_blocks using surface_containers = std::variant; std::array(surface_type::max_count)> surfaces{}; void require_surface(surface_type type, const internal::paired_model_matrix& matrix, marked_subface_ptr_t& subface); void release_surface(surface_type type, const marked_subface_ptr_t& subface); }; namespace internal { PE_API primitive* new_primitive(primitive_type type); PE_API primitive* copy_primitive(primitive* ptr); } // namespace internal