void CAnimationEditorDlg::OnBnClickedAdddirection() { HTREEITEM item = m_AnimationTree.GetSelectedItem(); if(((CAnimation*)m_AnimationTree.GetItemData(item))->IsAngle()) item = m_AnimationTree.GetParentItem(item); if(item) { CAngleDlg dlg; dlg.DoModal(); CAnimation* anim = (CAnimation*)m_AnimationTree.GetItemData(item); map<float,int> CurrentAngles; for(list<CAnimation>::iterator a = anim->m_SubAnimations.begin(); a!= anim->m_SubAnimations.end();a ++) { if(a->IsAngle()) CurrentAngles[a->m_Angle] = 1; } for(vector<float>::iterator i = dlg.m_Angles.begin(); i!= dlg.m_Angles.end(); i++) { if(CurrentAngles.find(*i) == CurrentAngles.end() ) { anim->m_SubAnimations.push_back( CAnimation()); CAnimation& angle = anim->m_SubAnimations.back(); angle.m_IsAngle = true; angle.m_Angle = *i; angle.m_FixedID = m_pApplication->m_AnimationFixID++; CurrentAngles[*i] = 1; angle.m_pApp = anim->m_pApp; } } } UpdateAnimations(); }
void AnimatorBar::AddAngle() { HTREEITEM Item = curHTreeItem; if(((CAnimation*)animations.GetItemData(Item))->IsAngle()) Item = animations.GetParentItem(Item); CAnimation* pAngle; bool changed = false; if(Item) { CAngleDlg AddAngle; if (AddAngle.DoModal() != IDOK) return; CAnimation* pAnimation = (CAnimation*)animations.GetItemData(Item); map<float,int> CurrentAngles; for(list<CAnimation>::iterator a = pAnimation->m_SubAnimations.begin(); a!= pAnimation->m_SubAnimations.end(); a++) if(a->IsAngle()) CurrentAngles[a->m_Angle] = 1; for(vector<float>::iterator i = AddAngle.m_Angles.begin(); i!= AddAngle.m_Angles.end(); i++) { if(CurrentAngles.find(*i) == CurrentAngles.end()) { pAnimation->m_SubAnimations.push_back(CAnimation()); CAnimation& Angle = pAnimation->m_SubAnimations.back(); Angle.m_IsAngle = true; Angle.m_Angle = *i; Angle.m_FixedID = application->m_AnimationFixID++; CurrentAngles[*i] = 1; Angle.application = pAnimation->application; // Add a frame int ID = 0; ID = layout->AddImage(32, 32); Angle.m_Images.push_back(ID); Angle.m_FrameTimes.push_back(1.0); pAngle = &Angle; changed = true; } } } if (changed) { AnimationHasChanged(); UpdateAnimations(NULL, NULL, NULL, -2); // Select animation animations.SelectItem(pAngle->m_Tree); } }