void MaterialSelector::Reload(void) { if (!Ogre::ResourceGroupManager::getSingletonPtr()) return; wxBusyInfo* busyInfo = new wxBusyInfo(_("正在读取材质数据 ..."), this); mMaterialList->Freeze(); mMaterialList->ClearAll(); Ogre::ResourceManager::ResourceMapIterator resourceMapIterator = Ogre::MaterialManager::getSingleton().getResourceIterator(); while ( resourceMapIterator.hasMoreElements() ) { long index = mMaterialList->GetItemCount(); mMaterialList->InsertItem( index, AS_STRING( resourceMapIterator.peekNextValue()->getName())); resourceMapIterator.moveNext(); } mMaterialList->Thaw(); delete busyInfo; }
void LiquidCreatorDialog::OnInitDialog(wxInitDialogEvent &e) { wxDialog::OnInitDialog(e); wxSizer* sizer = LiquidCreator(this, true, true); /// 获取各控件的引用 mComboBox = wxDynamicCast(this->FindWindow(ID_MATERIALCOMBO),wxComboBox); assert (mComboBox); Ogre::ResourceManager::ResourceMapIterator resourceMapIterator = Ogre::MaterialManager::getSingleton().getResourceIterator(); while ( resourceMapIterator.hasMoreElements() ) { if ( resourceMapIterator.peekNextValue()->getGroup() == Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ) { Ogre::String matName = resourceMapIterator.peekNextValue()->getName(); // 只有材质名称中包含“水”才加入到combobox中 if (matName.find("water") != Ogre::String::npos || matName.find("Water") != Ogre::String::npos || matName.find("水01") != Ogre::String::npos) mComboBox->AppendString( matName.c_str() ); } resourceMapIterator.moveNext(); } resourceMapIterator = Ogre::MaterialManager::getSingleton().getResourceIterator(); mComboBox->SetValue( resourceMapIterator.peekNextValue()->getName().c_str() ); mSubDivideTextCtrl = wxDynamicCast(this->FindWindow(ID_SUBDIVISIONTEXTCTRL),wxTextCtrl); assert (mSubDivideTextCtrl); mTexScaleTextCtrl = wxDynamicCast(this->FindWindow(ID_TEXCOORDSCALETEXTCTRL),wxTextCtrl); assert (mTexScaleTextCtrl); mDiffuseTextCtrl = wxDynamicCast(this->FindWindow(ID_DIFFUSETEXTCTRL),wxTextCtrl); assert (mDiffuseTextCtrl); mDepthTextCtrl = wxDynamicCast(this->FindWindow(ID_DEPTHTEXTCTRL),wxTextCtrl); assert (mDepthTextCtrl); }
void MaterialEditorDialog::InitMaterialCombo(void) { typedef std::list<Ogre::String> MaterialFileNameList; MaterialFileNameList materialFileNameList; Ogre::FileInfoListPtr fileInfoList = Ogre::ResourceGroupManager::getSingleton().findResourceFileInfo( Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, "*.material"); for (Ogre::FileInfoList::const_iterator it = fileInfoList->begin(); it != fileInfoList->end(); ++it) { if ( it->archive->getName() == EFFECT_PATH) { materialFileNameList.push_back(it->filename); } } Ogre::ResourceManager::ResourceMapIterator resourceMapIterator = Ogre::MaterialManager::getSingleton().getResourceIterator(); while ( resourceMapIterator.hasMoreElements() ) { Ogre::String matName = resourceMapIterator.peekNextValue()->getName(); for ( MaterialFileNameList::iterator i = materialFileNameList.begin(); i != materialFileNameList.end(); ++i ) { if ( *i == resourceMapIterator.peekNextValue()->getOrigin() ) { mMaterialComboBox->Append(matName); break; } } resourceMapIterator.moveNext(); } }
wxPGConstants * FairySkillEditDialog::PopulateConstants(const Ogre::String& name) { size_t id = reinterpret_cast<size_t>(&name); wxPGConstants* constants = wxPropertyGrid::GetConstantsArray(id); if (constants) { for (std::list<wxPGConstants*>::iterator it = mConstantList.begin(); it != mConstantList.end(); ++it) { if (constants == *it) { if (constants->UnRef()) delete constants; mConstantList.erase(it); break; } } } // if (!constants) // { constants = wxPropertyGrid::CreateConstantsArray(id); if ( name == "Animation" ) { // 第一个为空,表示设置这个元素的材质是用原mesh的材质 for ( unsigned short i = 0; i < mDObject->getSkeletonAnimationCount(); ++i ) { Ogre::Animation *anim = mDObject->getSkeletonAnimation(i); if ( anim ) { constants->Add(anim->getName().c_str()); } } } else if ( name == "EffectTemplateName" ) { WX::EffectManager::EffectTemplateIterator it = WX::EffectManager::getSingleton().getEffectTemplateIterator(); while ( it.hasMoreElements() ) { constants->Add(it.peekNextKey().c_str()); it.moveNext(); } } else if ( name == "AttachPoint" ) { for ( unsigned short i=0; i<mDObject->getNumBones(); ++i ) { constants->Add(mDObject->getBoneName(i).c_str()); } Ogre::StringVector locatorNames; mDObject->getLocatorNames(locatorNames); for ( size_t i=0; i<locatorNames.size(); ++i ) { constants->Add(locatorNames[i].c_str()); } } else if ( name == "Material" ) { typedef std::list<Ogre::String> MaterialFileNameList; MaterialFileNameList materialFileNameList; Ogre::FileInfoListPtr fileInfoList = Ogre::ResourceGroupManager::getSingleton().findResourceFileInfo( Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, "*.material"); for (Ogre::FileInfoList::const_iterator it = fileInfoList->begin(); it != fileInfoList->end(); ++it) { if ( it->archive->getName() == MATERIAL_PATH) { materialFileNameList.push_back(it->filename); } } Ogre::ResourceManager::ResourceMapIterator resourceMapIterator = Ogre::MaterialManager::getSingleton().getResourceIterator(); while ( resourceMapIterator.hasMoreElements() ) { Ogre::String matName = resourceMapIterator.peekNextValue()->getName(); for ( MaterialFileNameList::iterator i = materialFileNameList.begin(); i != materialFileNameList.end(); ++i ) { if ( *i == resourceMapIterator.peekNextValue()->getOrigin() ) { constants->Add(matName.c_str()); break; } } resourceMapIterator.moveNext(); } } else if ( name == "SoundName" ) { constants->Add("NULL"); //----------------------------------- //得到所有文件名 if (wxGetApp().funcEnumSoundFile) { int nIndex = 0; do { char szTemp[100]; int id; bool bHave = wxGetApp().funcEnumSoundFile(nIndex++, szTemp, 100, id); if(!bHave) break; constants->Add(szTemp); }while(true); } } registerConstants(constants); //} return constants; }
wxPGConstants * WXEffectEditDialog::PopulateConstants(const Ogre::String& type) { size_t id = reinterpret_cast<size_t>(&type); wxPGConstants* constants = wxPropertyGrid::GetConstantsArray(id); if (constants) { for (std::list<wxPGConstants*>::iterator it = mConstantList.begin(); it != mConstantList.end(); ++it) { if (constants == *it) { if (constants->UnRef()) delete constants; mConstantList.erase(it); break; } } } // if (!constants) // { constants = wxPropertyGrid::CreateConstantsArray(id); if ( type == "Material" ) { typedef std::list<Ogre::String> MaterialFileNameList; MaterialFileNameList materialFileNameList; Ogre::FileInfoListPtr fileInfoList = Ogre::ResourceGroupManager::getSingleton().findResourceFileInfo( Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, "*.material"); for (Ogre::FileInfoList::const_iterator it = fileInfoList->begin(); it != fileInfoList->end(); ++it) { if ( it->archive->getName() == EFFECT_PATH) { materialFileNameList.push_back(it->filename); } } // 第一个为空,表示设置这个元素的材质是用原mesh的材质 constants->Add("none"); Ogre::ResourceManager::ResourceMapIterator resourceMapIterator = Ogre::MaterialManager::getSingleton().getResourceIterator(); while ( resourceMapIterator.hasMoreElements() ) { Ogre::String matName = resourceMapIterator.peekNextValue()->getName(); for ( MaterialFileNameList::iterator i = materialFileNameList.begin(); i != materialFileNameList.end(); ++i ) { if ( *i == resourceMapIterator.peekNextValue()->getOrigin() ) { constants->Add(matName.c_str()); break; } } resourceMapIterator.moveNext(); } } else if ( type == "MeshName" ) { constants->Add("none"); Ogre::FileInfoListPtr fileInfoList = Ogre::ResourceGroupManager::getSingleton().findResourceFileInfo( Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, "*.mesh"); for (Ogre::FileInfoList::const_iterator it = fileInfoList->begin(); it != fileInfoList->end(); ++it) { if ( it->archive->getName() == EFFECT_PATH) { const Fairy::String& name = it->filename; constants->Add(name.c_str()); } } } else if ( type == "ParticleSystem" ) { Ogre::ParticleSystemManager::ParticleSystemTemplateIterator iterator = Ogre::ParticleSystemManager::getSingleton().getTemplateIterator(); while ( iterator.hasMoreElements() ) { // 获取到粒子系统的名称 Ogre::String parName = iterator.peekNextKey(); constants->Add(parName.c_str()); // 使iterator往后移 iterator.moveNext(); } } registerConstants(constants); // } return constants; }