You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

27 lines
1.1 KiB

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