示例#1
0
 /// <summary>
 /// Runs the specified plug-in from the list of plug-ins.
 /// </summary>
 /// <param name="index">The plug-in to run.</param>
 /// <param name="type">The type of plug-in to run.</param>
 /// <param name="owner">The Form calling the plug-in.</param>
 public bool RunPlugIn(int index, DataInterfacing.PlugIns.PlugInTypes type, Form owner)
 {
     return(RunPlugInAuto(index, type, owner, null));
 }
示例#2
0
        /// <summary>
        /// Runs the specified plug-in from the list of plug-ins.
        /// </summary>
        /// <param name="index">The plug-in to run.</param>
        /// <param name="type">The type of plug-in to run.</param>
        /// <param name="owner">The Form calling the plug-in.</param>
        /// <param name="filename">The filename to load into the plug-in.</param>
        public bool RunPlugInAuto(int index, DataInterfacing.PlugIns.PlugInTypes type, Form owner,
                                  string filename)
        {
            bool      success = false;
            ArrayList plugins = null;

            switch (type)
            {
            case DataInterfacing.PlugIns.PlugInTypes.Textures:
                plugins = _plugins.TexturePlugIns;
                break;

            case DataInterfacing.PlugIns.PlugInTypes.Importing:
                plugins = _plugins.FileImportPlugIns;
                break;

            case DataInterfacing.PlugIns.PlugInTypes.Exporting:
                plugins = _plugins.FileExportPlugIns;
                break;

            case DataInterfacing.PlugIns.PlugInTypes.Vertices:
            default:
                plugins = _plugins.VertexPlugIns;
                break;
            }

            if (index > -1 && index < plugins.Count)
            {
                try
                {
                    PlugIn           plugin = (PlugIn)plugins[index];
                    ArrayList        textures = new ArrayList();
                    DataCore.Texture tex, texCopy;

                    if (_page != null)
                    {
                        foreach (DataCore.Texture t in _page.TerrainPatch.Textures)
                        {
                            textures.Add(t.Name);
                        }
                    }

                    if (type != DataInterfacing.PlugIns.PlugInTypes.Importing)
                    {
                        plugin.SetPage(new TerrainPage(_page));
                    }

                    plugin.StartPosition = FormStartPosition.CenterParent;
                    plugin.SetOwner(owner);
                    plugin.SetTextures(textures);
                    LoadDesiredPlugInData(plugin);

                    if (filename == null)
                    {
                        plugin.Run();
                    }
                    else
                    {
                        ArrayList objects = new ArrayList();

                        objects.Add(filename);
                        plugin.AutoRun(objects);
                    }

                    success = plugin.GetSuccess();

                    if (success)
                    {
                        StoreLastPage(plugin.GetPage(), plugin.GetName());

                        if (plugin.GetPage() != null && plugin.GetModifiedTextures())
                        {
                            textures = plugin.GetTextures();

                            // Build new texture details
                            for (int i = 0; i < textures.Count; i++)
                            {
                                texCopy = (Texture)textures[i];
                                tex     = (DataCore.Texture)_page.TerrainPatch.Textures[i];

                                if (tex.DXTexture != null && !tex.DXTexture.Disposed)
                                {
                                    tex.DXTexture.Dispose();
                                }

                                tex.DXTexture     = D3D.TextureLoader.FromFile(_viewport.Device, texCopy.FileName);
                                tex.Name          = texCopy.Name;
                                tex.FileName      = texCopy.FileName;
                                tex.OperationText = texCopy.OperationText;
                                tex.Operation     = GetTextureOperation(tex.OperationText);
                                tex.Mask          = texCopy.Mask;
                                tex.Scale         = texCopy.Scale;
                                tex.Shift         = texCopy.Shift;

                                _page.TerrainPatch.Textures[i] = tex;
                            }
                        }

                        _page.TerrainPatch.CalculateNormals();
                        _buffers.RefreshIndexBuffer_Page();
                    }
                }
                catch (Exception e)
                {
                    string message = "An exception has been thrown!\n\n";

                    message += "Source: " + e.Source + "\n";
                    message += "Error: " + e.Message;

                    MessageBox.Show(null, message, "Error Running Application", MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                }
                finally
                {
                }
            }

            return(success);
        }
示例#3
0
 public void LoadPlugIn(DataInterfacing.PlugIns.PlugInTypes type)
 {
     _plugins.LoadPlugIn(type);
 }