本文整理汇总了C++中ogre::StringVector类的典型用法代码示例。如果您正苦于以下问题:C++ StringVector类的具体用法?C++ StringVector怎么用?C++ StringVector使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了StringVector类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _parseEffectFile
/** 解析*.effect文件 */
void VEffectManager::_parseEffectFile(Ogre::DataStreamPtr &stream)
{
Ogre::String line;
VEffect *effect = VNULL;
Ogre::StringVector vecparams;
while (!stream->eof())
{
line = stream->getLine();
++mParsingLineNumber;
if (!(line.empty() || line.substr(0, 2) == "//"))
{
// 只要不是空行或者注释
if (VNULL == effect)
{
// 一个新特效
vecparams = Ogre::StringUtil::split(line, "\t ");
if (vecparams[0] != "effect" || vecparams.size() != 2)
{
_logErrorInfo("Bad effect system name line", line, "VEffectManager::_parseEffectFile");
return;
}
// 创建空的effect
effect = _createEffectTemplate(vecparams[1]);
_skipToNextOpenBrace(stream);
}
else
{
if (line == "}")
{
// 完整的解析一个特效
effect = VNULL;
}
else if (line.substr(0, 7) == "element")
{
// 一个新的特效元素
vecparams = Ogre::StringUtil::split(line, "\t ");
if (vecparams.size() < 2)
{
_logErrorInfo("Bad effect system element line", line, "VEffectManager::_parseEffectFile");
return;
}
_skipToNextOpenBrace(stream);
// 解析特效元素的参数
_parseElement(vecparams[1], stream, effect);
}
else
{
// 解析特效自己的参数
_parseEffectAttrib(line, effect);
}
}
}
}
}
示例2: WeaponSelector
void
WeaponSelectorDialog::OnInitDialog(wxInitDialogEvent &e)
{
wxDialog::OnInitDialog(e);
wxSizer* sizer = WeaponSelector(this, true, true);
if (false == mInitDialog)
{
// 读取武器表
mWeaponData = new FairyConfig("../EditorConfigFiles/Weapon.cfg");
// 根据武器表建立武器树
mWeaponTree = wxDynamicCast(this->FindWindow(ID_TREECTRL_WEAPON), wxTreeCtrl);
mWeaponTree->Freeze();
mWeaponTree->DeleteAllItems();
wxTreeItemId rootId = mWeaponTree->AddRoot(_("Weapons"));
if (mWeaponData)
{
// 配置weapon tree
int sectionCount = mWeaponData->startGetSections();
for (int i=0; i<sectionCount; ++i)
{
const Ogre::String& sectionName = mWeaponData->getNextSection();
wxTreeItemId sectionId = mWeaponTree->AppendItem(rootId, sectionName.c_str());
Ogre::StringVector valueList =
mWeaponData->getList(sectionName, "Combo", ",");
for (size_t j=0; j<valueList.size(); ++j)
{
mWeaponTree->AppendItem(sectionId, valueList[j].c_str());
}
}
mWeaponTree->Thaw();
mWeaponTree->UnselectAll();
mWeaponTree->Expand( mWeaponTree->GetRootItem() );
}
// 显示特效列表
mWeaponEffectList = wxDynamicCast(this->FindWindow(ID_LISTBOX_WEAPON_EFFECT), wxListBox);
Fairy::EffectManager::EffectTemplateIterator it =
Fairy::EffectManager::getSingleton().getEffectTemplateIterator();
while ( it.hasMoreElements() )
{
mWeaponEffectList->AppendString(it.peekNextKey().c_str());
it.moveNext();
}
mColourButton = wxDynamicCast(this->FindWindow(ID_BUTTON_WEAPON_EFFECT_COLOUR), wxButton);
mColourText = wxDynamicCast(this->FindWindow(ID_TEXTCTRL_COLOUR_TEXT), wxTextCtrl);
mAlphaTextCtrl = wxDynamicCast(this->FindWindow(ID_TEXTCTRL_ALPHA), wxTextCtrl);
mInitDialog = true;
}
// mWeaponEffectList->Refresh();
unsigned char r, g, b;
FColourToIColour(mCurrentColour.r, mCurrentColour.g, mCurrentColour.b,
r, g, b);
mColourButton->SetBackgroundColour(wxColour(r,g,b));
setColourText();
setAlphaText();
}
示例3: assert
void
Terrain::loadResource(Ogre::Resource* resource)
{
const Ogre::String& name = resource->getName();
if (name.find("<Lightmap>") !=Ogre::String::npos)
{
Ogre::String::size_type left_parentheses = name.find_first_of('(');
Ogre::String::size_type right_parentheses = name.find_last_of(')');
if (left_parentheses ==Ogre::String::npos ||
right_parentheses ==Ogre::String::npos)
{
OGRE_EXCEPT(Ogre::Exception::ERR_INTERNAL_ERROR,
"Unorganised lightmap texture name '" + name + "'",
"Terrain::loadResource");
}
Ogre::StringVector vec = Ogre::StringUtil::split(
name.substr(left_parentheses + 1, right_parentheses - left_parentheses - 1), ",", 2);
if (vec.size() != 2)
{
OGRE_EXCEPT(Ogre::Exception::ERR_INTERNAL_ERROR,
"Unorganised lightmap texture name '" + name + "'",
"Terrain::loadResource");
}
int nPosX = Ogre::StringConverter::parseInt(vec[0]);
int nPosZ = Ogre::StringConverter::parseInt(vec[1]);
if (nPosX < 0 || nPosX >= mData->mNumTilePerX ||
nPosZ < 0 || nPosZ >= mData->mNumTilePerZ)
{
OGRE_EXCEPT(Ogre::Exception::ERR_INTERNAL_ERROR,
"Unorganised lightmap texture name '" + name + "'",
"Terrain::loadResource");
}
Ogre::uint uWidth, uHeight;
if (getLightmapQuality() == LMQ_LOW)
{
uWidth = mData->mTileSize * 2;
uHeight = mData->mTileSize * 2;
}
else
{
uWidth = mData->mTileSize * 8;
uHeight = mData->mTileSize * 8;
}
Ogre::Texture* pTexture = static_cast<Ogre::Texture*>(resource);
if (pTexture->getWidth() != uWidth || pTexture->getHeight() != uHeight)
{
pTexture->freeInternalResources();
pTexture->setWidth(uWidth);
pTexture->setHeight(uHeight);
}
pTexture->createInternalResources();
Ogre::HardwarePixelBufferSharedPtr bufferPtr = pTexture->getBuffer();
size_t l = nPosX * mData->mTileSize * 8;
size_t t = nPosZ * mData->mTileSize * 8;
size_t r = l + mData->mTileSize * 8;
size_t b = t + mData->mTileSize * 8;
if (r > mData->mLightmapImage->getWidth())
r = mData->mLightmapImage->getWidth();
if (b > mData->mLightmapImage->getHeight())
b = mData->mLightmapImage->getHeight();
bufferPtr->blitFromMemory(
mData->mLightmapImage->getPixelBox().getSubVolume(Ogre::Box(l, t, r, b)));
}
else
{
for (AtlasArray::const_iterator it = mAtlases.begin(); it != mAtlases.end(); ++it)
{
if (it->texture.get() == resource)
{
assert(!it->image.isNull());
it->texture->loadImage(*it->image);
break;
}
}
}
}
示例4: SearchCompare
size_t CLASS::SearchCompare(Ogre::String searchString, CacheEntry *ce)
{
if (searchString.find(":") == Ogre::String::npos)
{
// normal search
// the name
Ogre::String dname_lower = ce->dname;
Ogre::StringUtil::toLowerCase(dname_lower);
if (dname_lower.find(searchString) != Ogre::String::npos)
return dname_lower.find(searchString);
// the filename
Ogre::String fname_lower = ce->fname;
Ogre::StringUtil::toLowerCase(fname_lower);
if (fname_lower.find(searchString) != Ogre::String::npos)
return 100 + fname_lower.find(searchString);
// the description
Ogre::String desc = ce->description;
Ogre::StringUtil::toLowerCase(desc);
if (desc.find(searchString) != Ogre::String::npos)
return 200 + desc.find(searchString);
// the authors
if (!ce->authors.empty())
{
std::vector<AuthorInfo>::const_iterator it;
for (it = ce->authors.begin(); it != ce->authors.end(); it++)
{
// author name
Ogre::String aname = it->name;
Ogre::StringUtil::toLowerCase(aname);
if (aname.find(searchString) != Ogre::String::npos)
return 300 + aname.find(searchString);
// author email
Ogre::String aemail = it->email;
Ogre::StringUtil::toLowerCase(aemail);
if (aemail.find(searchString) != Ogre::String::npos)
return 400 + aemail.find(searchString);
}
}
return Ogre::String::npos;
}
else
{
Ogre::StringVector v = Ogre::StringUtil::split(searchString, ":");
if (v.size() < 2) return Ogre::String::npos; //invalid syntax
if (v[0] == "hash")
{
Ogre::String hash = ce->hash;
Ogre::StringUtil::toLowerCase(hash);
return hash.find(v[1]);
}
else if (v[0] == "guid")
{
Ogre::String guid = ce->guid;
Ogre::StringUtil::toLowerCase(guid);
return guid.find(v[1]);
}
else if (v[0] == "author")
{
// the authors
if (!ce->authors.empty())
{
std::vector<AuthorInfo>::const_iterator it;
for (it = ce->authors.begin(); it != ce->authors.end(); it++)
{
// author name
Ogre::String aname = it->name;
Ogre::StringUtil::toLowerCase(aname);
if (aname.find(v[1]) != Ogre::String::npos)
return aname.find(v[1]);
// author email
Ogre::String aemail = it->email;
Ogre::StringUtil::toLowerCase(aemail);
if (aemail.find(v[1]) != Ogre::String::npos)
return aemail.find(v[1]);
}
}
return Ogre::String::npos;
}
else if (v[0] == "wheels")
{
Ogre::String wheelsStr = TOUTFSTRING(ce->wheelcount) + "x" + TOUTFSTRING(ce->propwheelcount);
return wheelsStr.find(v[1]);
}
else if (v[0] == "file")
{
Ogre::String fn = ce->fname;
Ogre::StringUtil::toLowerCase(fn);
return fn.find(v[1]);
}
}
return Ogre::String::npos;
//.........这里部分代码省略.........
示例5: createFrameListener
//-------------------------------------------------------------------------------------
void BaseApplication::createFrameListener(void)
{
Ogre::LogManager::getSingletonPtr()->logMessage("*** Initializing OIS ***");
OIS::ParamList pl;
size_t windowHnd = 0;
std::ostringstream windowHndStr;
mWindow->getCustomAttribute("WINDOW", &windowHnd);
windowHndStr << windowHnd;
pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
mInputManager = OIS::InputManager::createInputSystem( pl );
mKeyboard = static_cast<OIS::Keyboard*>(mInputManager->createInputObject( OIS::OISKeyboard, true ));
mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject( OIS::OISMouse, true ));
mMouse->setEventCallback(this);
mKeyboard->setEventCallback(this);
//Set initial mouse clipping size
windowResized(mWindow);
//Register as a Window listener
Ogre::WindowEventUtilities::addWindowEventListener(mWindow, this);
mTrayMgr = new OgreBites::SdkTrayManager("InterfaceName", mWindow, mMouse, this);
//mTrayMgr->showFrameStats(OgreBites::TL_BOTTOMLEFT);
//mTrayMgr->showLogo(OgreBites::TL_BOTTOMRIGHT);
Button_All[0] = mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Start","Start",200);
Button_All[1] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"About","About",200);
Button_All[2] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Exit","Exit",200);
Button_All[3] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Back_toMain","Back",200);
Button_All[4] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Unlimit","Unlimit",200);
Button_All[5] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"TimeLimit","TimeLimit",200);
Button_All[6] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Collect","Collect",200);
Button_All[7] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Restart","Restart",200);
Button_All[8] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Exit_toMain","Exit",200);
Button_All[9] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Resume_Game","Resume Game",200);
Button_All[10] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"TimeLimit_Most","Collect Most",200);
Button_All[11] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"TimeLimit_Collect","Collect in time",200);
Button_All[12] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"TimeLimit_state_1","State1",200);
Button_All[13] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"TimeLimit_state_2","State2",200);
Button_All[14] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"TimeLimit_state_3","State3",200);
Button_All[15] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"TimeLimit_state_4","State4",200);
Button_All[16] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"TimeLimit_state_5","State5",200);
Button_All[17] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Collect_state_1","State1",200);
Button_All[18] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Collect_state_2","State2",200);
Button_All[19] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Collect_state_3","State3",200);
Button_All[20] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Collect_state_4","State4",200);
Button_All[21] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"Collect_state_5","State5",200);
Button_All[22] =mTrayMgr->createButton(OgreBites::TL_BOTTOMLEFT,"AI_type","AI type",200);
mTrayMgr->removeWidgetFromTray("Back_toMain");
mTrayMgr->removeWidgetFromTray("Unlimit");
mTrayMgr->removeWidgetFromTray("TimeLimit");
mTrayMgr->removeWidgetFromTray("Collect");
mTrayMgr->removeWidgetFromTray("Restart");
mTrayMgr->removeWidgetFromTray("Exit_toMain");
mTrayMgr->removeWidgetFromTray("Resume_Game");
mTrayMgr->removeWidgetFromTray("TimeLimit_Most");
mTrayMgr->removeWidgetFromTray("TimeLimit_Collect");
mTrayMgr->removeWidgetFromTray("TimeLimit_state_1");
mTrayMgr->removeWidgetFromTray("TimeLimit_state_2");
mTrayMgr->removeWidgetFromTray("TimeLimit_state_3");
mTrayMgr->removeWidgetFromTray("TimeLimit_state_4");
mTrayMgr->removeWidgetFromTray("TimeLimit_state_5");
mTrayMgr->removeWidgetFromTray("Collect_state_1");
mTrayMgr->removeWidgetFromTray("Collect_state_2");
mTrayMgr->removeWidgetFromTray("Collect_state_3");
mTrayMgr->removeWidgetFromTray("Collect_state_4");
mTrayMgr->removeWidgetFromTray("Collect_state_5");
mTrayMgr->removeWidgetFromTray("AI_type");
for(int i=3;i<23;i++){
Button_All[i]->hide();
}
About_Text = mTrayMgr->createTextBox(OgreBites::TL_TOPLEFT,"About_Textbox","About",250,208);
Time_Show = mTrayMgr->createLabel(OgreBites::TL_TOPLEFT,"Time_Show_Label","Time",240);
Time_Value_Show = mTrayMgr->createLabel(OgreBites::TL_TOPLEFT,"Time_Value_Label","",240);
Score_Show = mTrayMgr->createLabel(OgreBites::TL_TOPLEFT,"Score_Show_Label","Score",240);
Score_Value_Show = mTrayMgr->createLabel(OgreBites::TL_TOPLEFT,"Score_Value_Label","",240);
mTrayMgr->removeWidgetFromTray("About_Textbox");
mTrayMgr->removeWidgetFromTray("Time_Show_Label");
mTrayMgr->removeWidgetFromTray("Time_Value_Label");
mTrayMgr->removeWidgetFromTray("Score_Show_Label");
mTrayMgr->removeWidgetFromTray("Score_Value_Label");
About_Text->hide();
Time_Show->hide();
Time_Value_Show->hide();
Score_Show->hide();
Score_Value_Show->hide();
//mTrayMgr->hideCursor();
// create a params panel for displaying sample details
Ogre::StringVector items;
items.push_back("cam.pX");
items.push_back("cam.pY");
items.push_back("cam.pZ");
//.........这里部分代码省略.........
示例6: wxBoxSizer
void
SaveAsSkillDialog::OnInitDialog(wxInitDialogEvent &e)
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* bSizer13;
bSizer13 = new wxBoxSizer( wxVERTICAL );
wxFlexGridSizer* fgSizer4;
fgSizer4 = new wxFlexGridSizer( 2, 2, 0, 0 );
fgSizer4->SetFlexibleDirection( wxBOTH );
fgSizer4->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxStaticText* staticText1 = new wxStaticText( this, wxID_ANY, wxT("脚本文件:"), wxDefaultPosition, wxSize( 60,-1 ), 0 );
fgSizer4->Add( staticText1, 0, wxALL, 5 );
mComboBox = new wxComboBox( this, wxID_ANY,wxEmptyString, wxDefaultPosition, wxSize( 200,-1 ), 0, NULL, 0 );
fgSizer4->Add( mComboBox, 0, wxALL, 5 );
wxStaticText* staticText2 = new wxStaticText( this, wxID_ANY, wxT("模板名称:"), wxDefaultPosition, wxDefaultSize, 0 );
staticText2->SetMinSize( wxSize( 60,-1 ) );
fgSizer4->Add( staticText2, 0, wxALL, 5 );
mTextCtrl = new wxTextCtrl( this, wxID_ANY,wxT(""), wxDefaultPosition, wxSize( 200,-1 ), 0 );
fgSizer4->Add( mTextCtrl, 0, wxALL, 5 );
bSizer13->Add( fgSizer4, 1, wxEXPAND, 5 );
wxStdDialogButtonSizer* m_sdbSizer5 = new wxStdDialogButtonSizer();
wxButton* m_sdbSizer5OK = new wxButton( this, wxID_OK );
m_sdbSizer5->AddButton( m_sdbSizer5OK );
wxButton* m_sdbSizer5Cancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer5->AddButton( m_sdbSizer5Cancel );
m_sdbSizer5->Realize();
bSizer13->Add( m_sdbSizer5, 1, wxEXPAND, 5 );
this->SetSizer( bSizer13 );
this->Layout();
Ogre::StringVector loadedScripts;
Fairy::EffectManager::getSingleton().getLoadedSkillScripts( loadedScripts );
for ( size_t i=0; i<loadedScripts.size(); ++i )
{
if (loadedScripts[i] != "EmptySkill.skill")
mComboBox->AppendString(loadedScripts[i]);
}
// 若曾保存过,则显示上次保存的文件名
SkillObjectEditor* pSkillObjectEditor = static_cast<SkillObjectEditor*>(mParent);
if (!pSkillObjectEditor->getSaveFileName().empty())
{
Ogre::String fileName = Fairy::EffectManager::getSingleton().getFileNameBySkillTemplateName(mSkill->getSkillName());
if ( fileName == "EmptySkill.skill" )
mComboBox->SetSelection(0);
else
mComboBox->SetValue(fileName);
}
}
示例7: OnSaveAsSkillObject
void SkillObjectEditor::OnSaveAsSkillObject(wxCommandEvent &e)
{
if (NULL == mSkill)
{
wxMessageBox("您还没有创建技能,请创建后重试!","提示");
return;
}
SaveAsSkillDialog *dlg = new SaveAsSkillDialog(this, wxID_ANY,
_("另存技能"), mSkill);
bool ok = (dlg->ShowModal() == wxID_OK);
if(ok)
{
Ogre::StringVector templates;
Ogre::String fileName = dlg->mComboBox->GetValue().c_str();
Ogre::String templateName = dlg->mTextCtrl->GetValue().c_str();
if(templateName.length() == 0)
{
dlg->Destroy();
return;
}
//判断文件名
Ogre::StringVector strings = Ogre::StringUtil::split( fileName, "." );
if (strings.size() != 2 || strings[1] != "skill")
{
fileName.append(".skill");
}
Fairy::EffectManager::getSingleton().getSkillTemplatesFromScriptFile(fileName, templates);
std::ofstream outFile;
Ogre::String pathFileName = EFFECT_PATH+fileName;
outFile.open ( pathFileName.c_str(), std::ios::out | std::ios::trunc ); // append to file
if (!outFile.is_open())
{
dlg->Destroy();
return;
}
bool newTemplate = true;
// 把所有的模板都写入该文件中
for ( size_t i=0; i<templates.size(); ++i )
{
// if (templates[i] != mEffect->getTemplateName())
///{
Fairy::Skill *skill = Fairy::EffectManager::getSingleton().getSkill(templates[i]);
assert (skill);
if (skill->getSkillName() == dlg->mTextCtrl->GetValue().c_str())
{
saveSkill(mSkill, dlg->mTextCtrl->GetValue().c_str(), outFile );
newTemplate = false;
}
else
saveSkill(skill, skill->getSkillName(), outFile);
}
if (newTemplate)
{
// 刷新EffectManager中的模板内容
Fairy::Skill *skill = Fairy::EffectManager::getSingleton().getSkill(templateName);
if (NULL == skill)
{
skill = Fairy::EffectManager::getSingleton().createSkillTemplate(templateName);
}
*skill = *mSkill;
saveSkill(skill, templateName, outFile );
Fairy::EffectManager::getSingleton().addToSkillTemplateScriptFileMap(templateName, fileName);
InitSkillEditor(skill, templateName);
}
outFile.close();
}
wxBusyInfo* busyInfo = new wxBusyInfo(wxT("更新技能数据 ..."), this);
m_Frame->GetSkillSelector()->Reload();
delete busyInfo;
dlg->Destroy();
}
示例8: onKeyPressed
void OgreConsole::onKeyPressed(const OIS::KeyEvent &arg)
{
if(!mIsVisible)
return;
if (arg.key == OIS::KC_RETURN || arg.key == OIS::KC_NUMPADENTER)
{
print("%3> " + prompt + "%R");
//split the parameter list
Ogre::StringVector params = Ogre::StringUtil::split(prompt, " ");
if (params.size())
{
std::map<Ogre::String, OgreConsoleFunctionPtr>::iterator i;
for(i=commands.begin();i!=commands.end();i++){
if((*i).first==params[0]){
if((*i).second)
(*i).second(params);
break;
}
}
prompt.clear();
mUpdateConsole = true;
mUpdatePrompt = true;
}
}
else if (arg.key == OIS::KC_BACK)
{
if (prompt.size())
{
prompt.erase(prompt.end() - 1); //=prompt.substr(0,prompt.length()-1);
mUpdatePrompt = true;
}
}
else if (arg.key == OIS::KC_PGUP)
{
if(mStartline>0)
mStartline--;
mUpdateConsole = true;
}
else if (arg.key == OIS::KC_PGDOWN)
{
if(mStartline<lines.size())
mStartline++;
mUpdateConsole = true;
}
else
{
for(unsigned int c=0;c<sizeof(legalchars);c++){
if(legalchars[c]==arg.text){
prompt+=arg.text;
break;
}
}
mUpdatePrompt = true;
}
}
示例9: _onLoad
//-----------------------------------------------------------------------------------------
void CPGInstanceManager::_onLoad()
{
Ogre::String filename;
if(mTempModified->get())
{
if(mTempFileName.empty())
mTempFileName = OgitorsUtils::QualifyPath(mOgitorsRoot->GetProjectOptions()->ProjectDir + "/Temp/tmp" + Ogre::StringConverter::toString(mObjectID->get()) + ".instance");
filename = mTempFileName;
}
else
{
Ogre::String name = mName->get();
std::replace(name.begin(), name.end(), '<', ' ');
std::replace(name.begin(), name.end(), '>', ' ');
std::replace(name.begin(), name.end(), '#', ' ');
name = Ogre::StringConverter::toString(mObjectID->get()) + "_" + name;
filename = OgitorsUtils::QualifyPath(mOgitorsRoot->GetProjectOptions()->ProjectDir + "/PGInstances/" + name + ".instance");
}
std::ifstream stream(filename.c_str());
if(!stream.is_open())
return;
if(!mTempModified->get())
mLastFileName = filename;
Ogre::StringVector list;
char res[128];
while(!stream.eof())
{
stream.getline(res, 128);
Ogre::String resStr(res);
OgitorsUtils::ParseStringVector(resStr, list);
if(list.size() == 3)
{
PGInstanceInfo info;
info.pos = Ogre::StringConverter::parseVector3(list[0]);
info.scale = Ogre::StringConverter::parseReal(list[1]);
info.yaw = Ogre::StringConverter::parseReal(list[2]);
mInstanceList[mNextInstanceIndex++] = info;
}
else if(list.size() == 4)
{
PGInstanceInfo info;
int index = Ogre::StringConverter::parseInt(list[0]);
info.pos = Ogre::StringConverter::parseVector3(list[1]);
info.scale = Ogre::StringConverter::parseReal(list[2]);
info.yaw = Ogre::StringConverter::parseReal(list[3]);
info.instance = 0;
mInstanceList[index] = info;
if(index >= mNextInstanceIndex)
mNextInstanceIndex = index + 1;
}
}
stream.close();
}
示例10: createFrameListener
void TutorialApplication::createFrameListener(void) {
BaseApplication::createFrameListener();
// create a params panel for displaying sample details
Ogre::StringVector items;
// items.push_back("Filtering");
// items.push_back("Poly Mode");
mStatusPanel = mTrayMgr->createParamsPanel(OgreBites::TL_BOTTOMRIGHT, "Params", 300, items);
OgreBites::Slider* slider = NULL;
mTrayMgr->createButton(OgreBites::TL_BOTTOMRIGHT, "Reset pose", "Reset pose");
mTrayMgr->createButton(OgreBites::TL_BOTTOMRIGHT, "Reload controller", "Reload controller");
mTrayMgr->createButton(OgreBites::TL_BOTTOMRIGHT, "Go to pose", "Go to pose");
// animations control
slider = mTrayMgr->createLongSlider(OgreBites::TL_TOPLEFT, "Gravity X", "Gravity X", 400, 150, 50, -9.8, 9.8, 149 );
slider->setValue(0);
slider = mTrayMgr->createLongSlider(OgreBites::TL_TOPLEFT, "Gravity Y", "Gravity Y", 400, 150, 50, -9.8, 9.8, 149 );
slider->setValue(0.0f);
slider = mTrayMgr->createLongSlider(OgreBites::TL_TOPLEFT, "Gravity Z", "Gravity Z", 400, 150, 50, -9.8, 9.8, 149 );
slider->setValue(0.0f);
slider = mTrayMgr->createLongSlider(OgreBites::TL_TOPLEFT, "Time multiplier", "Time multiplier", 400, 150, 50, 0, 1, 1000 );
slider->setValue(DEFAULT_TIME_MULTIPLIER);
slider = mTrayMgr->createLongSlider(OgreBites::TL_TOPLEFT, "Animation speed", "Animation speed", 400, 150, 50, 0, 2, 1000 );
slider->setValue(DEFAULT_ANIMATION_SPEED);
// animation selector
int defaultAnimationIndex = 0;
Ogre::SkeletonInstance* skel = mFigureEnt->getSkeleton();
Ogre::StringVector animationNames;
animationNames.push_back("<none>");
if ( skel ) {
std::cout << "got skeleton" << std::endl;
for ( int i=0; i<skel->getNumAnimations(); i++ ) {
std::string name = skel->getAnimation(i)->getName();
std::cout << " animation: " << name << std::endl;
if ( /*i<5 || name == "WalkNew"*/true )
{
animationNames.push_back(name);
if ( name == DEFAULT_ANIMATION ) {
defaultAnimationIndex = i;
}
}
}
//mFigureEnt->setDisplaySkeleton(true);
} else {
std::cout << "no skeleton" << std::endl;
}
mAnimationSelectMenu = mTrayMgr->createThickSelectMenu( OgreBites::TL_TOPLEFT, "Animation", "Animation", 400, animationNames.size());
if ( animationNames.size() ) {
mAnimationSelectMenu->setItems(animationNames);
mAnimationSelectMenu->selectItem(defaultAnimationIndex);
}
static const int debugDrawStyleCount = 8;
OgreBites::SelectMenu* select = mTrayMgr->createThickSelectMenu( OgreBites::TL_BOTTOMRIGHT, "Debug draw", "Debug draw", 400, debugDrawStyleCount );
Ogre::StringVector debugDrawStates;
const char* debugDrawStateNames[debugDrawStyleCount] = { "None", "Nodes", "Links", "Faces", "FaceAnchors", "Tetras", "TetraForces", "BadTetras" };
for ( int i=0; i<debugDrawStyleCount; i++ ) {
debugDrawStates.push_back(debugDrawStateNames[i]);
}
select->setItems(debugDrawStates);
select->selectItem(0);
showControls(false);
}
示例11: UpdateControls
void CLASS::UpdateControls()
{
int valuecounter = 0; // Going to be usefull for selections
//Lang (Still not done)
if (!IsLoaded)
{
m_lang->addItem("English (U.S.)");
}
m_lang->setIndexSelected(0); //TODO
if (!IsLoaded)
{
m_gearbox_mode->addItem("Automatic shift");
m_gearbox_mode->addItem("Manual shift - Auto clutch");
m_gearbox_mode->addItem("Fully Manual: sequential shift");
m_gearbox_mode->addItem("Fully Manual: stick shift");
m_gearbox_mode->addItem("Fully Manual: stick shift with ranges");
}
//Gearbox
Ogre::String gearbox_mode = GameSettingsMap["GearboxMode"];
if (gearbox_mode == "Manual shift - Auto clutch")
m_gearbox_mode->setIndexSelected(1);
else if (gearbox_mode == "Fully Manual: sequential shift")
m_gearbox_mode->setIndexSelected(2);
else if (gearbox_mode == "Fully Manual: stick shift")
m_gearbox_mode->setIndexSelected(3);
else if (gearbox_mode == "Fully Manual: stick shift with ranges")
m_gearbox_mode->setIndexSelected(4);
else
m_gearbox_mode->setIndexSelected(0);
Ogre::RenderSystem* rs = Ogre::Root::getSingleton().getRenderSystem();
// add all rendersystems to the list
if (m_render_sys->getItemCount() == 0)
{
const Ogre::RenderSystemList list = Application::GetOgreSubsystem()->GetOgreRoot()->getAvailableRenderers();
int selection = 0;
for (Ogre::RenderSystemList::const_iterator it = list.begin(); it != list.end(); it++, valuecounter++)
{
if (rs && rs->getName() == (*it)->getName())
{
ExOgreSettingsMap["Render System"] = rs->getName();
selection = valuecounter;
}
else if (!rs) {
LOG("Error: No Ogre Render System found");
}
if (!IsLoaded)
{
m_render_sys->addItem(Ogre::String((*it)->getName()));
}
}
m_render_sys->setIndexSelected(selection);
}
Ogre::ConfigFile cfg;
cfg.load(SSETTING("ogre.cfg", "ogre.cfg"));
//Few GameSettingsMap
Ogre::String bFullScreen = cfg.getSetting("Full Screen", rs->getName());
if (bFullScreen == "Yes")
{
ExOgreSettingsMap["Full Screen"] = "Yes";
m_fullscreen->setStateCheck(true);
}
else
{
ExOgreSettingsMap["Full Screen"] = "No";
m_fullscreen->setStateCheck(false);
}
Ogre::String bVsync = cfg.getSetting("VSync", rs->getName());
if (bVsync == "Yes")
{
ExOgreSettingsMap["VSync"] = "Yes";
m_vsync->setStateCheck(true);
}
else
{
ExOgreSettingsMap["VSync"] = "No";
m_vsync->setStateCheck(false);
}
// store available rendering devices and available resolutions
Ogre::ConfigOptionMap& CurrentRendererOptions = rs->getConfigOptions();
Ogre::ConfigOptionMap::iterator configItr = CurrentRendererOptions.begin();
Ogre::StringVector mFoundResolutions;
Ogre::StringVector mFoundFSAA;
while (configItr != CurrentRendererOptions.end())
{
if ((configItr)->first == "Video Mode")
{
// Store Available Resolutions
mFoundResolutions = ((configItr)->second.possibleValues);
}
if ((configItr)->first == "FSAA")
//.........这里部分代码省略.........
示例12: _setEntityMaterial
VBOOL VLogicModel::_setEntityMaterial(const VString &entityName, const VString &matName)
{
if (matName.empty())
{
return VTRUE;
}
else
{
VEntityMap::iterator itr = mEntities.find(entityName);
if (itr == mEntities.end())
{
Ogre::LogManager::getSingleton().logMessage( "Logic Model Entity with name '" + entityName + "' dosen't exists! " +
"LogicModel::_setEntityMaterial " + mName );
return VFALSE;
}
VEntityValue &entValue = itr->second;
Ogre::Entity *entity = entValue.mEntity;
assert(entity);
if (matName.find(";") != VString::npos)
{
Ogre::StringVector matNames = Ogre::StringUtil::split(matName, ";");
assert(matName.size() > 1);
for (VUINT32 i = 0; i < entity->getNumSubEntities(); ++i)
{
Ogre::SubEntity *subEntity = entity->getSubEntity(i);
assert(subEntity);
VString subMatName;
if (i < matNames.size())
{
subMatName = matNames[i];
}
else
{
subMatName = matNames[0];
}
const Ogre::MaterialPtr subMat = Ogre::MaterialManager::getSingleton().getByName(subMatName);
if (!subMat.isNull())
{
subEntity->setMaterialName(subMatName);
}
}
}
else
{
const Ogre::MaterialPtr entityMat = Ogre::MaterialManager::getSingleton().getByName(matName);
if (!entityMat.isNull())
{
entity->setMaterialName(matName);
}
}
}
return VTRUE;
}
示例13: OnSaveAsButtonDown
void WXEffectEditDialog::OnSaveAsButtonDown(wxCommandEvent &e)
{
SaveAsEffectDialog *dlg = new SaveAsEffectDialog(this, wxID_ANY,
_("保存特效"), mEffect);
bool ok = (dlg->ShowModal() == wxID_OK);
if(ok)
{
// bool append = true;
// 如果模板名称不一样了,说明是要存成一个新的模板
/*if ( dlg->mTextCtrl->GetValue().c_str() == mEffect->getTemplateName() )
{
append = false;
}*/
Ogre::StringVector templates;
const Ogre::String fileName = dlg->mComboBox->GetValue().c_str();
const Ogre::String templateName = dlg->mTextCtrl->GetValue().c_str();
Ogre::StringVector strings = Ogre::StringUtil::split( fileName, "." );
if ( (strings.size() != 2) || (strings[1] != "effect") )
{
wxMessageBox ( _("The Script File Name Is Wrong!") );
return;
}
Fairy::EffectManager::getSingleton().getTemplatesFromScriptFile(fileName, templates);
std::ofstream outFile;
Ogre::String pathFileName = EFFECT_PATH+fileName;
outFile.open ( pathFileName.c_str(), std::ios::out | std::ios::trunc ); // append to file
if (!outFile.is_open())
{
return;
}
bool newTemplate = true;
// 把所有的模板都写入该文件中
for ( size_t i=0; i<templates.size(); ++i )
{
// if (templates[i] != mEffect->getTemplateName())
///{
Fairy::Effect *effect = Fairy::EffectManager::getSingleton().getTemplate(templates[i]);
assert (effect);
if (effect->getTemplateName() == dlg->mTextCtrl->GetValue().c_str())
{
saveEffect(mEffect, dlg->mTextCtrl->GetValue().c_str(), outFile );
*effect = *mEffect;
newTemplate = false;
}
else
saveEffect(effect, effect->getTemplateName(), outFile);
}
if (newTemplate)
{
saveEffect(mEffect, templateName, outFile );
mEffect->setTemplateName(templateName);
// 刷新EffectManager中的模板内容
Fairy::Effect *effect = Fairy::EffectManager::getSingleton().createEffectTemplate(mEffect->getTemplateName());
*effect = *mEffect;
Fairy::EffectManager::getSingleton().addToEffectTemplateScriptFileMap(templateName, fileName);
}
outFile.close();
}
dlg->Destroy();
}
示例14: _parseSkillFile
/** 解析*.skill文件 */
void VEffectManager::_parseSkillFile(Ogre::DataStreamPtr &stream)
{
Ogre::String line;
VSkill *skill = VNULL;
Ogre::StringVector vecparams;
while (!stream->eof())
{
line = stream->getLine();
++mParsingLineNumber;
if (!(line.empty() || line.substr(0, 2) == "//"))
{
if (VNULL == skill)
{
vecparams = Ogre::StringUtil::split(line, "\t ");
if (vecparams[0] != "skill" || vecparams.size() != 2)
{
_logErrorInfo("Wrong skill name line", line, "EffectManager::parseSkillFile");
continue;
}
// 创建了一个空的effect
skill = _createSkillTemplate(vecparams[1]);
_skipToNextOpenBrace(stream);
}
else
{
if (line == "}")
{
// 解析一个完整的技能
skill = VNULL;
}
else if (line == "AnimEffect")
{
_skipToNextOpenBrace(stream);
_parseAnimEffectInfo(stream, skill);
}
else if (line == "Ribbon")
{
_skipToNextOpenBrace(stream);
_parseAnimRibbon(stream, skill);
}
else if (line == "SceneLight")
{
_skipToNextOpenBrace(stream);
_parseAnimSceneLight(stream, skill);
}
else if (line == "Sound")
{
_skipToNextOpenBrace(stream);
_parseAnimSound(stream, skill);
}
else
{
// 解析技能属性
_parseSkillAttrib(line, skill);
}
}
}
}
}
示例15: compileModule
//----------------------------------------------------------------------------
Ogre::StringVector AngelScriptInterpreter::compileModule(std::string §ion, std::string &file)
{
Ogre::StringVector ret;
int r = mBuilder->StartNewModule(mEngine, section.c_str());
if( r < 0 )
{
// If the code fails here it is usually because there
// is no more memory to allocate the module
return ret;
}
if(file.substr(0,5) == "proj:")
{
file.erase(0,5);
OFS::OFSHANDLE fHandle;
OFS::OfsPtr& ofsFile = OgitorsRoot::getSingletonPtr()->GetProjectFile();
if(ofsFile->openFile(fHandle, file.c_str()) == OFS::OFS_OK)
{
char *contents;
OFS::ofs64 file_size = 0;
ofsFile->getFileSize(fHandle, file_size);
if(file_size > 0)
{
contents = new char[(unsigned int)file_size + 1];
ofsFile->read(fHandle, contents, (unsigned int)file_size);
contents[file_size] = 0;
r = mBuilder->AddSectionFromMemory(section.c_str(), contents);
delete [] contents;
}
else
r = -1;
ofsFile->closeFile(fHandle);
}
else
r = -1;
}
else
r = mBuilder->AddSectionFromFile(file.c_str());
if( r < 0 )
{
// The builder wasn't able to load the file. Maybe the file
// has been removed, or the wrong name was given, or some
// preprocessing commands are incorrectly written.
ret.push_back("The script file can not be found.");
return ret;
}
int errpos;
{
OGRE_LOCK_AUTO_MUTEX;
errpos = mBuffer.size();
}
r = mBuilder->BuildModule();
if( r < 0 )
{
// An error occurred. Instruct the script writer to fix the
// compilation errors that were listed in the output stream.
ret.push_back("Please correct the errors in the script and try again.");
ret.push_back("Following errors found in script:");
OGRE_LOCK_AUTO_MUTEX;
for(unsigned int i = errpos;i < mBuffer.size();i++)
{
char buf[1000];
sprintf(buf,"Row: %d, Col: %d :: %s", mBuffer[i].mRow, mBuffer[i].mCol, mBuffer[i].mMessage.c_str());
ret.push_back(Ogre::String(buf));
}
return ret;
}
return ret;
}