commit 4a38743020138673f772b1b6f8c9885e83a6de25
parent 57611558ae834d9cd5feaf0c27cb51b15167b406
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Fri, 9 Oct 2020 11:19:27 +0200
Merge branch 'develop' into feature_unsteady_green
Diffstat:
1 file changed, 10 insertions(+), 47 deletions(-)
diff --git a/src/sdis_scene_Xd.h b/src/sdis_scene_Xd.h
@@ -804,11 +804,9 @@ XD(setup_enclosures)(struct sdis_scene* scn, struct sencXd(scene)* senc3d_scn)
{
struct sencXd(enclosure)* enc = NULL;
unsigned ienc, nencs;
- unsigned enclosed_medium;
- int outer_found = 0;
+ int inner_multi = 0;
res_T res = RES_OK;
ASSERT(scn && senc3d_scn);
- (void)outer_found;
SENCXD(scene_get_enclosure_count(senc3d_scn, &nencs));
FOR_EACH(ienc, 0, nencs) {
@@ -818,53 +816,12 @@ XD(setup_enclosures)(struct sdis_scene* scn, struct sencXd(scene)* senc3d_scn)
SENCXD(enclosure_get_header(enc, &header));
if(header.is_infinite) {
- ASSERT(!outer_found);
- outer_found = 1;
+ ASSERT(scn->outer_enclosure_id == UINT_MAX); /* Not set yet */
scn->outer_enclosure_id = ienc;
}
- /* As paths don't go in infinite enclosures we can accept models are broken
- * there. But nowhere else. */
- if(header.enclosed_media_count != 1 && !header.is_infinite) {
- /* Dump the problematic enclosure. */
- double tmp[DIM];
- unsigned indices[DIM];
- unsigned i;
- log_warn(scn->dev, "# Found internal enclosure with %u materials:\n",
- header.enclosed_media_count);
- FOR_EACH(i, 0, header.enclosed_media_count) {
- unsigned imed;
- const struct sdis_medium* med;
- SENCXD(enclosure_get_medium(enc, i, &imed));
- med = darray_medium_cdata_get(&scn->media)[imed];
- log_warn(scn->dev, "# %u (%s)\n",
- imed, (med->type == SDIS_SOLID ? "solid" : "fluid"));
- }
- FOR_EACH(i, 0, header.vertices_count) {
- SENCXD(enclosure_get_vertex(enc, i, tmp));
- #if DIM == 2
- log_warn(scn->dev, "v %g %g\n", SPLIT2(tmp));
- #else
- log_warn(scn->dev, "v %g %g %g\n", SPLIT3(tmp));
- #endif
- }
- FOR_EACH(i, 0, header.primitives_count) {
- SENCXD(enclosure_get_primitive(enc, i, indices));
- #if DIM == 2
- log_warn(scn->dev, "f %u %u\n", indices[0]+1, indices[1]+1);
- #else
- log_warn(scn->dev, "f %u %u %u\n",
- indices[0]+1, indices[1]+1, indices[2]+1);
- #endif
- }
- SENCXD(enclosure_ref_put(enc));
- enc = NULL;
- res = RES_BAD_ARG;
- goto error;
- }
-
- SENCXD(enclosure_get_medium(enc, 0, &enclosed_medium));
- ASSERT(enclosed_medium < darray_medium_size_get(&scn->media));
+ if(header.enclosed_media_count != 1 && !header.is_infinite)
+ inner_multi++;
/* Silently discard infinite enclosures */
if(!header.is_infinite) {
@@ -875,6 +832,12 @@ XD(setup_enclosures)(struct sdis_scene* scn, struct sencXd(scene)* senc3d_scn)
enc = NULL;
}
+ if(inner_multi) {
+ log_info(scn->dev,
+ "# Found %d internal enclosure(s) with more than 1 medium.\n",
+ inner_multi);
+ }
+
/* tmp table no more useful */
htable_d_purge(&scn->tmp_hc_ub);
exit: