示例#1
0
        private void OnFileExtractComplete(object sender, EventArgs e)
        {
            if (wmoRunner == null)
            {
                return;
            }

            if (e is FileExtractCompleteArgs)
            {
                FileExtractCompleteArgs args = (FileExtractCompleteArgs)e;

                if (wmoRunner != null && args.RunnerID == wmoRunner.runnerID)
                {
                    if (!args.Success)
                    {
                        CancelExtraction();
                        Alert.Show(string.Format("Unable to extract WMO file '{0}'.", args.File.FullName));
                    }

                    wmoDoneCount++;
                    if (wmoDoneCount == currentFiles.Count)
                    {
                        LoadWMOFile();
                    }
                }
            }
            else if (e is FileExtractCompleteUnsafeArgs)
            {
                FileExtractCompleteUnsafeArgs args = (FileExtractCompleteUnsafeArgs)e;

                if (args.RunnerID == texRunner.runnerID)
                {
                    if (!args.Success)
                    {
                        CancelExtraction();
                        Alert.Show(string.Format("Unable to extract WMO texture '{0}'.", args.File));
                    }

                    texDone++;
                    if (texDone == texTotal)
                    {
                        try
                        {
                            CreateWMOMesh();
                        }
                        catch (WMOException ex)
                        {
                            OnWMOException(ex);
                        }
                    }
                    else
                    {
                        UpdateTexturePrepStatus();
                    }
                }
            }
        }
示例#2
0
        private void EventManager_FileExtractComplete(object sender, EventArgs e)
        {
            if (!(e is FileExtractCompleteUnsafeArgs))
            {
                return;
            }

            FileExtractCompleteUnsafeArgs args = (FileExtractCompleteUnsafeArgs)e;

            if (runner != null && args.RunnerID == runner.runnerID)
            {
                if (args.File.ToLower().EndsWith(".skin"))
                {
                    extractSkinFile = args.File;
                }
                else
                {
                    extractModelFile = args.File;
                }

                if (extractSkinFile != null && extractModelFile != null)
                {
                    string modelTempPath = Path.Combine(Constants.TEMP_DIRECTORY, extractModelFile);
                    string skinTempPath  = Path.Combine(Constants.TEMP_DIRECTORY, extractSkinFile);

                    try
                    {
                        if (!File.Exists(modelTempPath))
                        {
                            throw new M2Exception(string.Format("Extracted model file {0} does not exist.", modelTempPath));
                        }

                        if (!File.Exists(skinTempPath))
                        {
                            throw new M2Exception(string.Format("Extract skin file {0} does not exist.", skinTempPath));
                        }

                        M2File model = new M2File(modelTempPath, new M2SkinFile(skinTempPath));
                        model.parse();

                        Log.Write("ModelViewer: Loaded {0} M2 data.", model.Name);

                        meshes.Add(model.ToMesh());
                    }
                    catch (M2Exception ex)
                    {
                        Alert.Show(string.Format("Sorry, an error prevented {0} from being opened!", selectedFileName));
                        Log.Write("Unable to extract M2 file: " + ex.Message);
                        Log.Write(ex.StackTrace);
                    }

                    CloseLoadingWindow();
                }
            }
        }