Esempio n. 1
0
	gkString createOrRetrieveHaloMaterial(const gkString& baseMatName)
	{
		gkString matName = DEFAULT_HALO_MAT;

		try
		{
			gkString haloMatName = baseMatName + ".halo";
			Ogre::MaterialManager& mmgr = Ogre::MaterialManager::getSingleton();
		
			if (mmgr.resourceExists(haloMatName))
				matName = haloMatName;
			else
			{
				Ogre::MaterialPtr baseMat = mmgr.getByName(baseMatName);
				if (!baseMat.isNull())
				{
					Ogre::MaterialPtr mat = mmgr.create(haloMatName, baseMat->getGroup());
					baseMat->copyDetailsTo(mat);
					Ogre::Pass *pass = mat->getTechnique(0)->getPass(0);

					pass->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
					pass->setAlphaRejectSettings(Ogre::CMPF_GREATER_EQUAL, 150);
					pass->setDepthWriteEnabled(false);
					Ogre::TextureUnitState* tu = pass->createTextureUnitState(HALO_IMAGE_NAME);	

					matName = haloMatName;
				}
			}		
		}
		catch(Ogre::Exception& e)
		{
			gkLogMessage("gkParticleManager: " << e.getDescription());
		}
		return matName;
	}