public ModelPartAnimations(SBM_ModelPart part) { StartBone = part.StartingBone; Entries = new byte[part.Count]; for (int i = 0; i < part.Count; i++) { Entries[i] = part.Entries[i]; } Anims = part.Anims.Array.Select(e => new JointAnimManager(e)).ToArray(); }
/// <summary> /// Opens editor for currently selected node if editor exists /// </summary> public void OpenEditor() { if (SelectedDataNode == null) { return; } var edit = PluginManager.GetEditorFromType(SelectedDataNode.Accessor.GetType()); // Special animation override if (SelectedDataNode.Accessor is HSD_AnimJoint || SelectedDataNode.Accessor is HSD_FigaTree || SelectedDataNode.Accessor is HSD_MatAnimJoint || SelectedDataNode.Accessor is HSD_ShapeAnimJoint || SelectedDataNode.Accessor is HSD_FogDesc || SelectedDataNode.Accessor is HSD_Camera || SelectedDataNode.Accessor is SBM_ModelPart) { //foreach (var v in dockPanel.Contents) { if (LastActiveContent is JobjEditorDock jedit && jedit.Visible) { if (SelectedDataNode.Accessor is HSD_MatAnimJoint matjoint) { jedit.LoadAnimation(matjoint); } if (SelectedDataNode.Accessor is HSD_ShapeAnimJoint shapeJoint) { jedit.LoadAnimation(shapeJoint); } if (SelectedDataNode.Accessor is HSD_AnimJoint joint) { jedit.LoadAnimation(new JointAnimManager(joint)); } if (SelectedDataNode.Accessor is HSD_FigaTree tree) { jedit.LoadAnimation(new JointAnimManager(tree)); } if (SelectedDataNode.Accessor is HSD_FogDesc fog) { jedit.Editor.SetFog(fog); } if (SelectedDataNode.Accessor is HSD_Camera camera) { jedit.Editor.SetCamera(camera); } if (SelectedDataNode.Accessor is SBM_ModelPart modelPart && modelPart.Anims.Length > 0) { if (prev_selected_part == modelPart) { part_select_index++; } else { part_select_index = 0; } prev_selected_part = modelPart; if (part_select_index > modelPart.Anims.Length) { part_select_index = 0; } JointAnimManager manager = new JointAnimManager(); for (int i = 0; i < modelPart.StartingBone; i++) { manager.Nodes.Add(new AnimNode()); } manager.Nodes.AddRange(new JointAnimManager(modelPart.Anims[part_select_index]).Nodes); jedit.LoadAnimation(manager); } } } } if (IsOpened(SelectedDataNode)) { var editor = GetEditors(SelectedDataNode); editor[0].BringToFront(); } else if (!IsChildOpened(SelectedDataNode.Accessor._s) && edit != null && edit is DockContent dc) { //Editors.Add(edit); SelectedDataNode.Collapse(); edit.Node = SelectedDataNode; dc.Show(dockPanel); dc.Text = SelectedDataNode.Text; dc.TabText = SelectedDataNode.Text; //if (dc is EditorBase b) // dc.DockState = b.DefaultDockState; } }