BrawlCrate v0.41
Wii File Editor
Loading...
Searching...
No Matches
Public Member Functions | List of all members
BrawlCrate.NodeWrappers.MDL0EntryWrapper Class Reference
Inheritance diagram for BrawlCrate.NodeWrappers.MDL0EntryWrapper:
BrawlCrate.NodeWrappers.GenericWrapper BrawlCrate.NodeWrappers.BaseWrapper BrawlCrate.NodeWrappers.MultiSelectableWrapper BrawlCrate.NodeWrappers.MDL0BoneWrapper BrawlCrate.NodeWrappers.MDL0ColorWrapper BrawlCrate.NodeWrappers.MDL0MaterialWrapper BrawlCrate.NodeWrappers.MDL0ShaderWrapper

Public Member Functions

override ResourceNode Duplicate (bool changeName)
 
- Public Member Functions inherited from BrawlCrate.NodeWrappers.GenericWrapper
 GenericWrapper (IWin32Window owner)
 
 GenericWrapper ()
 
virtual void Sort ()
 
void MoveUp ()
 
virtual void MoveUp (bool select)
 
void MoveDown ()
 
virtual void MoveDown (bool select)
 
void DeleteSelected ()
 
void ExportSelected ()
 
virtual string Export ()
 
virtual void OnExport (string outPath)
 
virtual void Replace ()
 
virtual void OnReplace (string inStream)
 
void Restore ()
 
virtual void Delete ()
 
void Rename ()
 
virtual ResourceNode Duplicate ()
 
virtual ResourceNode Duplicate (bool changeName)
 
- Public Member Functions inherited from BrawlCrate.NodeWrappers.BaseWrapper
void Link (ResourceNode res)
 
void Unlink ()
 

Additional Inherited Members

- Static Public Member Functions inherited from BrawlCrate.NodeWrappers.BaseWrapper
static BaseWrapper[] GetAllNodes (BaseWrapper root)
 
static BaseWrapper Wrap (ResourceNode node)
 
static BaseWrapper Wrap (IWin32Window owner, ResourceNode node)
 
- Static Public Attributes inherited from BrawlCrate.NodeWrappers.BaseWrapper
static IWin32Window _owner
 
- Protected Member Functions inherited from BrawlCrate.NodeWrappers.BaseWrapper
 BaseWrapper ()
 
- Static Protected Member Functions inherited from BrawlCrate.NodeWrappers.GenericWrapper
static void MoveUpAction (object sender, EventArgs e)
 
static void MoveDownAction (object sender, EventArgs e)
 
static void ExportAction (object sender, EventArgs e)
 
static void ExportSelectedAction (object sender, EventArgs e)
 
static void DeleteSelectedAction (object sender, EventArgs e)
 
static void DuplicateAction (object sender, EventArgs e)
 
static void ReplaceAction (object sender, EventArgs e)
 
static void RestoreAction (object sender, EventArgs e)
 
static void DeleteAction (object sender, EventArgs e)
 
static void RenameAction (object sender, EventArgs e)
 
static void SortAction (object sender, EventArgs e)
 
- Static Protected Member Functions inherited from BrawlCrate.NodeWrappers.BaseWrapper
static T GetInstance< T > ()
 
static IEnumerable< T > GetInstances< T > ()
 
- Protected Attributes inherited from BrawlCrate.NodeWrappers.BaseWrapper
bool _discovered
 
ResourceNode _resource
 
- Static Protected Attributes inherited from BrawlCrate.NodeWrappers.BaseWrapper
static readonly ContextMenuStrip _emptyMenu = new ContextMenuStrip()
 
- Properties inherited from BrawlCrate.NodeWrappers.GenericWrapper
virtual ContextMenuStrip MultiSelectMenuStrip [get]
 
virtual string DefaultName [get]
 
virtual string ExportFilter [get]
 
virtual string ImportFilter [get]
 
virtual string ReplaceFilter [get]
 
- Properties inherited from BrawlCrate.NodeWrappers.BaseWrapper
ResourceNode Resource [get]
 
virtual ? Color DefaultBackColor [get]
 
virtual ? Color DefaultForeColor [get]
 
- Properties inherited from BrawlCrate.NodeWrappers.MultiSelectableWrapper
ContextMenuStrip MultiSelectMenuStrip [get]
 

Member Function Documentation

◆ Duplicate()

override ResourceNode BrawlCrate.NodeWrappers.MDL0EntryWrapper.Duplicate ( bool  changeName)
inlinevirtual

Reimplemented from BrawlCrate.NodeWrappers.GenericWrapper.

17 {
18 if (_resource.Parent == null)
19 {
20 return null;
21 }
22
23 string tempPath = Path.GetTempFileName();
24 _resource.Export(tempPath);
25 // Initialize node in a way that will not cause crashes
26 ResourceNode rNode2;
28 {
29 case ResourceType.MDL0Color:
30 rNode2 = new MDL0ColorNode();
31 break;
32 case ResourceType.MDL0UV:
33 rNode2 = new MDL0UVNode();
34 break;
35 case ResourceType.MDL0Material:
36 rNode2 = new MDL0MaterialNode();
37 break;
38 case ResourceType.MDL0Shader:
39 rNode2 = new MDL0ShaderNode();
40 break;
41 case ResourceType.MDL0Texture:
42 rNode2 = new MDL0TextureNode();
43 break;
44 case ResourceType.MDL0Normal:
45 rNode2 = new MDL0NormalNode();
46 break;
47 case ResourceType.MDL0Bone:
48 rNode2 = new MDL0BoneNode();
49 break;
50 case ResourceType.MDL0Vertex:
51 rNode2 = new MDL0VertexNode();
52 break;
53 default:
54 throw new NotSupportedException("Unsupported type for MDL0 Duplication");
55 }
56
57 rNode2._name = _resource.Name;
58 rNode2.Replace(tempPath);
59
60 if (rNode2 == null)
61 {
62 MessageBox.Show("The node could not be duplicated correctly.", "Error", MessageBoxButtons.OK,
63 MessageBoxIcon.Error);
64 return null;
65 }
66
67 // Remove the node from the parent temporarily
68 rNode2.Remove();
69
70 // Set the name programatically (based on Windows' implementation)
71 int index = _resource.Index;
72 int n = 0;
73 if (changeName)
74 {
75 while (_resource.Parent.FindChildrenByName(rNode2.Name).Length >= 1)
76 {
77 // Get the last index of the last duplicated node in order to place it after that one
78 index = Math.Max(index, _resource.Parent.FindChildrenByName(rNode2.Name).Last().Index);
79 // Set the name based on the number of duplicate nodes found
80 rNode2.Name = $"{_resource.Name} ({++n})";
81 }
82 }
83
84 // Place the node in the same containing parent, after the last duplicated node.
85 _resource.Parent.InsertChild(rNode2, true, index + 1);
86
87 // Update name again in order to refresh things that need refreshing when name is updated
88 rNode2.OnRenamed();
89
90 return rNode2;
91 }
ResourceNode Resource
Definition: BaseWrapper.cs:77
ResourceNode _resource
Definition: BaseWrapper.cs:76
Definition: MDL0BoneNode.cs:17
Definition: MDL0ColorNode.cs:12
Definition: MDL0MaterialNode.cs:22
Definition: MDL0NormalNode.cs:10
Definition: MDL0ShaderNode.cs:11
Definition: MDL0TextureNode.cs:17
Definition: MDL0UVNode.cs:10
Definition: MDL0VertexNode.cs:11
Definition: ResourceNode.cs:129
virtual void Export(string outPath)
Definition: ResourceNode.cs:909
virtual void Remove()
Definition: ResourceNode.cs:741
ResourceNode[] FindChildrenByName(string name)
Definition: ResourceNode.cs:1558
virtual void InsertChild(ResourceNode child, int index)
Definition: ResourceNode.cs:774
virtual void Replace(string fileName)
Definition: ResourceNode.cs:829
virtual ResourceType ResourceFileType
Definition: ResourceNode.cs:193
void OnRenamed()
Definition: ResourceNode.cs:238
ResourceNode Parent
Definition: ResourceNode.cs:245
int Index
Definition: ResourceNode.cs:301
virtual string Name
Definition: ResourceNode.cs:223
ResourceType
Definition: ResourceType.cs:6

The documentation for this class was generated from the following file: