Merge branch 'master' into vs_gitignore_update
commit
5390e035d5
|
@ -266,6 +266,7 @@ void Discreet3DSImporter::ParseMainChunk() {
|
||||||
|
|
||||||
case Discreet3DS::CHUNK_PRJ:
|
case Discreet3DS::CHUNK_PRJ:
|
||||||
bIsPrj = true;
|
bIsPrj = true;
|
||||||
|
break;
|
||||||
case Discreet3DS::CHUNK_MAIN:
|
case Discreet3DS::CHUNK_MAIN:
|
||||||
ParseEditorChunk();
|
ParseEditorChunk();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -44,6 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_COB_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_COB_IMPORTER
|
||||||
|
|
||||||
#include "AssetLib/COB/COBLoader.h"
|
#include "AssetLib/COB/COBLoader.h"
|
||||||
#include "AssetLib/COB/COBScene.h"
|
#include "AssetLib/COB/COBScene.h"
|
||||||
#include "PostProcessing/ConvertToLHProcess.h"
|
#include "PostProcessing/ConvertToLHProcess.h"
|
||||||
|
@ -90,11 +91,15 @@ static const aiImporterDesc desc = {
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Constructor to be privately used by Importer
|
// Constructor to be privately used by Importer
|
||||||
COBImporter::COBImporter() {}
|
COBImporter::COBImporter() {
|
||||||
|
// empty
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Destructor, private as well
|
// Destructor, private as well
|
||||||
COBImporter::~COBImporter() {}
|
COBImporter::~COBImporter() {
|
||||||
|
// empty
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Returns whether the class can handle the format of the given file.
|
// Returns whether the class can handle the format of the given file.
|
||||||
|
@ -466,9 +471,10 @@ void COBImporter::UnsupportedChunk_Ascii(LineSplitter &splitter, const ChunkInfo
|
||||||
// missing the next line.
|
// missing the next line.
|
||||||
splitter.get_stream().IncPtr(nfo.size);
|
splitter.get_stream().IncPtr(nfo.size);
|
||||||
splitter.swallow_next_increment();
|
splitter.swallow_next_increment();
|
||||||
} else
|
} else {
|
||||||
ThrowException(error);
|
ThrowException(error);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
void COBImporter::ReadBasicNodeInfo_Ascii(Node &msh, LineSplitter &splitter, const ChunkInfo & /*nfo*/) {
|
void COBImporter::ReadBasicNodeInfo_Ascii(Node &msh, LineSplitter &splitter, const ChunkInfo & /*nfo*/) {
|
||||||
|
@ -790,25 +796,12 @@ void COBImporter::ReadBitM_Ascii(Scene & /*out*/, LineSplitter &splitter, const
|
||||||
if (nfo.version > 1) {
|
if (nfo.version > 1) {
|
||||||
return UnsupportedChunk_Ascii(splitter, nfo, "BitM");
|
return UnsupportedChunk_Ascii(splitter, nfo, "BitM");
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
"\nThumbNailHdrSize %ld"
|
|
||||||
"\nThumbHeader: %02hx 02hx %02hx "
|
|
||||||
"\nColorBufSize %ld"
|
|
||||||
"\nColorBufZipSize %ld"
|
|
||||||
"\nZippedThumbnail: %02hx 02hx %02hx "
|
|
||||||
*/
|
|
||||||
|
|
||||||
const unsigned int head = strtoul10((++splitter)[1]);
|
const unsigned int head = strtoul10((++splitter)[1]);
|
||||||
if (head != sizeof(Bitmap::BitmapHeader)) {
|
if (head != sizeof(Bitmap::BitmapHeader)) {
|
||||||
ASSIMP_LOG_WARN("Unexpected ThumbNailHdrSize, skipping this chunk");
|
ASSIMP_LOG_WARN("Unexpected ThumbNailHdrSize, skipping this chunk");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*union {
|
|
||||||
Bitmap::BitmapHeader data;
|
|
||||||
char opaq[sizeof Bitmap::BitmapHeader()];
|
|
||||||
};*/
|
|
||||||
// ReadHexOctets(opaq,head,(++splitter)[1]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
@ -884,7 +877,10 @@ void COBImporter::ReadBinaryFile(Scene &out, StreamReaderLE *reader) {
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
std::string type;
|
std::string type;
|
||||||
type += reader->GetI1(), type += reader->GetI1(), type += reader->GetI1(), type += reader->GetI1();
|
type += reader->GetI1();
|
||||||
|
type += reader->GetI1();
|
||||||
|
type += reader->GetI1();
|
||||||
|
type += reader->GetI1();
|
||||||
|
|
||||||
ChunkInfo nfo;
|
ChunkInfo nfo;
|
||||||
nfo.version = reader->GetI2() * 10;
|
nfo.version = reader->GetI2() * 10;
|
||||||
|
@ -906,14 +902,7 @@ void COBImporter::ReadBinaryFile(Scene &out, StreamReaderLE *reader) {
|
||||||
ReadCame_Binary(out, *reader, nfo);
|
ReadCame_Binary(out, *reader, nfo);
|
||||||
} else if (type == "Mat1") {
|
} else if (type == "Mat1") {
|
||||||
ReadMat1_Binary(out, *reader, nfo);
|
ReadMat1_Binary(out, *reader, nfo);
|
||||||
}
|
} else if (type == "Unit") {
|
||||||
/* else if (type == "Bone") {
|
|
||||||
ReadBone_Binary(out,*reader,nfo);
|
|
||||||
}
|
|
||||||
else if (type == "Chan") {
|
|
||||||
ReadChan_Binary(out,*reader,nfo);
|
|
||||||
}*/
|
|
||||||
else if (type == "Unit") {
|
|
||||||
ReadUnit_Binary(out, *reader, nfo);
|
ReadUnit_Binary(out, *reader, nfo);
|
||||||
} else if (type == "OLay") {
|
} else if (type == "OLay") {
|
||||||
// ignore layer index silently.
|
// ignore layer index silently.
|
||||||
|
@ -923,10 +912,11 @@ void COBImporter::ReadBinaryFile(Scene &out, StreamReaderLE *reader) {
|
||||||
return UnsupportedChunk_Binary(*reader, nfo, type.c_str());
|
return UnsupportedChunk_Binary(*reader, nfo, type.c_str());
|
||||||
} else if (type == "END ") {
|
} else if (type == "END ") {
|
||||||
return;
|
return;
|
||||||
} else
|
} else {
|
||||||
UnsupportedChunk_Binary(*reader, nfo, type.c_str());
|
UnsupportedChunk_Binary(*reader, nfo, type.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
void COBImporter::ReadPolH_Binary(COB::Scene &out, StreamReaderLE &reader, const ChunkInfo &nfo) {
|
void COBImporter::ReadPolH_Binary(COB::Scene &out, StreamReaderLE &reader, const ChunkInfo &nfo) {
|
||||||
|
|
|
@ -656,7 +656,7 @@ void ProcessExtrudedArea(const Schema_2x3::IfcExtrudedAreaSolid& solid, const Te
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( openings && ((sides_with_openings == 1 && sides_with_openings) || (sides_with_v_openings == 2 && sides_with_v_openings)) ) {
|
if( openings && (sides_with_openings == 1 || sides_with_v_openings == 2 ) ) {
|
||||||
IFCImporter::LogWarn("failed to resolve all openings, presumably their topology is not supported by Assimp");
|
IFCImporter::LogWarn("failed to resolve all openings, presumably their topology is not supported by Assimp");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1189,22 +1189,11 @@ bool GenerateOpenings(std::vector<TempOpening>& openings,
|
||||||
TempMesh* profile_data = opening.profileMesh.get();
|
TempMesh* profile_data = opening.profileMesh.get();
|
||||||
bool is_2d_source = false;
|
bool is_2d_source = false;
|
||||||
if (opening.profileMesh2D && norm_extrusion_dir.SquareLength() > 0) {
|
if (opening.profileMesh2D && norm_extrusion_dir.SquareLength() > 0) {
|
||||||
|
|
||||||
if(std::fabs(norm_extrusion_dir * wall_extrusion_axis_norm) < 0.1) {
|
|
||||||
// horizontal extrusion
|
|
||||||
if (std::fabs(norm_extrusion_dir * nor) > 0.9) {
|
if (std::fabs(norm_extrusion_dir * nor) > 0.9) {
|
||||||
profile_data = opening.profileMesh2D.get();
|
profile_data = opening.profileMesh2D.get();
|
||||||
is_2d_source = true;
|
is_2d_source = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
// vertical extrusion
|
|
||||||
if (std::fabs(norm_extrusion_dir * nor) > 0.9) {
|
|
||||||
profile_data = opening.profileMesh2D.get();
|
|
||||||
is_2d_source = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
std::vector<IfcVector3> profile_verts = profile_data->mVerts;
|
std::vector<IfcVector3> profile_verts = profile_data->mVerts;
|
||||||
std::vector<unsigned int> profile_vertcnts = profile_data->mVertcnt;
|
std::vector<unsigned int> profile_vertcnts = profile_data->mVertcnt;
|
||||||
if(profile_verts.size() <= 2) {
|
if(profile_verts.size() <= 2) {
|
||||||
|
|
Loading…
Reference in New Issue