summaryrefslogtreecommitdiffstats
path: root/code/AssetLib/OpenGEX
diff options
context:
space:
mode:
Diffstat (limited to 'code/AssetLib/OpenGEX')
-rw-r--r--code/AssetLib/OpenGEX/OpenGEXExporter.cpp3
-rw-r--r--code/AssetLib/OpenGEX/OpenGEXExporter.h2
-rw-r--r--code/AssetLib/OpenGEX/OpenGEXImporter.cpp37
-rw-r--r--code/AssetLib/OpenGEX/OpenGEXImporter.h7
-rw-r--r--code/AssetLib/OpenGEX/OpenGEXStructs.h3
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.