#pragma once #include #include #include namespace internal { struct cylinder_t final : public primitive { void initialize(primitive_data_center_t &) override; void destroy() override; primitive_type get_type() const override { return PRIMITIVE_TYPE_CYLINDER; }; stl_vector_mp> get_subfaces() const override { return {static_pointer_cast(cylinder_face), static_pointer_cast(bottom_plane), static_pointer_cast(top_plane)}; } stl_vector_mp get_subface_types() const override { return {surface_type::cylinder, surface_type::plane, surface_type::plane}; } marked_subface_ptr_t cylinder_face{}; marked_subface_ptr_t bottom_plane{}; marked_subface_ptr_t top_plane{}; }; } // namespace internal