public void Transform(Igneel.SceneManagement.Frame frame, GlypComponent component, Igneel.Vector2 p0, Igneel.Vector2 p1) { var disp = p1 - p0; var position = frame.BoundingSphere.Radius > 0? frame.BoundingSphere.Center: frame.GlobalPosition; var Tw = Matrix.Translate(-position); switch (component.Id) { case X: Tw *= Matrix.RotationX(Numerics.ToRadians(disp.Y)); break; case Y: Tw *= Matrix.RotationY(Numerics.ToRadians(disp.X)); break; case Z: Tw *= Matrix.RotationZ(Numerics.ToRadians(disp.Y)); break; } Tw *= Matrix.Translate(position); var localPose = frame.LocalPose; var P = Matrix.Invert(localPose) * frame.GlobalPose; var Tl = P * Tw * Matrix.Invert(P); frame.LocalPose *= Tl; frame.CommitChanges(); }
private TreeViewItem CreateTreeViewItem(Igneel.SceneManagement.Frame frame) { TreeViewItem item = new TreeViewItem() { Header = frame.Name, Tag = frame, }; foreach (var children in frame.Childrens) { item.Items.Add(CreateTreeViewItem(children)); } return(item); }
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { TreeViewItem item = (TreeViewItem)e.NewValue; if (item == null) { mainViewModel.TransformationController.SelectedFrame = null; return; } Igneel.SceneManagement.Frame frame = item.Tag as Igneel.SceneManagement.Frame; if (frame != null) { mainViewModel.TransformationController.ShowTransformGlyp(frame); } else { mainViewModel.TransformationController.SelectedFrame = null; } }
public void Transform(Igneel.SceneManagement.Frame tranlatable, GlypComponent component, Igneel.Vector2 p0, Igneel.Vector2 p1) { throw new NotImplementedException(); }