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();
}
Example #2
0
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);
	}
}