diff options
Diffstat (limited to 'code/AssetLib/OpenGEX')
-rw-r--r-- | code/AssetLib/OpenGEX/OpenGEXExporter.cpp | 3 | ||||
-rw-r--r-- | code/AssetLib/OpenGEX/OpenGEXExporter.h | 2 | ||||
-rw-r--r-- | code/AssetLib/OpenGEX/OpenGEXImporter.cpp | 37 | ||||
-rw-r--r-- | code/AssetLib/OpenGEX/OpenGEXImporter.h | 7 | ||||
-rw-r--r-- | code/AssetLib/OpenGEX/OpenGEXStructs.h | 3 |
5 files changed, 30 insertions, 22 deletions
diff --git a/code/AssetLib/OpenGEX/OpenGEXExporter.cpp b/code/AssetLib/OpenGEX/OpenGEXExporter.cpp index cbea5f39b..f4f82a0a6 100644 --- a/code/AssetLib/OpenGEX/OpenGEXExporter.cpp +++ b/code/AssetLib/OpenGEX/OpenGEXExporter.cpp @@ -2,8 +2,7 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2024, assimp team - +Copyright (c) 2006-2025, assimp team All rights reserved. diff --git a/code/AssetLib/OpenGEX/OpenGEXExporter.h b/code/AssetLib/OpenGEX/OpenGEXExporter.h index 93e5ffc74..6877aecb2 100644 --- a/code/AssetLib/OpenGEX/OpenGEXExporter.h +++ b/code/AssetLib/OpenGEX/OpenGEXExporter.h @@ -2,7 +2,7 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2024, assimp team +Copyright (c) 2006-2025, assimp team All rights reserved. diff --git a/code/AssetLib/OpenGEX/OpenGEXImporter.cpp b/code/AssetLib/OpenGEX/OpenGEXImporter.cpp index 20b2e77ac..8f6ef54d5 100644 --- a/code/AssetLib/OpenGEX/OpenGEXImporter.cpp +++ b/code/AssetLib/OpenGEX/OpenGEXImporter.cpp @@ -2,7 +2,7 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2024, assimp team +Copyright (c) 2006-2025, assimp team All rights reserved. @@ -40,7 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef ASSIMP_BUILD_NO_OPENGEX_IMPORTER -#include "AssetLib/OpenGEX/OpenGEXImporter.h" +#include "OpenGEXImporter.h" #include "PostProcessing/MakeVerboseFormat.h" #include <assimp/DefaultIOSystem.h> @@ -289,14 +289,13 @@ bool OpenGEXImporter::CanRead(const std::string &file, IOSystem *pIOHandler, boo //------------------------------------------------------------------------------------------------ void OpenGEXImporter::InternReadFile(const std::string &filename, aiScene *pScene, IOSystem *pIOHandler) { // open source file - IOStream *file = pIOHandler->Open(filename, "rb"); + std::unique_ptr<IOStream> file(pIOHandler->Open(filename, "rb")); if (!file) { throw DeadlyImportError("Failed to open file ", filename); } std::vector<char> buffer; - TextFileToBuffer(file, buffer); - pIOHandler->Close(file); + TextFileToBuffer(file.get(), buffer); OpenDDLParser myParser; myParser.setLogCallback(&logDDLParserMessage); @@ -311,7 +310,8 @@ void OpenGEXImporter::InternReadFile(const std::string &filename, aiScene *pScen copyMeshes(pScene); copyCameras(pScene); - copyLights(pScene); + // TODO: lights only partially implemented and breaking model import +// copyLights(pScene); copyMaterials(pScene); resolveReferences(); createNodeTree(pScene); @@ -367,7 +367,8 @@ void OpenGEXImporter::handleNodes(DDLNode *node, aiScene *pScene) { break; case Grammar::LightNodeToken: - handleLightNode(*it, pScene); + // TODO: lights only partially implemented and breaking model import +// handleLightNode(*it, pScene); break; case Grammar::GeometryObjectToken: @@ -379,7 +380,8 @@ void OpenGEXImporter::handleNodes(DDLNode *node, aiScene *pScene) { break; case Grammar::LightObjectToken: - handleLightObject(*it, pScene); + // TODO: lights only partially implemented and breaking model import +// handleLightObject(*it, pScene); break; case Grammar::TransformToken: @@ -469,7 +471,10 @@ void OpenGEXImporter::handleNameNode(DDLNode *node, aiScene * /*pScene*/) { } const std::string name(val->getString()); - if (m_tokenType == Grammar::GeometryNodeToken || m_tokenType == Grammar::LightNodeToken || m_tokenType == Grammar::CameraNodeToken) { + if (m_tokenType == Grammar::GeometryNodeToken || + // TODO: lights only partially implemented and breaking model import +// m_tokenType == Grammar::LightNodeToken || + m_tokenType == Grammar::CameraNodeToken) { m_currentNode->mName.Set(name.c_str()); } else if (m_tokenType == Grammar::MaterialToken) { aiString aiName; @@ -784,10 +789,10 @@ static void fillColor4(aiColor4D *col4, Value *vals) { col4->b = next->getFloat(); next = next->m_next; if (!next) { - throw DeadlyImportError("OpenGEX: Not enough values to fill 4-element color, only 3"); + col4->a = 1.0f; + } else { + col4->a = next->getFloat(); } - - col4->a = next->getFloat(); } //------------------------------------------------------------------------------------------------ @@ -908,7 +913,13 @@ void OpenGEXImporter::handleIndexArrayNode(ODDLParser::DDLNode *node, aiScene * current.mIndices = new unsigned int[current.mNumIndices]; Value *next(vaList->m_dataList); for (size_t indices = 0; indices < current.mNumIndices; indices++) { - const int idx(next->getUnsignedInt32()); + int idx = -1; + if (next->m_type == Value::ValueType::ddl_unsigned_int16) { + idx = next->getUnsignedInt16(); + } else if (next->m_type == Value::ValueType::ddl_unsigned_int32) { + idx = next->getUnsignedInt32(); + } + ai_assert(static_cast<size_t>(idx) <= m_currentVertices.m_vertices.size()); ai_assert(index < m_currentMesh->mNumVertices); aiVector3D &pos = (m_currentVertices.m_vertices[idx]); diff --git a/code/AssetLib/OpenGEX/OpenGEXImporter.h b/code/AssetLib/OpenGEX/OpenGEXImporter.h index cf5773387..fe260ddc0 100644 --- a/code/AssetLib/OpenGEX/OpenGEXImporter.h +++ b/code/AssetLib/OpenGEX/OpenGEXImporter.h @@ -2,8 +2,7 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2024, assimp team - +Copyright (c) 2006-2025, assimp team All rights reserved. @@ -102,10 +101,10 @@ protected: void InternReadFile( const std::string &file, aiScene *pScene, IOSystem *pIOHandler ) override; /// BaseImporter override. - virtual const aiImporterDesc *GetInfo() const override; + const aiImporterDesc *GetInfo() const override; /// BaseImporter override. - virtual void SetupProperties( const Importer *pImp ) override; + void SetupProperties( const Importer *pImp ) override; void handleNodes( ODDLParser::DDLNode *node, aiScene *pScene ); void handleMetricNode( ODDLParser::DDLNode *node, aiScene *pScene ); diff --git a/code/AssetLib/OpenGEX/OpenGEXStructs.h b/code/AssetLib/OpenGEX/OpenGEXStructs.h index 91b31a41a..b249cae31 100644 --- a/code/AssetLib/OpenGEX/OpenGEXStructs.h +++ b/code/AssetLib/OpenGEX/OpenGEXStructs.h @@ -2,8 +2,7 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2024, assimp team - +Copyright (c) 2006-2025, assimp team All rights reserved. |