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); }
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; }