コード例 #1
0
            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();
            }
コード例 #2
0
        /// <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;
            }
        }