|
@ -31,6 +31,7 @@ void primitive_data_center_t::require_surface(surface_type |
|
|
const internal::paired_model_matrix_ptr_t& matrix, |
|
|
const internal::paired_model_matrix_ptr_t& matrix, |
|
|
marked_subface_ptr_t<subface>& subface) |
|
|
marked_subface_ptr_t<subface>& subface) |
|
|
{ |
|
|
{ |
|
|
|
|
|
require_transform_block(matrix); |
|
|
switch (type) { |
|
|
switch (type) { |
|
|
case surface_type::plane: { |
|
|
case surface_type::plane: { |
|
|
auto [iter, is_new] = std::get<plane_container_t>(this->surfaces[static_cast<uint8_t>(type)]).acquire(matrix); |
|
|
auto [iter, is_new] = std::get<plane_container_t>(this->surfaces[static_cast<uint8_t>(type)]).acquire(matrix); |
|
@ -68,30 +69,24 @@ void primitive_data_center_t::release_transform_block(const internal::paired_mod |
|
|
void primitive_data_center_t::release_surface(surface_type type, const marked_subface_ptr_t<subface>& subface) |
|
|
void primitive_data_center_t::release_surface(surface_type type, const marked_subface_ptr_t<subface>& subface) |
|
|
{ |
|
|
{ |
|
|
switch (type) { |
|
|
switch (type) { |
|
|
case surface_type::plane: |
|
|
case surface_type::plane: { |
|
|
{ |
|
|
|
|
|
auto model_matrices = subface->model_matrices; |
|
|
auto model_matrices = subface->model_matrices; |
|
|
std::get<plane_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices); |
|
|
std::get<plane_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices); |
|
|
release_transform_block(model_matrices); |
|
|
|
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
case surface_type::sphere: |
|
|
case surface_type::sphere: { |
|
|
{ |
|
|
|
|
|
auto model_matrices = subface->model_matrices; |
|
|
auto model_matrices = subface->model_matrices; |
|
|
std::get<sphere_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices); |
|
|
std::get<sphere_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices); |
|
|
release_transform_block(model_matrices); |
|
|
|
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
case surface_type::cylinder: |
|
|
case surface_type::cylinder: { |
|
|
{ |
|
|
|
|
|
auto model_matrices = subface->model_matrices; |
|
|
auto model_matrices = subface->model_matrices; |
|
|
std::get<cylinder_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices); |
|
|
std::get<cylinder_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices); |
|
|
release_transform_block(model_matrices); |
|
|
|
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
default: |
|
|
default: break; |
|
|
break; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
release_transform_block(subface->model_matrices); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
namespace internal |
|
|
namespace internal |
|
|