Ejemplo n.º 1
0
void TrussMaterialLibrary::selectMaterial ( const QString& uuid )
{
    TrussMaterial* material = getMaterial( uuid );

    if ( material )
        selectMaterial( *material );
}
Ejemplo n.º 2
0
void TrussMaterialLibrary::selectMaterial ( int idx )
{
    TrussMaterial* material = getMaterial( idx );

    if ( material )
        selectMaterial( *material );
}
Ejemplo n.º 3
0
void TrussMaterialLibrary::loadFromXML ( const QDomElement& projElem ) 
    /*throw (LoadException)*/
{
    XMLSerializableObject::loadFromXML( projElem );

    clean();

    /** 
     * Create materials
     ********************/
    QDomNodeList trussMaterials = 
        projElem.elementsByTagName( "TrussMaterial" );
    for ( int i = 0; i < trussMaterials.count(); ++i ) {
        QDomNode material = trussMaterials.item( i );
        if ( ! material.isElement() )
            throw LoadException();
        QDomElement materialElem = material.toElement();
        TrussMaterial& newMaterial = createMaterial( 0, 0, 0, "" );
        newMaterial.loadFromXML( materialElem );
    }

    /** 
     * Set selected material
     ************************/
    if ( ! projElem.hasAttribute( "selectedMaterial" ) )
        throw LoadException();

    QString mUUID = projElem.attribute( "selectedMaterial" );
    TrussMaterial* m = getMaterial( mUUID );
    if ( m )
        selectMaterial( *m );
}
//-----------------------------------------------------------------------
void MaterialTab::OnNewMaterial(wxCommandEvent& event)
{
	if (mMaterialListBox)
	{
		wxString name = wxT("Material") + ogre2wx(ParticleUniverse::StringConverter::toString(mNewMaterialCounter));
		mMaterialListBox->addMaterialName(name);
		mNewMaterialCounter++;
		Ogre::MaterialManager* materialManager = Ogre::MaterialManager::getSingletonPtr();
		Ogre::String nameString = wx2ogre(name);
		materialManager->create(nameString, TEMP_MATERIAL_GROUP);
		Ogre::MaterialPtr material = materialManager->getByName(nameString, TEMP_MATERIAL_GROUP);
		selectMaterial(name);
	}
}
//-----------------------------------------------------------------------
void MaterialTab::OnChangeName(wxCommandEvent& event)
{
	wxString newName = mTxtMaterialName->GetValue();
	wxString oldName = mMaterialListBox->GetStringSelection();
	Ogre::String newMaterialName = wx2ogre(newName);
	Ogre::String oldMaterialName = wx2ogre(oldName);
	Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName(oldMaterialName);
	if (!material.isNull())
	{
		Ogre::MaterialPtr clonedMaterial = material->clone(newMaterialName);
		if (!clonedMaterial.isNull())
		{
			// Load the new resource, unload the old one, remove it from the list and set the new material as the selected
			clonedMaterial->load();
			Ogre::MaterialManager* materialManager = Ogre::MaterialManager::getSingletonPtr();
			materialManager->remove(oldMaterialName);
			mMaterialListBox->Delete(mMaterialListBox->GetSelection());
			mMaterialListBox->addMaterialName(newName);
			selectMaterial(newName);
		}
	}
}
//-----------------------------------------------------------------------
void MaterialTab::fillMaterials(void)
{
	mMaterialListBox->loadMaterials();
	restoreSelectedMaterialName();
	selectMaterial(mMaterialListBox->GetStringSelection());
}