Esempio n. 1
0
bool SGMExporter::GetMeshes(std::vector<Scene3DMesh*> &meshes, BinaryWriter *bw)
{
	// get only mesh nodes
	std::vector<IGameNode*> meshNodes;
	for (int i = 0; i < scene ->GetTopLevelNodeCount(); i++)
		FilterMeshNodes(scene ->GetTopLevelNode(i), meshNodes);

	SetProgressSteps((int)meshNodes.size());

	for (int i = 0; i < (int)meshNodes.size(); i++)
	{
		Scene3DMesh *mesh = ConvertMesh(meshNodes[i]);

		if (mesh != NULL)
		{
			GMatrix m = meshNodes[i]->GetWorldTM().Inverse();

			mesh->m_worldInverseMatrix.a[0] = m.GetRow(0).x;
			mesh->m_worldInverseMatrix.a[1] = m.GetRow(0).y;
			mesh->m_worldInverseMatrix.a[2] = m.GetRow(0).z;
			mesh->m_worldInverseMatrix.a[3] = m.GetRow(0).w;

			mesh->m_worldInverseMatrix.a[4] = m.GetRow(1).x;
			mesh->m_worldInverseMatrix.a[5] = m.GetRow(1).y;
			mesh->m_worldInverseMatrix.a[6] = m.GetRow(1).z;
			mesh->m_worldInverseMatrix.a[7] = m.GetRow(1).w;

			mesh->m_worldInverseMatrix.a[8] = m.GetRow(2).x;
			mesh->m_worldInverseMatrix.a[9] = m.GetRow(2).y;
			mesh->m_worldInverseMatrix.a[10] = m.GetRow(2).z;
			mesh->m_worldInverseMatrix.a[11] = m.GetRow(2).w;

			mesh->m_worldInverseMatrix.a[12] = m.GetRow(3).x;
			mesh->m_worldInverseMatrix.a[13] = m.GetRow(3).y;
			mesh->m_worldInverseMatrix.a[14] = m.GetRow(3).z;
			mesh->m_worldInverseMatrix.a[15] = m.GetRow(3).w;

			meshesCount++;
			GeoSaver::SaveMesh(mesh, *bw);
			delete mesh;
		}
			//meshes.push_back(mesh);

		StepProgress();
	}

	scene ->ReleaseIGame();

	return true;
}
Esempio n. 2
0
void SGMExporter::SaveMatrix(BinaryWriter *bw, const GMatrix &m)
{
	bw->Write(m.GetRow(0).x);
	bw->Write(m.GetRow(0).y);
	bw->Write(m.GetRow(0).z);
	bw->Write(m.GetRow(0).w);

	bw->Write(m.GetRow(1).x);
	bw->Write(m.GetRow(1).y);
	bw->Write(m.GetRow(1).z);
	bw->Write(m.GetRow(1).w);

	bw->Write(m.GetRow(2).x);
	bw->Write(m.GetRow(2).y);
	bw->Write(m.GetRow(2).z);
	bw->Write(m.GetRow(2).w);

	bw->Write(m.GetRow(3).x);
	bw->Write(m.GetRow(3).y);
	bw->Write(m.GetRow(3).z);
	bw->Write(m.GetRow(3).w);
}
Esempio n. 3
0
void SGMExporter::ExportMatrix(const GMatrix &m, BinaryWriter *fh)
{
	fh ->Write(m.GetRow(0).x);
	fh ->Write(m.GetRow(0).y);
	fh ->Write(m.GetRow(0).z);
	fh ->Write(m.GetRow(0).w);

	fh ->Write(m.GetRow(1).x);
	fh ->Write(m.GetRow(1).y);
	fh ->Write(m.GetRow(1).z);
	fh ->Write(m.GetRow(1).w);

	fh ->Write(m.GetRow(2).x);
	fh ->Write(m.GetRow(2).y);
	fh ->Write(m.GetRow(2).z);
	fh ->Write(m.GetRow(2).w);

	fh ->Write(m.GetRow(3).x);
	fh ->Write(m.GetRow(3).y);
	fh ->Write(m.GetRow(3).z);
	fh ->Write(m.GetRow(3).w);
}