void CreateSkeletonTreeView() { var skeletonPose = EngineNS.CEngine.Instance.SkeletonAssetManager.GetSkeleton(EngineNS.CEngine.Instance.RenderContext, mCurrentResourceInfo.ResourceName); skeletonPose.GenerateHierarchy(); var root = skeletonPose.Root; var editorBoneDetial = new EditorBoneDetial(skeletonPose, root, null); EditorBoneDetialTree.Add(editorBoneDetial); TreeView_Skeleton.ItemsSource = EditorBoneDetialTree; }
void CreateSkeletonTreeView() { if (string.IsNullOrEmpty(mCurrentResourceInfo.SkeletonAsset) || mCurrentResourceInfo.SkeletonAsset == "null") { return; } var bones = EngineNS.CEngine.Instance.SkeletonAssetManager.GetSkeleton(EngineNS.CEngine.Instance.RenderContext, RName.GetRName(mCurrentResourceInfo.SkeletonAsset)); bones.GenerateHierarchy(); var root = bones.Root; ObservableCollection <EditorBoneDetial> temp = new ObservableCollection <EditorBoneDetial>(); var editorBoneDetial = new EditorBoneDetial(bones, root, null); temp.Add(editorBoneDetial); TreeView_Skeleton.ItemsSource = temp; }
private void AddSocket_Click(object sender, RoutedEventArgs e) { var bone = mSkeleton.GetBone((uint)mSkeletonTreeViewOperation.SelectBoneDetial.Index); var desc = bone.BoneDesc.Clone(); desc.BindMatrix = EngineNS.Matrix.Identity * bone.BoneDesc.BindMatrix; desc.Name = GetValidName(bone.BoneDesc.Name + "_Socket"); desc.Parent = bone.BoneDesc.Name; desc.Type = BoneType.Socket; CGfxBone socket = mSkeleton.NewBone(desc); bone.AddChild(socket.IndexInTable); var socketBoneDetial = new EditorBoneDetial(mSkeleton, socket, bone); mSkeletonTreeViewOperation.SelectBoneDetial.Children.Add(socketBoneDetial); }
EditorBoneDetial GetParent(EditorBoneDetial tree, EditorBoneDetial bone) { if (tree.Children.Contains(bone)) { return(tree); } foreach (var child in tree.Children) { var p = GetParent(child, bone); if (p == null) { continue; } else { return(p); } } return(null); }
void CreateSkeletonTreeView() { if (string.IsNullOrEmpty(mCurrentResourceInfo.SkeletonAsset) || mCurrentResourceInfo.SkeletonAsset == "null") { return; } var bones = EngineNS.CEngine.Instance.SkeletonAssetManager.GetSkeleton(EngineNS.CEngine.Instance.RenderContext, RName.GetRName(mCurrentResourceInfo.SkeletonAsset)); bones.GenerateHierarchy(); var root = bones.Root; if (root != null) { ObservableCollection <EditorBoneDetial> temp = new ObservableCollection <EditorBoneDetial>(); var editorBoneDetial = new EditorBoneDetial(bones, root, null); temp.Add(editorBoneDetial); TreeView_Skeleton.ItemsSource = temp; } else { EngineNS.Profiler.Log.WriteLine(EngineNS.Profiler.ELogTag.Warning, "Skeleton", $"Skeleton {RName.GetRName(mCurrentResourceInfo.SkeletonAsset)} don't have root bone"); } }
EditorBoneDetial GetParentFromTree(ObservableCollection <EditorBoneDetial> tree, EditorBoneDetial bone) { foreach (var sT in tree) { var p = GetParent(sT, bone); if (p == null) { continue; } else { return(p); } } return(null); }