Exemplo n.º 1
0
static void AddStaticMesh(DemoEntityManager* const scene)
{
    char fileName[2048];

    NewtonWorld* const world = scene->GetNewton();
    GetWorkingFileName ("ramp.off", fileName);
    NewtonMesh* const ntMesh = NewtonMeshLoadOFF(world, fileName);

    dMatrix matrix (dGetIdentityMatrix());
    DemoMesh* mesh = new DemoMesh(ntMesh);
    DemoEntity* const entity = new DemoEntity(matrix, NULL);
    entity->SetMesh(mesh, dGetIdentityMatrix());
    mesh->Release();

    scene->Append(entity);

    CreateLevelMeshBody (world, entity, true);

    NewtonMeshDestroy (ntMesh);
}
Exemplo n.º 2
0
NewtonBody* CreateLevelMesh (DemoEntityManager* const scene, const char* const name, bool optimized)
{
	// load the scene from a ngd file format
	char fileName[2048];
	GetWorkingFileName (name, fileName);
	scene->LoadScene (fileName);

	NewtonBody* levelBody = NULL;
	NewtonWorld* const world = scene->GetNewton();
	for (DemoEntityManager::dListNode* node = scene->GetLast(); node; node = node->GetPrev()) {
		DemoEntity* const ent = node->GetInfo();
		DemoMesh* const mesh = (DemoMesh*) ent->GetMesh();
		dAssert (mesh->IsType(DemoMesh::GetRttiType()));

		if (mesh) {
			if (mesh->GetName() == "levelGeometry_mesh") {
				levelBody = CreateLevelMeshBody (world, ent, optimized);
				break;
			}
		}
	}
	return levelBody;
}