private void btnCopyAll_Click(object sender, EventArgs e) { _copyAllState.Clear(); if (CurrentFrame == 0) { foreach (MDL0MaterialNode mat in TargetModel.FindChildrenByType("Materials", ResourceType.MDL0Material)) { foreach (MDL0MaterialRefNode mr in mat.Children) { _copyAllState[mr.Parent.Name + mr.Index] = (AnimationFrame)mr._bindState; } } } else { foreach (SRT0EntryNode entry in SelectedAnimation.Children) { foreach (SRT0TextureNode tex in entry.Children) { _copyAllState[tex.Parent.Name + tex.TextureIndex] = tex.GetAnimFrame(CurrentFrame - 1); } } } }
private void btnPasteAll_Click(object sender, EventArgs e) { if (_copyAllState.Count == 0) { return; } if (CurrentFrame == 0) { foreach (MDL0MaterialNode mat in TargetModel.FindChildrenByType("Materials", ResourceType.MDL0Material)) { foreach (MDL0MaterialRefNode mr in mat.Children) { if (_copyAllState.ContainsKey(mr.Parent.Name + mr.Index)) { if (AllTrans.Checked) { mr._bindState._translate = _copyAllState[mr.Parent.Name + mr.Index].Translation; } if (AllRot.Checked) { mr._bindState._rotate = _copyAllState[mr.Parent.Name + mr.Index].Rotation; } if (AllScale.Checked) { mr._bindState._scale = _copyAllState[mr.Parent.Name + mr.Index].Scale; } mr.SignalPropertyChange(); } } } } else { foreach (SRT0EntryNode entry in SelectedAnimation.Children) { foreach (SRT0TextureNode tex in entry.Children) { if (_copyAllState.ContainsKey(tex.Parent.Name + tex.TextureIndex)) { if (AllTrans.Checked) { tex.SetKeyframeOnlyTrans(CurrentFrame - 1, _copyAllState[tex.Parent.Name + tex.TextureIndex]); } if (AllRot.Checked) { tex.SetKeyframeOnlyRot(CurrentFrame - 1, _copyAllState[tex.Parent.Name + tex.TextureIndex]); } if (AllScale.Checked) { tex.SetKeyframeOnlyScale(CurrentFrame - 1, _copyAllState[tex.Parent.Name + tex.TextureIndex]); } } } } } _mainWindow.UpdateModel(); }