Fix xml-migration bild.
parent
6f77d2e06d
commit
582a8b1887
|
@ -121,6 +121,14 @@ ColladaParser::ColladaParser(IOSystem *pIOHandler, const std::string &pFile) :
|
||||||
if (nullptr == root) {
|
if (nullptr == root) {
|
||||||
ThrowException("Unable to read file, malformed XML");
|
ThrowException("Unable to read file, malformed XML");
|
||||||
}
|
}
|
||||||
|
bool res = root->empty();
|
||||||
|
if (!res) {
|
||||||
|
for (XmlNode &n : root->children()) {
|
||||||
|
const std::string nm = n.name();
|
||||||
|
}
|
||||||
|
XmlNode node = root->first_child();
|
||||||
|
std::string name = node.name();
|
||||||
|
}
|
||||||
|
|
||||||
// start reading
|
// start reading
|
||||||
ReadContents(*root);
|
ReadContents(*root);
|
||||||
|
@ -2256,7 +2264,6 @@ void ColladaParser::ReadNodeGeometry(XmlNode &node, Node *pNode) {
|
||||||
|
|
||||||
s.mMatName = urlMat;
|
s.mMatName = urlMat;
|
||||||
|
|
||||||
|
|
||||||
// store the association
|
// store the association
|
||||||
instance.mMaterials[group] = s;
|
instance.mMaterials[group] = s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,9 @@ using namespace std;
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Default constructor
|
// Default constructor
|
||||||
ObjFileImporter::ObjFileImporter() :
|
ObjFileImporter::ObjFileImporter() :
|
||||||
m_Buffer(), m_pRootObject(nullptr), m_strAbsPath(std::string(1, DefaultIOSystem().getOsSeparator())) {}
|
m_Buffer(),
|
||||||
|
m_pRootObject(nullptr),
|
||||||
|
m_strAbsPath(std::string(1, DefaultIOSystem().getOsSeparator())) {}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Destructor.
|
// Destructor.
|
||||||
|
|
|
@ -4,7 +4,6 @@ Open Asset Import Library (assimp)
|
||||||
|
|
||||||
Copyright (c) 2006-2020, assimp team
|
Copyright (c) 2006-2020, assimp team
|
||||||
|
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
Redistribution and use of this software in source and binary forms,
|
||||||
|
@ -48,16 +47,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "OgreStructs.h"
|
#include "OgreStructs.h"
|
||||||
#include <assimp/StreamReader.h>
|
#include <assimp/StreamReader.h>
|
||||||
|
|
||||||
namespace Assimp
|
namespace Assimp {
|
||||||
{
|
namespace Ogre {
|
||||||
namespace Ogre
|
|
||||||
{
|
|
||||||
|
|
||||||
typedef Assimp::StreamReaderLE MemoryStreamReader;
|
typedef Assimp::StreamReaderLE MemoryStreamReader;
|
||||||
typedef std::shared_ptr<MemoryStreamReader> MemoryStreamReaderPtr;
|
typedef std::shared_ptr<MemoryStreamReader> MemoryStreamReaderPtr;
|
||||||
|
|
||||||
class OgreBinarySerializer
|
class OgreBinarySerializer {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
/// Imports mesh and returns the result.
|
/// Imports mesh and returns the result.
|
||||||
/** @note Fatal unrecoverable errors will throw a DeadlyImportError. */
|
/** @note Fatal unrecoverable errors will throw a DeadlyImportError. */
|
||||||
|
@ -71,8 +67,7 @@ public:
|
||||||
static bool ImportSkeleton(Assimp::IOSystem *pIOHandler, MeshXml *mesh);
|
static bool ImportSkeleton(Assimp::IOSystem *pIOHandler, MeshXml *mesh);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum AssetMode
|
enum AssetMode {
|
||||||
{
|
|
||||||
AM_Mesh,
|
AM_Mesh,
|
||||||
AM_Skeleton
|
AM_Skeleton
|
||||||
};
|
};
|
||||||
|
@ -80,8 +75,7 @@ private:
|
||||||
OgreBinarySerializer(MemoryStreamReader *reader, AssetMode mode) :
|
OgreBinarySerializer(MemoryStreamReader *reader, AssetMode mode) :
|
||||||
m_currentLen(0),
|
m_currentLen(0),
|
||||||
m_reader(reader),
|
m_reader(reader),
|
||||||
assetMode(mode)
|
assetMode(mode) {
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static MemoryStreamReaderPtr OpenReader(Assimp::IOSystem *pIOHandler, const std::string &filename);
|
static MemoryStreamReaderPtr OpenReader(Assimp::IOSystem *pIOHandler, const std::string &filename);
|
||||||
|
@ -158,8 +152,7 @@ private:
|
||||||
AssetMode assetMode;
|
AssetMode assetMode;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum MeshChunkId
|
enum MeshChunkId {
|
||||||
{
|
|
||||||
M_HEADER = 0x1000,
|
M_HEADER = 0x1000,
|
||||||
// char* version : Version number check
|
// char* version : Version number check
|
||||||
M_MESH = 0x3000,
|
M_MESH = 0x3000,
|
||||||
|
@ -353,8 +346,7 @@ static std::string MeshHeaderToString(MeshChunkId id)
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum SkeletonChunkId
|
enum SkeletonChunkId {
|
||||||
{
|
|
||||||
SKELETON_HEADER = 0x1000,
|
SKELETON_HEADER = 0x1000,
|
||||||
// char* version : Version number check
|
// char* version : Version number check
|
||||||
SKELETON_BLENDMODE = 0x1010, // optional
|
SKELETON_BLENDMODE = 0x1010, // optional
|
||||||
|
@ -416,8 +408,8 @@ static std::string SkeletonHeaderToString(SkeletonChunkId id)
|
||||||
return "Unknown_SkeletonChunkId";
|
return "Unknown_SkeletonChunkId";
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
} // Ogre
|
} // namespace Ogre
|
||||||
} // Assimp
|
} // namespace Assimp
|
||||||
|
|
||||||
#endif // ASSIMP_BUILD_NO_OGRE_IMPORTER
|
#endif // ASSIMP_BUILD_NO_OGRE_IMPORTER
|
||||||
#endif // AI_OGREBINARYSERIALIZER_H_INC
|
#endif // AI_OGREBINARYSERIALIZER_H_INC
|
||||||
|
|
|
@ -56,7 +56,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace Ogre {
|
namespace Ogre {
|
||||||
|
|
||||||
AI_WONT_RETURN void ThrowAttibuteError(const XmlParser *reader, const std::string &name, const std::string &error = "") AI_WONT_RETURN_SUFFIX;
|
//AI_WONT_RETURN void ThrowAttibuteError(const XmlParser *reader, const std::string &name, const std::string &error = "") AI_WONT_RETURN_SUFFIX;
|
||||||
|
|
||||||
AI_WONT_RETURN void ThrowAttibuteError(const std::string &nodeName, const std::string &name, const std::string &error) {
|
AI_WONT_RETURN void ThrowAttibuteError(const std::string &nodeName, const std::string &name, const std::string &error) {
|
||||||
if (!error.empty()) {
|
if (!error.empty()) {
|
||||||
|
@ -69,7 +69,7 @@ AI_WONT_RETURN void ThrowAttibuteError(const std::string &nodeName, const std::s
|
||||||
template <>
|
template <>
|
||||||
int32_t OgreXmlSerializer::ReadAttribute<int32_t>(XmlNode &xmlNode, const char *name) const {
|
int32_t OgreXmlSerializer::ReadAttribute<int32_t>(XmlNode &xmlNode, const char *name) const {
|
||||||
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
||||||
ThrowAttibuteError(mParser, name);
|
ThrowAttibuteError(xmlNode.name(), name, "Not found");
|
||||||
}
|
}
|
||||||
pugi::xml_attribute attr = xmlNode.attribute(name);
|
pugi::xml_attribute attr = xmlNode.attribute(name);
|
||||||
return static_cast<int32_t>(attr.as_int());
|
return static_cast<int32_t>(attr.as_int());
|
||||||
|
@ -78,14 +78,14 @@ int32_t OgreXmlSerializer::ReadAttribute<int32_t>(XmlNode &xmlNode, const char *
|
||||||
template <>
|
template <>
|
||||||
uint32_t OgreXmlSerializer::ReadAttribute<uint32_t>(XmlNode &xmlNode, const char *name) const {
|
uint32_t OgreXmlSerializer::ReadAttribute<uint32_t>(XmlNode &xmlNode, const char *name) const {
|
||||||
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
||||||
ThrowAttibuteError(mParser, name);
|
ThrowAttibuteError(xmlNode.name(), name, "Not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
// @note This is hackish. But we are never expecting unsigned values that go outside the
|
// @note This is hackish. But we are never expecting unsigned values that go outside the
|
||||||
// int32_t range. Just monitor for negative numbers and kill the import.
|
// int32_t range. Just monitor for negative numbers and kill the import.
|
||||||
int32_t temp = ReadAttribute<int32_t>(xmlNode, name);
|
int32_t temp = ReadAttribute<int32_t>(xmlNode, name);
|
||||||
if (temp < 0) {
|
if (temp < 0) {
|
||||||
ThrowAttibuteError(mParser, name, "Found a negative number value where expecting a uint32_t value");
|
ThrowAttibuteError(xmlNode.name(), name, "Found a negative number value where expecting a uint32_t value");
|
||||||
}
|
}
|
||||||
|
|
||||||
return static_cast<uint32_t>(temp);
|
return static_cast<uint32_t>(temp);
|
||||||
|
@ -94,7 +94,7 @@ uint32_t OgreXmlSerializer::ReadAttribute<uint32_t>(XmlNode &xmlNode, const char
|
||||||
template <>
|
template <>
|
||||||
uint16_t OgreXmlSerializer::ReadAttribute<uint16_t>(XmlNode &xmlNode, const char *name) const {
|
uint16_t OgreXmlSerializer::ReadAttribute<uint16_t>(XmlNode &xmlNode, const char *name) const {
|
||||||
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
||||||
ThrowAttibuteError(mParser, name);
|
ThrowAttibuteError(xmlNode.name(), name, "Not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
return static_cast<uint16_t>(xmlNode.attribute(name).as_int());
|
return static_cast<uint16_t>(xmlNode.attribute(name).as_int());
|
||||||
|
@ -103,7 +103,7 @@ uint16_t OgreXmlSerializer::ReadAttribute<uint16_t>(XmlNode &xmlNode, const char
|
||||||
template <>
|
template <>
|
||||||
float OgreXmlSerializer::ReadAttribute<float>(XmlNode &xmlNode, const char *name) const {
|
float OgreXmlSerializer::ReadAttribute<float>(XmlNode &xmlNode, const char *name) const {
|
||||||
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
||||||
ThrowAttibuteError(mParser, name);
|
ThrowAttibuteError(xmlNode.name(), name, "Not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
return xmlNode.attribute(name).as_float();
|
return xmlNode.attribute(name).as_float();
|
||||||
|
@ -112,7 +112,7 @@ float OgreXmlSerializer::ReadAttribute<float>(XmlNode &xmlNode, const char *name
|
||||||
template <>
|
template <>
|
||||||
std::string OgreXmlSerializer::ReadAttribute<std::string>(XmlNode &xmlNode, const char *name) const {
|
std::string OgreXmlSerializer::ReadAttribute<std::string>(XmlNode &xmlNode, const char *name) const {
|
||||||
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
if (!XmlParser::hasAttribute(xmlNode, name)) {
|
||||||
ThrowAttibuteError(mParser, name);
|
ThrowAttibuteError(xmlNode.name(), name, "Not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
return xmlNode.attribute(name).as_string();
|
return xmlNode.attribute(name).as_string();
|
||||||
|
@ -127,7 +127,7 @@ bool OgreXmlSerializer::ReadAttribute<bool>(XmlNode &xmlNode, const char *name)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ThrowAttibuteError(mParser, name, "Boolean value is expected to be 'true' or 'false', encountered '" + value + "'");
|
ThrowAttibuteError(xmlNode.name(), name, "Boolean value is expected to be 'true' or 'false', encountered '" + value + "'");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,16 @@ void X3DImporter::Clear() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void X3DImporter::ParseFile(const std::string &file, IOSystem *pIOHandler) {
|
||||||
|
ai_assert(nullptr != pIOHandler);
|
||||||
|
|
||||||
|
static const std::string mode = "rb";
|
||||||
|
std::unique_ptr<IOStream> fileStream(pIOHandler->Open(file, mode));
|
||||||
|
if (!fileStream.get()) {
|
||||||
|
throw DeadlyImportError("Failed to open file " + file + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************************************************************************************/
|
/*********************************************************************************************************************************************/
|
||||||
/************************************************************ Functions: find set ************************************************************/
|
/************************************************************ Functions: find set ************************************************************/
|
||||||
/*********************************************************************************************************************************************/
|
/*********************************************************************************************************************************************/
|
||||||
|
@ -154,7 +164,9 @@ void X3DImporter::Clear() {
|
||||||
bool X3DImporter::CanRead(const std::string &pFile, IOSystem *pIOHandler, bool pCheckSig) const {
|
bool X3DImporter::CanRead(const std::string &pFile, IOSystem *pIOHandler, bool pCheckSig) const {
|
||||||
const std::string extension = GetExtension(pFile);
|
const std::string extension = GetExtension(pFile);
|
||||||
|
|
||||||
if ((extension == "x3d") || (extension == "x3db")) return true;
|
if ((extension == "x3d") || (extension == "x3db")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!extension.length() || pCheckSig) {
|
if (!extension.length() || pCheckSig) {
|
||||||
const char *tokens[] = { "DOCTYPE X3D PUBLIC", "http://www.web3d.org/specifications/x3d" };
|
const char *tokens[] = { "DOCTYPE X3D PUBLIC", "http://www.web3d.org/specifications/x3d" };
|
||||||
|
|
|
@ -4,7 +4,6 @@ Open Asset Import Library (assimp)
|
||||||
|
|
||||||
Copyright (c) 2006-2020, assimp team
|
Copyright (c) 2006-2020, assimp team
|
||||||
|
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
Redistribution and use of this software in source and binary forms,
|
||||||
|
@ -119,6 +118,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
TNodeType *parse(IOStream *stream) {
|
TNodeType *parse(IOStream *stream) {
|
||||||
|
mRoot = nullptr;
|
||||||
if (nullptr == stream) {
|
if (nullptr == stream) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -126,10 +126,9 @@ public:
|
||||||
mData.resize(stream->FileSize());
|
mData.resize(stream->FileSize());
|
||||||
stream->Read(&mData[0], mData.size(), 1);
|
stream->Read(&mData[0], mData.size(), 1);
|
||||||
mDoc = new pugi::xml_document();
|
mDoc = new pugi::xml_document();
|
||||||
pugi::xml_parse_result result = mDoc->load_string(&mData[0]);
|
pugi::xml_parse_result result = mDoc->load_string(&mData[0], pugi::parse_default | pugi::parse_declaration);
|
||||||
if (result.status == pugi::status_ok) {
|
if (result.status == pugi::status_ok) {
|
||||||
pugi::xml_node root = *(mDoc->children().begin());
|
pugi::xml_node root = mDoc->document_element();
|
||||||
|
|
||||||
mRoot = &root;
|
mRoot = &root;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Copyright (c) 2006-2020, assimp team
|
# Copyright (c) 2006-2020, assimp team
|
||||||
|
#
|
||||||
|
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use of this software in source and binary forms,
|
# Redistribution and use of this software in source and binary forms,
|
||||||
|
@ -88,6 +87,7 @@ SET( COMMON
|
||||||
unit/Common/utLineSplitter.cpp
|
unit/Common/utLineSplitter.cpp
|
||||||
unit/Common/utSpatialSort.cpp
|
unit/Common/utSpatialSort.cpp
|
||||||
unit/Common/utAssertHandler.cpp
|
unit/Common/utAssertHandler.cpp
|
||||||
|
unit/Common/utXmlParser.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
SET( IMPORTERS
|
SET( IMPORTERS
|
||||||
|
|
|
@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
|
||||||
|
|
||||||
Copyright (c) 2006-2020, assimp team
|
Copyright (c) 2006-2020, assimp team
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
Redistribution and use of this software in source and binary forms,
|
||||||
|
|
Loading…
Reference in New Issue