Merge pull request #3511 from MalcolmTyrrell/fbxVideoKeys
Simplification: textures_converted keys can just be pointerspull/3503/head
commit
9ae112309f
|
@ -1715,14 +1715,14 @@ aiString FBXConverter::GetTexturePath(const Texture *tex) {
|
||||||
bool textureReady = false; //tells if our texture is ready (if it was loaded or if it was found)
|
bool textureReady = false; //tells if our texture is ready (if it was loaded or if it was found)
|
||||||
unsigned int index=0;
|
unsigned int index=0;
|
||||||
|
|
||||||
VideoMap::const_iterator it = textures_converted.find(*media);
|
VideoMap::const_iterator it = textures_converted.find(media);
|
||||||
if (it != textures_converted.end()) {
|
if (it != textures_converted.end()) {
|
||||||
index = (*it).second;
|
index = (*it).second;
|
||||||
textureReady = true;
|
textureReady = true;
|
||||||
} else {
|
} else {
|
||||||
if (media->ContentLength() > 0) {
|
if (media->ContentLength() > 0) {
|
||||||
index = ConvertVideo(*media);
|
index = ConvertVideo(*media);
|
||||||
textures_converted[*media] = index;
|
textures_converted[media] = index;
|
||||||
textureReady = true;
|
textureReady = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2221,12 +2221,12 @@ void FBXConverter::SetShadingPropertiesRaw(aiMaterial *out_mat, const PropertyTa
|
||||||
if (media != nullptr && media->ContentLength() > 0) {
|
if (media != nullptr && media->ContentLength() > 0) {
|
||||||
unsigned int index;
|
unsigned int index;
|
||||||
|
|
||||||
VideoMap::const_iterator videoIt = textures_converted.find(*media);
|
VideoMap::const_iterator videoIt = textures_converted.find(media);
|
||||||
if (videoIt != textures_converted.end()) {
|
if (videoIt != textures_converted.end()) {
|
||||||
index = videoIt->second;
|
index = videoIt->second;
|
||||||
} else {
|
} else {
|
||||||
index = ConvertVideo(*media);
|
index = ConvertVideo(*media);
|
||||||
textures_converted[*media] = index;
|
textures_converted[media] = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup texture reference string (copied from ColladaLoader::FindFilenameForEffectTexture)
|
// setup texture reference string (copied from ColladaLoader::FindFilenameForEffectTexture)
|
||||||
|
@ -3493,7 +3493,7 @@ void FBXConverter::ConvertOrphanedEmbeddedTextures() {
|
||||||
if (realTexture) {
|
if (realTexture) {
|
||||||
const Video *media = realTexture->Media();
|
const Video *media = realTexture->Media();
|
||||||
unsigned int index = ConvertVideo(*media);
|
unsigned int index = ConvertVideo(*media);
|
||||||
textures_converted[*media] = index;
|
textures_converted[media] = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -428,7 +428,7 @@ private:
|
||||||
using MaterialMap = std::fbx_unordered_map<const Material*, unsigned int>;
|
using MaterialMap = std::fbx_unordered_map<const Material*, unsigned int>;
|
||||||
MaterialMap materials_converted;
|
MaterialMap materials_converted;
|
||||||
|
|
||||||
using VideoMap = std::fbx_unordered_map<const Video, unsigned int>;
|
using VideoMap = std::fbx_unordered_map<const Video*, unsigned int>;
|
||||||
VideoMap textures_converted;
|
VideoMap textures_converted;
|
||||||
|
|
||||||
using MeshMap = std::fbx_unordered_map<const Geometry*, std::vector<unsigned int> >;
|
using MeshMap = std::fbx_unordered_map<const Geometry*, std::vector<unsigned int> >;
|
||||||
|
|
|
@ -638,20 +638,6 @@ public:
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const Video& other) const
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
type == other.type
|
|
||||||
&& relativeFileName == other.relativeFileName
|
|
||||||
&& fileName == other.fileName
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator<(const Video& other) const
|
|
||||||
{
|
|
||||||
return std::tie(type, relativeFileName, fileName) < std::tie(other.type, other.relativeFileName, other.fileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string type;
|
std::string type;
|
||||||
std::string relativeFileName;
|
std::string relativeFileName;
|
||||||
|
@ -1192,25 +1178,4 @@ private:
|
||||||
} // Namespace FBX
|
} // Namespace FBX
|
||||||
} // Namespace Assimp
|
} // Namespace Assimp
|
||||||
|
|
||||||
namespace std
|
|
||||||
{
|
|
||||||
template <>
|
|
||||||
struct hash<const Assimp::FBX::Video>
|
|
||||||
{
|
|
||||||
std::size_t operator()(const Assimp::FBX::Video& video) const
|
|
||||||
{
|
|
||||||
using std::size_t;
|
|
||||||
using std::hash;
|
|
||||||
using std::string;
|
|
||||||
|
|
||||||
size_t res = 17;
|
|
||||||
res = res * 31 + hash<string>()(video.Name());
|
|
||||||
res = res * 31 + hash<string>()(video.RelativeFilename());
|
|
||||||
res = res * 31 + hash<string>()(video.Type());
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // INCLUDED_AI_FBX_DOCUMENT_H
|
#endif // INCLUDED_AI_FBX_DOCUMENT_H
|
||||||
|
|
Loading…
Reference in New Issue