public static ObjectTreeNode OpenFormat(ImageList imageList, IFileFormat fileFormat) { ObjectTreeNode hiearchyNode = null; if (fileFormat is IArchiveFile) { hiearchyNode = LoadArchiveFormat((IArchiveFile)fileFormat); if (fileFormat is ObjectTreeNode) { hiearchyNode.OnBeforeExpand(); foreach (var child in ((ObjectTreeNode)fileFormat).Children) { hiearchyNode.AddChild(child); } } } else if (fileFormat is ObjectTreeNode) { hiearchyNode = (ObjectTreeNode)fileFormat; } else if (fileFormat is ITextureContainer) { hiearchyNode = LoadTextureContainerFormat(imageList, (ITextureContainer)fileFormat); } else if (fileFormat is STGenericTexture) { hiearchyNode = LoadTextureFormat((STGenericTexture)fileFormat); } else if (fileFormat is IModelFormat) { hiearchyNode = LoadModelFormat((IModelFormat)fileFormat); } else if (fileFormat is IModelSceneFormat) { hiearchyNode = LoadModelFormat((IModelSceneFormat)fileFormat); } else { hiearchyNode = new ObjectTreeNode(fileFormat.FileInfo.FileName) { Tag = fileFormat, } }; hiearchyNode.OnBeforeExpand(); if (fileFormat is IArchiveFile && fileFormat is ITextureContainer) { hiearchyNode.Children.AddRange(LoadTextureContainerFormat(imageList, (ITextureContainer)fileFormat).Children); } return(hiearchyNode); }