コード例 #1
0
        private static void ExecuteSetOpposite(BoneViewModel view)
        {
            IOrderedEnumerable <RigResource.RigResource.Bone> choices = view.Manager.Bones.OrderBy(x => x.Name);
            var  dialog = new BoneSelectDialog(choices, "Select a New Opposite...");
            bool result = dialog.ShowDialog() ?? false;

            if (result)
            {
                view.Opposite = view.Manager.Bones.IndexOf(dialog.SelectedBone);
            }
        }
コード例 #2
0
 private void OnBoneRemoved(BoneManager sender, BoneActionEventArgs e)
 {
     RigResource.RigResource.Bone parent = sender.GetParent(e.Bone);
     if (parent == null)
     {
         BoneViewModel view = mChildren.FirstOrDefault(x => x.Bone == e.Bone);
         if (view != null)
         {
             mChildren.Remove(view);
         }
     }
 }
コード例 #3
0
 private void OnBoneRemoved(BoneManager sender, BoneActionEventArgs e)
 {
     RigResource.RigResource.Bone parent = sender.GetParent(e.Bone);
     if (parent != null && parent.Equals(mBone))
     {
         BoneViewModel child = mChildren.FirstOrDefault(x => x.Bone == e.Bone);
         if (child != null)
         {
             mChildren.Remove(child);
         }
     }
 }
コード例 #4
0
 private void OnBoneAdded(BoneManager sender, BoneActionEventArgs e)
 {
     RigResource.RigResource.Bone parent = sender.GetParent(e.Bone);
     if (parent == null)
     {
         BoneViewModel view = mChildren.FirstOrDefault(x => x.Bone == e.Bone);
         if (view == null)
         {
             var vm = new BoneViewModel(this, this, e.Bone, sender);
             vm.Opposite = mManager.Bones.IndexOf(e.Bone);
             mChildren.Add(vm);
         }
     }
 }
コード例 #5
0
        private void OnBoneParentChanged(BoneManager sender, BoneActionEventArgs e)
        {
            RigResource.RigResource.Bone parent = sender.GetParent(e.Bone);
            BoneViewModel child = mChildren.FirstOrDefault(x => x.Bone == e.Bone);

            if (parent == null)
            {
                if (child == null)
                {
                    mChildren.Add(new BoneViewModel(this, this, e.Bone, sender));
                }
            }
            else
            {
                if (child != null)
                {
                    mChildren.Remove(child);
                }
            }
        }
コード例 #6
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void FindReplaceRecursive(BoneViewModel bone, String find, String replace)
 {
     bone.BoneName = bone.BoneName.Replace(find, replace);
     foreach (BoneViewModel child in bone.Children)
     {
         FindReplaceRecursive(child, find, replace);
     }
 }
コード例 #7
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteCloneHierarchy(BoneViewModel target)
 {
     CloneHierarchy(target.Manager, target.Bone, target.Manager.GetParent(target.Bone));
 }
コード例 #8
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void PrefixRecursive(BoneViewModel bone, String prefix)
 {
     bone.BoneName = prefix + bone.BoneName;
     foreach (BoneViewModel child in bone.Children)
     {
         PrefixRecursive(child, prefix);
     }
 }
コード例 #9
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void SuffixRecursive(BoneViewModel bone, String suffix)
 {
     bone.BoneName = bone.BoneName + suffix;
     foreach (BoneViewModel child in bone.Children)
     {
         SuffixRecursive(child, suffix);
     }
 }
コード例 #10
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static bool IsAChild(BoneViewModel bone)
 {
     return IsABone(bone) && bone.Parent is BoneViewModel;
 }
コード例 #11
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static bool IsAParent(BoneViewModel bone)
 {
     return IsABone(bone) && bone.Children.Count > 0;
 }
コード例 #12
0
 private static void ExecuteSetOpposite(BoneViewModel view)
 {
     IOrderedEnumerable<RigResource.RigResource.Bone> choices = view.Manager.Bones.OrderBy(x => x.Name);
     var dialog = new BoneSelectDialog(choices, "Select a New Opposite...");
     bool result = dialog.ShowDialog() ?? false;
     if (result)
     {
         view.Opposite = view.Manager.Bones.IndexOf(dialog.SelectedBone);
     }
 }
コード例 #13
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteClone(BoneViewModel target)
 {
     target.Manager.AddBone(new RigResource.RigResource.Bone(0, null, target.Bone), target.Parent is BoneViewModel ? ((BoneViewModel) target.Parent).Bone : null);
 }
コード例 #14
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteUnparent(BoneViewModel target)
 {
     target.Manager.SetParent(target.Bone, null);
 }
コード例 #15
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteDeleteBone(BoneViewModel target)
 {
     foreach (RigResource.RigResource.Bone bone in target.Manager.GetChildren(target.Bone))
     {
         target.Manager.SetParent(bone, target.Parent is BoneViewModel ? ((BoneViewModel) target.Parent).Bone : null);
     }
     target.Manager.DeleteBone(target.Bone, false);
 }
コード例 #16
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteSuffix(BoneViewModel target)
 {
     var dialog = new StringInputDialog("Suffix Names in Hierarchy...");
     bool result = dialog.ShowDialog() ?? false;
     if (result)
     {
         SuffixRecursive(target, dialog.Value);
     }
 }
コード例 #17
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteSetParent(BoneViewModel target)
 {
     IOrderedEnumerable<RigResource.RigResource.Bone> descendants = target.Manager.GetDescendants(target.Bone).OrderBy(x => x.Name);
     List<RigResource.RigResource.Bone> choices = target.Manager.Bones.Where(x => x != target.Bone && !descendants.Contains(x)).ToList();
     choices.Sort((x, y) => x.Name.CompareTo(y.Name));
     var dialog = new BoneSelectDialog(choices, "Select a New Parent...");
     bool result = dialog.ShowDialog() ?? false;
     if (result)
     {
         target.Manager.SetParent(target.Bone, dialog.SelectedBone);
     }
 }
コード例 #18
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteRotationMatrixInput(BoneViewModel bone)
 {
     var q = bone.Bone.Orientation;
     var m = new Matrix(new Quaternion(q.A, q.B, q.C, q.D));
     var dialog = new MatrixInputDialog(m, "Rotation Matrix Input");
     bool result = dialog.ShowDialog() ?? false;
     if (result)
     {
         bone.Rotation = new EulerAngle(dialog.Value);
     }
 }
コード例 #19
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteFindReplace(BoneViewModel target)
 {
     var dialog = new FindReplaceDialog("Find and Replace in Hierarchy...");
     bool result = dialog.ShowDialog() ?? false;
     if (result)
     {
         FindReplaceRecursive(target, dialog.Find, dialog.Replace);
     }
 }
コード例 #20
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteDeleteHierarchy(BoneViewModel target)
 {
     target.Manager.DeleteBone(target.Bone, true);
 }
コード例 #21
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static bool HasNonDescendants(BoneViewModel bone)
 {
     if (IsABone(bone))
     {
         IEnumerable<RigResource.RigResource.Bone> descendants = bone.Manager.GetDescendants(bone.Bone);
         return bone.Manager.Bones.Any(x => x != bone.Bone && !descendants.Contains(x));
     }
     return false;
 }
コード例 #22
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static bool IsABone(BoneViewModel bone)
 {
     return bone != null;
 }
コード例 #23
0
 private void OnBoneAdded(BoneManager sender, BoneActionEventArgs e)
 {
     RigResource.RigResource.Bone parent = sender.GetParent(e.Bone);
     if (parent == null)
     {
         BoneViewModel view = mChildren.FirstOrDefault(x => x.Bone == e.Bone);
         if (view == null)
         {
             var vm = new BoneViewModel(this, this, e.Bone, sender);
             vm.Opposite = mManager.Bones.IndexOf(e.Bone);
             mChildren.Add(vm);
         }
     }
 }
コード例 #24
0
ファイル: BoneOps.cs プロジェクト: Ktarianen/s3pi-wrappers
 private static void ExecuteAddBone(BoneViewModel target)
 {
     target.Manager.AddBone(new RigResource.RigResource.Bone(0, null, new Vertex(0, null), new s3pi.Interfaces.Quaternion(0, null, 0f, 0f, 0f, 1f), new Vertex(0, null), NEW_BONE_NAME, target.Manager.Bones.Count, -1, FNV32.GetHash(NEW_BONE_NAME), 0x23), target.Bone);
 }