public static void AddDFF(ArchiveFile j)
        {
            if (ObjectDFFNames.Contains(j.Name))
            {
                RenderWareModelFile d = new RenderWareModelFile(j.Name);
                byte[] dffData        = j.DecompressThis();
                d.SetForRendering(ReadFileMethods.ReadRenderWareFile(dffData), dffData);

                if (DFFStream.ContainsKey(j.Name))
                {
                    MessageBox.Show("Object model " + j.Name + " has already been loaded and will be replaced.");

                    foreach (SharpMesh mesh in DFFStream[j.Name].meshList)
                    {
                        mesh.Dispose();
                    }

                    DFFStream[j.Name] = d;
                }
                else
                {
                    DFFStream.Add(j.Name, d);
                }
            }
        }
Beispiel #2
0
        private void AddDFF(ArchiveFile j)
        {
            if (ObjectDFFNames.Contains(j.Name))
            {
                RenderWareModelFile d = new RenderWareModelFile(j.Name);
                byte[] dffData        = j.DecompressThis();

                try
                {
                    d.SetForRendering(mainForm.renderer.Device, ReadFileMethods.ReadRenderWareFile(dffData), dffData);

                    if (DFFModels.ContainsKey(j.Name))
                    {
                        foreach (SharpMesh mesh in DFFModels[j.Name].meshList)
                        {
                            mesh.Dispose();
                        }

                        DFFModels[j.Name] = d;
                    }
                    else
                    {
                        DFFModels.Add(j.Name, d);
                    }
                }
                catch (Exception ex)
                {
                    // TODO: Investigate RenderWareFile failing to open certain DFFs.
                    MessageBox.Show($"RenderWareFile: Failed to open DFF model file; {j.Name} | Exception Message: {ex.Message}");
                }
            }
            else if (Path.GetExtension(j.Name).ToLower().Equals(".txd"))
            {
                try
                {
                    byte[] txdData = j.DecompressThis();

                    mainForm.LoadTexturesFromTXD(txdData);
                }
                catch (Exception ex)
                {
                    #if DEBUG
                    MessageBox.Show("Unable to load textures from TXD: " + ex.Message);
                    #endif
                }
            }
        }