/// <summary> /// Initializes a new instance of the <see cref="RenderableWorldModel"/> class. /// </summary> /// <param name="inModel">The model to render.</param> /// <param name="inPackageGroup">The package group the model belongs to.</param> /// <param name="inVersion">The game version of the package group.</param> public RenderableWorldModel(WMO inModel, PackageGroup inPackageGroup, WarcraftVersion inVersion) { this.Model = inModel; this.ModelPackageGroup = inPackageGroup; this.DatabaseProvider = new ClientDatabaseProvider(inVersion, this.ModelPackageGroup); this.ActorTransform = new Transform ( new Vector3(0.0f, 0.0f, 0.0f), Quaternion.FromAxisAngle(Vector3.UnitX, MathHelper.Pi), new Vector3(1.0f, 1.0f, 1.0f) ); this.IsInitialized = false; Initialize(); }
/// <summary> /// Initializes a new instance of the <see cref="GamePage"/> class. The given package group and node tree are /// wrapped by the page. /// </summary> /// <param name="packageGroup">The package group which the node tree maps to.</param> /// <param name="nodeTree">The prebuilt node tree to display.</param> /// <param name="version">The Warcraft version that the game page is contextually relevant for.</param> public GamePage(PackageGroup packageGroup, OptimizedNodeTree nodeTree, WarcraftVersion version) { this.Packages = packageGroup; this.Version = version; this.DatabaseProvider = new ClientDatabaseProvider(this.Version, this.Packages); this.TreeModel = new FileTreeModel(nodeTree); this.TreeAlignment = new Alignment(0.5f, 0.5f, 1.0f, 1.0f) { TopPadding = 1, BottomPadding = 1 }; this.TreeFilter = new TreeModelFilter(new TreeModelAdapter(this.TreeModel), null) { VisibleFunc = TreeModelVisibilityFunc }; this.TreeSorter = new TreeModelSort(this.TreeFilter); this.TreeSorter.SetSortFunc(0, SortGameTreeRow); this.TreeSorter.SetSortColumnId(0, SortType.Descending); this.Tree = new TreeView(this.TreeSorter) { HeadersVisible = true, EnableTreeLines = true }; CellRendererPixbuf nodeIconRenderer = new CellRendererPixbuf { Xalign = 0.0f }; CellRendererText nodeNameRenderer = new CellRendererText { Xalign = 0.0f }; TreeViewColumn column = new TreeViewColumn { Title = "Data Files", Spacing = 4 }; column.PackStart(nodeIconRenderer, false); column.PackStart(nodeNameRenderer, false); column.SetCellDataFunc(nodeIconRenderer, RenderNodeIcon); column.SetCellDataFunc(nodeNameRenderer, RenderNodeName); this.Tree.AppendColumn(column); ScrolledWindow sw = new ScrolledWindow { this.Tree }; this.TreeAlignment.Add(sw); this.Tree.RowActivated += OnRowActivated; this.Tree.ButtonPressEvent += OnButtonPressed; this.Tree.Selection.Changed += OnSelectionChanged; this.TreeContextMenu = new Menu(); // Save item context button this.SaveItem = new ImageMenuItem { UseStock = true, Label = Stock.Save, CanFocus = false, TooltipText = "Save the currently selected item to disk.", UseUnderline = true }; this.SaveItem.Activated += OnSaveItem; this.TreeContextMenu.Add(this.SaveItem); // Export item context button this.ExportItem = new ImageMenuItem("Export") { Image = new Image(Stock.Convert, IconSize.Button), CanFocus = false, TooltipText = "Exports the currently selected item to another format.", }; this.ExportItem.Activated += OnExportItemRequested; this.TreeContextMenu.Add(this.ExportItem); // Open item context button this.OpenItem = new ImageMenuItem { UseStock = true, Label = Stock.Open, CanFocus = false, TooltipText = "Open the currently selected item.", UseUnderline = true }; this.OpenItem.Activated += OnOpenItem; this.TreeContextMenu.Add(this.OpenItem); // Queue for export context button this.QueueForExportItem = new ImageMenuItem("Queue for export") { Image = new Image(Stock.Convert, IconSize.Button), CanFocus = false, TooltipText = "Queues the currently selected item for batch export.", }; this.QueueForExportItem.Activated += OnQueueForExportRequested; this.TreeContextMenu.Add(this.QueueForExportItem); // Separator SeparatorMenuItem separator = new SeparatorMenuItem(); this.TreeContextMenu.Add(separator); // Copy path context button this.CopyPathItem = new ImageMenuItem("Copy path") { Image = new Image(Stock.Copy, IconSize.Button), CanFocus = false, TooltipText = "Copy the path of the currently selected item.", }; this.CopyPathItem.Activated += OnCopyPath; this.TreeContextMenu.Add(this.CopyPathItem); this.TreeAlignment.ShowAll(); }