Improve the loading of serialized Bullet files, so that

after 'loadFileFromMemory' you can save the existing memory back to disk converted to native architecture endianness.
Fixed a bug that prevented big endian machines to load cloth data (due to wrong endian swap of pointer array)
Also improved the 'preswap' so that you can swap endianness on big endian machines (to little endian)
This commit is contained in:
erwin.coumans
2012-11-10 00:51:51 +00:00
parent f35621eb01
commit c4db79791c
5 changed files with 90 additions and 18 deletions

View File

@@ -368,8 +368,11 @@ void bDNA::init(char *data, int len, bool swap)
// Parse names
if (swap) dataLen = ChunkUtils::swapInt(*intPtr);
else dataLen = *intPtr;
if (swap)
{
*intPtr = ChunkUtils::swapInt(*intPtr);
}
dataLen = *intPtr;
intPtr++;
cp = (char*)intPtr;
@@ -407,8 +410,11 @@ void bDNA::init(char *data, int len, bool swap)
intPtr = (int*)cp;
assert(strncmp(cp, "TYPE", 4)==0); intPtr++;
if (swap) dataLen = ChunkUtils::swapInt(*intPtr);
else dataLen = *intPtr;
if (swap)
{
*intPtr = ChunkUtils::swapInt(*intPtr);
}
dataLen = *intPtr;
intPtr++;
cp = (char*)intPtr;
@@ -467,8 +473,11 @@ void bDNA::init(char *data, int len, bool swap)
cp = (char*)intPtr;
assert(strncmp(cp, "STRC", 4)==0); intPtr++;
if (swap) dataLen = ChunkUtils::swapInt(*intPtr);
else dataLen = *intPtr;
if (swap)
{
*intPtr = ChunkUtils::swapInt(*intPtr);
}
dataLen = *intPtr;
intPtr++;