void MainWindow::newFile()
{
    LoadOBJFile();
    //    if (maybeSave()) {
    //        textEdit->clear();
    //        setCurrentFile("");
    //    }
}
void MainWindow::open()
{
    LoadOBJFile();
    //    if (maybeSave()) {
    //        QString fileName = QFileDialog::getOpenFileName(this);
    //        if (!fileName.isEmpty())
    //            loadFile(fileName);
    //    }
}
GeometryManager::GeometryManager (const std::string& assetFile) 
	: m_vertexDataUsed(0)
{
	std::ifstream is;
	is.open (assetFile.c_str(), std::ios::binary);

	if (!is.is_open()) {
		printf("GeometryManager::GeometryManager: Error opening asset library.\n");
	}
	else {
		unsigned int bufferSize;
		is >> bufferSize;

		InitBuffer(bufferSize);

		while (is.good()) {
			std::string geometryMode;

			is >> geometryMode;   

			if (geometryMode == "static") {
				std::string geometryFile;
				std::string geometryName;

				is >> geometryName;
				is >> geometryFile;

				Geometry* geometry = LoadOBJFile(geometryFile);  

				if (geometry != NULL)
					m_geometry[geometryName] = geometry;
			}
			else if (geometryMode == "keyframe") {					
				unsigned int fileCount;
				std::string geometryName;

				is >> fileCount;
				is >> geometryName;

				Geometry* keyframeGeometry = NULL;

				while (fileCount--) {
					std::string geometryFile;

					is >> geometryFile;

					Geometry* geometry = LoadOBJFile(geometryFile);  

					if (geometry == NULL) {
						continue;
					}
					else if (keyframeGeometry == NULL) {
						keyframeGeometry = geometry;
					}
					else {
						if (geometry->m_geometryMode != keyframeGeometry->m_geometryMode || geometry->m_numVertex != keyframeGeometry->m_numVertex) 
							printf("GeometryManager::GeometryManager: Incompatible keyframe file %s.\n", geometryFile);
						else 
							keyframeGeometry->m_vertexDataStarts.push_back(geometry->m_vertexDataStarts.back());
						
						delete geometry;
					}
				}

				if (keyframeGeometry != NULL)
					m_geometry[geometryName] = keyframeGeometry;
			}