- fbx: read first set of header properties (format version, timestamp etc).
This commit is contained in:
@@ -468,6 +468,12 @@ Document::Document(const Parser& parser, const ImportSettings& settings)
|
||||
: parser(parser)
|
||||
, settings(settings)
|
||||
{
|
||||
// cannot use array default initialization syntax because vc8 fails on it
|
||||
for (unsigned int i = 0; i < 7; ++i) {
|
||||
creationTimeStamp[i] = 0;
|
||||
}
|
||||
|
||||
ReadHeader();
|
||||
ReadPropertyTemplates();
|
||||
|
||||
// this order is important, connections need parsed objects to check
|
||||
@@ -487,6 +493,38 @@ Document::~Document()
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Document::ReadHeader()
|
||||
{
|
||||
// read ID objects from "Objects" section
|
||||
const Scope& sc = parser.GetRootScope();
|
||||
const Element* const ehead = sc["FBXHeaderExtension"];
|
||||
if(!ehead || !ehead->Compound()) {
|
||||
DOMError("no FBXHeaderExtension dictionary found");
|
||||
}
|
||||
|
||||
const Scope& shead = *ehead->Compound();
|
||||
fbxVersion = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(shead,"FBXVersion",ehead),0));
|
||||
|
||||
const Element* const ecreator = shead["Creator"];
|
||||
if(ecreator) {
|
||||
creator = ParseTokenAsString(GetRequiredToken(*ecreator,0));
|
||||
}
|
||||
|
||||
const Element* const etimestamp = shead["CreationTimeStamp"];
|
||||
if(etimestamp && etimestamp->Compound()) {
|
||||
const Scope& stimestamp = *etimestamp->Compound();
|
||||
creationTimeStamp[0] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp,"Year"),0));
|
||||
creationTimeStamp[1] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp,"Month"),0));
|
||||
creationTimeStamp[2] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp,"Day"),0));
|
||||
creationTimeStamp[3] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp,"Hour"),0));
|
||||
creationTimeStamp[4] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp,"Minute"),0));
|
||||
creationTimeStamp[5] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp,"Second"),0));
|
||||
creationTimeStamp[6] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp,"Millisecond"),0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Document::ReadObjects()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user