public InternalAssetEditor(Asset asset, ArchiveEditorFunctions archive, bool hideHelp)
        {
            InitializeComponent();
            TopMost = true;

            this.asset   = asset;
            this.archive = archive;

            DynamicTypeDescriptor dt = new DynamicTypeDescriptor(asset.GetType());

            asset.SetDynamicProperties(dt);
            propertyGridAsset.SelectedObject = dt.FromComponent(asset);

            labelAssetName.Text = $"[{asset.AHDR.assetType.ToString()}] {asset.ToString()}";

            propertyGridAsset.HelpVisible = !hideHelp;

            if (asset is AssetCAM cam)
            {
                SetupForCam(cam);
            }
            else if (asset is AssetCSN csn)
            {
                SetupForCsn(csn);
            }
            else if (asset is AssetGRUP grup)
            {
                SetupForGrup(grup);
            }
            else if (asset is AssetRenderWareModel arwm)
            {
                SetupForModel(arwm);
            }
            else if (asset is AssetSHRP shrp)
            {
                SetupForShrp(shrp);
            }
            else if (asset is AssetWIRE wire)
            {
                SetupForWire(wire);
            }

            Button buttonHelp = new Button()
            {
                Dock = DockStyle.Fill, Text = "Open Wiki Page", AutoSize = true
            };

            buttonHelp.Click += (object sender, EventArgs e) =>
                                System.Diagnostics.Process.Start(AboutBox.WikiLink + asset.AHDR.assetType.ToString());
            tableLayoutPanel1.Controls.Add(buttonHelp, 0, tableLayoutPanel1.RowCount - 1);

            Button buttonFindCallers = new Button()
            {
                Dock = DockStyle.Fill, Text = "Find Who Targets Me", AutoSize = true
            };

            buttonFindCallers.Click += (object sender, EventArgs e) =>
                                       Program.MainForm.FindWhoTargets(GetAssetID());
            tableLayoutPanel1.Controls.Add(buttonFindCallers, 1, tableLayoutPanel1.RowCount - 1);
        }