예제 #1
0
        private void Add_Model_Click(object sender, RoutedEventArgs e)
        {
            if (ModelGroup != null)
            {
                if (RAMReader == null)
                {
                    if (Model_Select_Dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        string File_Name = Model_Select_Dialog.FileName;
                        if (!File_Name.ToLower().Contains("model"))
                        {
                            return;
                        }

                        string Model_Path = File_Name;
                        if (File.Exists(Model_Path))
                        {
                            byte[] Model_Data = File.ReadAllBytes(Model_Path);

                            ModelParser.ParseModel(Model_Data, Points, this);

                            ModelVisualizer.Content = ModelGroup;
                            viewPort3d.ZoomExtents();
                        }
                        else
                        {
                            MessageBox.Show(Model_Path);
                        }
                    }
                }
                else
                {
                    var DLAddressBox = new DrawListAddressBox();
                    if (DLAddressBox.ShowDialog().Value)
                    {
                        uint DrawListModelAddress = DLAddressBox.Address & ~0x80000000;

                        RAMReader.BaseStream.Seek(DrawListModelAddress, SeekOrigin.Begin);

                        ModelParser.ParseModel(RAMReader, this);

                        ModelVisualizer.Content = ModelGroup;
                        viewPort3d.ZoomExtents();
                    }
                }
            }
            else
            {
                MessageBox.Show("Couldn't find the _model file!");
            }
        }
예제 #2
0
        private void LoadModelFromRAMDump(string Dump_Location)
        {
            if (File.Exists(Dump_Location))
            {
                var DLAddressBox = new DrawListAddressBox();
                if (DLAddressBox.ShowDialog().Value)
                {
                    if (RAMReader != null)
                    {
                        RAMReader.Close();
                        RAMStream.Dispose();
                        RAMReader.Dispose();
                    }

                    PointsVisual3DList = new List <PointsVisual3D>();
                    Model3DList        = new List <GeometryModel3D>();
                    uint DrawListModelAddress = DLAddressBox.Address & ~0x80000000;
                    var  FStream = new FileStream(Dump_Location, FileMode.Open);
                    var  Reader  = new BinaryReader(FStream);

                    RAMStream = FStream;
                    RAMReader = Reader;

                    Reader.BaseStream.Seek(DrawListModelAddress, SeekOrigin.Begin);

                    bool SetModel = ModelGroup == null;

                    if (ModelGroup == null)
                    {
                        ModelGroup = new Model3DGroup();
                    }
                    else
                    {
                        ModelGroup.Children.Clear();
                    }

                    ModelParser.ParseModel(Reader, this);

                    if (SetModel)
                    {
                        ModelVisualizer.Content = ModelGroup;
                    }
                    viewPort3d.ZoomExtents();
                }
            }
        }