// Create a test sphere csVector3 radius (3.396 , 3.396, 3.396); csVector3 center ( 0,0,0); Create_Sphere( "100000" , radius, center, "grid.jpg" , csVector3 (1,0,0) ); bool AppTest::Create_Sphere(const char *name, csVector3 radius,csVector3 center,const char *matname , csVector3 pos ) { // Create the ball mesh factory. csRef ballFact = engine->CreateMeshFactory( "crystalspace.mesh.object.genmesh", "ballFact"); if (ballFact == 0) { csReport (object_reg, CS_REPORTER_SEVERITY_ERROR, "SolApp", "Error creating mesh object factory!"); } csRef gmstate = scfQueryInterface ( ballFact->GetMeshObjectFactory ()); csEllipsoid ellips (center, radius); gmstate->GenerateSphere (ellips, 64); // Create the mesh. iSector* room = engine->FindSector("system" , 0 ); csRef mesh (engine->CreateMeshWrapper (ballFact, name , room)); iMovable* movable = mesh->GetMovable(); movable->SetPosition ( pos ); iMaterialWrapper* mat = engine->GetMaterialList ()->FindByName ("gstar"); printf ("MAterial Count:%d\n" , engine->GetMaterialList ()-> GetCount() ); mesh->GetMeshObject ()->SetMaterialWrapper (mat); return true; } void Body::Load_Texture(AppTest* app, std::string filename, std::string mat_name ) { csColor* transp; iTextureList* texturelist; csRef engine = app->GetEngine(); if (!engine) printf("Star::Load_Texture: Failed to locate iEngine renderer!"); transp = new csColor; transp->Set(1,0,1); // Create a Texture from a image file on VFS if ( !engine->CreateTexture ( mat_name.c_str() , filename.c_str() , transp , CS_TEXTURE_3D ) ) { printf("Star::Load_Texture: Failed loading Texture %s\n" , filename.c_str() ); } // Use the texture to create a Material texturelist = engine->GetTextureList(); engine->CreateMaterial ( mat_name.c_str() , texturelist->FindByName(mat_name.c_str()) ); iMaterialWrapper* mat = engine->GetMaterialList ()->FindByName (mat_name.c_str() ); if ( !mat ) { printf(" Star::Load_Texture: Material %s not found!\n",mat_name.c_str() ); } // Now add the texture to the mesh if (!mesh->GetMeshObject ()->SetMaterialWrapper (mat)) printf ("Body::Load_Texture: Error SetMaterialWrapper failed\n") ; }