void SkillObjectTree::AddSkillToTree(Fairy::Skill *pSkill) { // 更新模板 Fairy::Skill *skill = Fairy::EffectManager::getSingleton().getSkill(pSkill->getSkillName()); skill = pSkill; int iSkillImage = SkillObjectTree::TreeCtrlIcon_Skill; wxTreeItemId SkillRootId = AddRoot(skill->getSkillName(), iSkillImage, iSkillImage, new SkillTreeItemData(wxT("Skill root item"),skill->getSkillName(),skill)); int iPorpertyImage = SkillObjectTree::TreeCtrlIcon_SkilltProperty; wxTreeItemId BasicSettingId= AppendItem(SkillRootId,wxT("BasicSetting"), iPorpertyImage, iPorpertyImage, new SkillTreeItemData(wxT("Skill BasicSetting"),wxT("Skill BasicSetting"),pSkill)); if ( BasicSettingId.IsOk() ) { const Ogre::ParameterList ¶List = pSkill->getParameters(); for ( size_t paraCount=0; paraCount < paraList.size(); ++paraCount ) { Ogre::String name = paraList[paraCount].name; Ogre::String value = pSkill->getParameter(paraList[paraCount].name); wxTreeItemId itemId =AppendItem( BasicSettingId,(name + ":" + value).c_str(),iPorpertyImage,iPorpertyImage, new SkillTreeItemData(wxT("Skill property item"),name,skill)); } } int iAnimEfectImage = SkillObjectTree::TreeCtrlIcon_AnimEffect; int iCameraShakeImage = SkillObjectTree::TreeCtrlIcon_CameraShake; int iRibbinImage = SkillObjectTree::TreeCtrlIcon_Ribbon; int iSoundImage = SkillObjectTree::TreeCtrlIcon_Sound; int iSceneLightImage = SkillObjectTree::TreeCtrlIcon_SceneLight; int iBulletFlowImage = SkillObjectTree::TreeCtrlIcon_BulletFlow; // 设置effect属性 for ( unsigned short i=0; i < skill->getNumAnimationEffectInfos(); ++i ) { Fairy::AnimationEffectInfo *effectInfo = skill->getAnimationEffectInfo(i); assert (effectInfo); Ogre::String effectIndexStr = "Effect Info " + Ogre::StringConverter::toString(i); wxTreeItemId AnimEffectId= AppendItem(SkillRootId,effectIndexStr.c_str(), iAnimEfectImage, iAnimEfectImage, new SkillTreeItemData(wxT("Skill Element"),wxT("AnimEffect"),effectInfo)); if ( AnimEffectId.IsOk() ) { const Ogre::ParameterList ¶List = effectInfo->getParameters(); for ( size_t paraCount=0; paraCount < paraList.size(); ++paraCount ) { Ogre::String name = paraList[paraCount].name; Ogre::String value = effectInfo->getParameter(paraList[paraCount].name); wxTreeItemId itemId =AppendItem( AnimEffectId,(name + ":" + value).c_str(),iPorpertyImage,iPorpertyImage, new SkillTreeItemData(wxT("Skill Element item"),name,effectInfo)); } } } for ( unsigned short i=0; i < skill->getNumAnimationCameraShake(); ++i ) { Fairy::AnimationCameraShake *cameraShake = skill->getAnimationCameraShake(i); assert (cameraShake); Ogre::String cameraShakeIndexStr = "CameraShake " + Ogre::StringConverter::toString(i); wxTreeItemId CameraShakeId= AppendItem(SkillRootId,cameraShakeIndexStr.c_str(), iCameraShakeImage, iCameraShakeImage, new SkillTreeItemData(wxT("Skill Element"),wxT("CameraShake"),cameraShake)); if ( CameraShakeId.IsOk() ) { const Ogre::ParameterList ¶List = cameraShake->getParameters(); for ( size_t paraCount=0; paraCount < paraList.size(); ++paraCount ) { Ogre::String name = paraList[paraCount].name; Ogre::String value = cameraShake->getParameter(paraList[paraCount].name); wxTreeItemId itemId =AppendItem( CameraShakeId,(name + ":" + value).c_str(),iPorpertyImage,iPorpertyImage, new SkillTreeItemData(wxT("Skill Element item"),name,cameraShake)); } } } for ( unsigned short i=0; i < skill->getNumAnimationRibbons(); ++i ) { Fairy::AnimationRibbon *ribbon = skill->getAnimationRibbon(i); assert (ribbon); Ogre::String ribbonIndexStr = "Ribbon " + Ogre::StringConverter::toString(i); wxTreeItemId RibbonId= AppendItem(SkillRootId,ribbonIndexStr.c_str(), iRibbinImage, iRibbinImage, new SkillTreeItemData(wxT("Skill Element"),wxT("Ribbon"),ribbon)); if ( RibbonId.IsOk() ) { const Ogre::ParameterList ¶List = ribbon->getParameters(); for ( size_t paraCount=0; paraCount < paraList.size(); ++paraCount ) { Ogre::String name = paraList[paraCount].name; Ogre::String value = ribbon->getParameter(paraList[paraCount].name); wxTreeItemId itemId =AppendItem( RibbonId,(name + ":" + value).c_str(),iPorpertyImage,iPorpertyImage, new SkillTreeItemData(wxT("Skill Element item"),name,ribbon)); } } } for ( unsigned short i=0; i < skill->getNumAnimationSounds(); ++i ) { Fairy::AnimationSound *sound = skill->getAnimationSound(i); assert (sound); Ogre::String soundIndexStr = "Sound " + Ogre::StringConverter::toString(i); wxTreeItemId SoundId= AppendItem(SkillRootId,soundIndexStr.c_str(), iSoundImage, iSoundImage, new SkillTreeItemData(wxT("Skill Element"),wxT("Sound"),sound)); if ( SoundId.IsOk() ) { const Ogre::ParameterList ¶List = sound->getParameters(); for ( size_t paraCount=0; paraCount < paraList.size(); ++paraCount ) { Ogre::String name = paraList[paraCount].name; Ogre::String value = sound->getParameter(paraList[paraCount].name); wxTreeItemId itemId =AppendItem( SoundId,(name + ":" + value).c_str(),iPorpertyImage,iPorpertyImage, new SkillTreeItemData(wxT("Skill Element item"),name,sound)); } } } for ( unsigned short i=0; i < skill->getNumAnimationSceneLightInfos(); ++i ) { Fairy::AnimationSceneLightInfo *light = skill->getAnimationSceneLightInfo(i); assert (light); Ogre::String lightIndexStr = "SceneLight " + Ogre::StringConverter::toString(i); wxTreeItemId LightId= AppendItem(SkillRootId,lightIndexStr.c_str(), iSceneLightImage, iSceneLightImage, new SkillTreeItemData(wxT("Skill Element"),wxT("SceneLight"),light)); if ( LightId.IsOk() ) { const Ogre::ParameterList ¶List = light->getParameters(); for ( size_t paraCount=0; paraCount < paraList.size(); ++paraCount ) { Ogre::String name = paraList[paraCount].name; Ogre::String value = light->getParameter(paraList[paraCount].name); wxTreeItemId itemId =AppendItem( LightId,(name + ":" + value).c_str(),iPorpertyImage,iPorpertyImage, new SkillTreeItemData(wxT("Skill Element item"),name,light)); } } } for ( unsigned short i=0; i < skill->getNumAnimationBulletFlows(); ++i ) { Fairy::AnimationBulletFlow *bulletFlow = skill->getAnimationBulletFlow(i); assert (bulletFlow); Ogre::String bulletFlowIndexStr = "BulletFlow " + Ogre::StringConverter::toString(i); wxTreeItemId BulletFlowId= AppendItem(SkillRootId,bulletFlowIndexStr.c_str(), iBulletFlowImage, iBulletFlowImage, new SkillTreeItemData(wxT("Skill Element"),wxT("BulletFlow"),bulletFlow)); if ( BulletFlowId.IsOk() ) { const Ogre::ParameterList ¶List = bulletFlow->getParameters(); for ( size_t paraCount=0; paraCount < paraList.size(); ++paraCount ) { Ogre::String name = paraList[paraCount].name; Ogre::String value = bulletFlow->getParameter(paraList[paraCount].name); wxTreeItemId itemId =AppendItem( BulletFlowId,(name + ":" + value).c_str(),iPorpertyImage,iPorpertyImage, new SkillTreeItemData(wxT("Skill Element item"),name,bulletFlow)); } } } Expand(SkillRootId); }