Simguy wrote:
Code: Select all
ULONG Offset1; //"Bone List offset"
ULONG ListCount;
Just a note about the file formats in general to anyone writing any readers or max scripts but these "list offset, list count" pairs are littered everywhere among the file formats so I've interpreted them as structures:
Code: Select all
template< typename EntryType >
struct TableReference
{
typedef EntryType ElementType; // For reading functions
std::uint32_t Offset;
std::uint32_t Count;
};
in C++ using templates to store the type of the table which allows for some very adaptive code to be written even when tables get very nested(this is probably what Platinum's source code is doing as there
has to be some statically available data for it to determine how to read these structures such as the size of each element). If any of you out there are making readers I recommend something something like this so you aren't writing deeply nested table-reference-resolvers when things are actually pretty "flat". You can write one "ReadTable" function that could recursively read in any nested tables and return a vector of the table's ElementType. The offsets seem file-relative but should the file be loaded entirely into memory then you can use these same offsets for pointer arithmetic to avoid having to seek and read all around a file.
With this an entire "Table reference" of 32-bit integers can be declared as
Code: Select all
TableReference<std::uint32_t> SomeTable;
I'll release my model-reader code as info gets mapped out and will probably write a converter using the fbxsdk.