private void Rotate(UIRotation rotation) { var center = GetCenter(false); var negateCenter = GetCenter(true); foreach (var facies in rotation.Moves) { var animations = new List <FacieAnimation>(); var animations1 = new FacieAnimation(center, negateCenter); var animations2 = new FacieAnimation(center, negateCenter); foreach (var facie in facies) { var geometry = group.Children.FirstOrDefault(x => x.GetValue(NameProperty).ToString() == facie.Key); if (geometry != null) { var intermediaryMatrix = facie.PreviousRotation == null ? rotation.Matrix : MatrixHelper.Multiply(facie.PreviousRotation, rotation.Matrix); var previousMatrix3D = facie.PreviousRotation == null ? Matrix3D.Identity : MatrixMapper.Map(facie.PreviousRotation); var newMatrix3D = MatrixMapper.Map(intermediaryMatrix); animations1.Add(previousMatrix3D, newMatrix3D, geometry); previousMatrix3D = MatrixMapper.Map(intermediaryMatrix); newMatrix3D = MatrixMapper.Map(facie.Rotation); animations2.Add(previousMatrix3D, newMatrix3D, geometry); } } animations.Add(animations1); animations.Add(animations2); movementEngine.BeginAnimation(animations); } }
private void CubeMoving(object sender, UIRotation e) { Rotate(e); }