示例#1
0
        private void DocumentWindow_DragDrop(object sender, DragEventArgs e)
        {
            this.Activate();
            ToolboxItem tItem = ((HostToolbox.HostItem)e.Data.GetData(typeof(HostToolbox.HostItem))).ToolboxItem;
            Assembly    asm   = Assembly.GetAssembly(typeof(Primitive));
            Object      obj   = asm.CreateInstance(tItem.TypeName, false);

            //Object obj = Activator.CreateInstance(Type.GetType(tItem.TypeName));
            if (obj == null)
            {
                return;
            }
            if (obj is Primitive)
            {
                Primitive p = (Primitive)obj;
                if (p is TriangleModel)
                {
                    OpenFileDialog ofd = new OpenFileDialog();
                    ofd.Filter =
                        "All Know Files|*.ply;*.byu;*.obj;*.off;*.noff;*.cnoff|Ply Files|*.ply|Byu Files|*.byu|Wave Obj Files|*.obj|Off Files|*.off;*.noff;*.cnoff";
                    if (ofd.ShowDialog() == DialogResult.OK)
                    {
                        TriangleModel model = p as TriangleModel;
                        model.Path = ofd.FileName;
                        LoadingModelDialog modelDlg = new LoadingModelDialog(model);
                        modelDlg.Show();
                    }
                }
                UnifiedScenesRepository.Scenes[this.TabText].Primitives.Add(p);
            }
            else if (obj is Scene)
            {
                DocumentWindow newForm = new DocumentWindow();
                obj = newForm.Scene;
                newForm.Show(this.DockPanel);
            }
            else if (obj is Material)
            {
                UnifiedScenesRepository.Scenes[this.TabText].Materials.Add((Material)obj);
            }
            else if (obj is Light)
            {
                UnifiedScenesRepository.Scenes[this.TabText].Lights.Add((Light)obj);
            }
            else if (obj is Camera)
            {
                UnifiedScenesRepository.Scenes[this.TabText].Cameras.Add((Camera)obj);
            }
            PropertyWindow.Instance.PropertyGrid.SelectedObject = obj;
            //PropertyWindow.Instance.PropertyGrid.SelectedObject = this.Tag;
            //Type type = Type.GetType(tItem.TypeName,false, true);
            //PropertyWindow.Instance.PropertyGrid.SelectedObject =
            //Activator.CreateInstance(Type.GetType(tItem.TypeName), true);
        }
示例#2
0
        private void OpenFile(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = "Scene Files (*.xml, *.scn)|*.xml;*.scn";
            if (openFileDialog.ShowDialog(this) == DialogResult.OK)
            {
                //System.Xml.Serialization.XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(typeof(Scene));
                //Scene loaded = (Scene)xml.Deserialize(File.Open(FileName, FileMode.Open));
                ObjectXMLSerializer <Scene> .OnDeserialized += (scene => {
                    IEnumerable <TriangleModel> models =
                        from p in scene.Primitives
                        where p is TriangleModel
                        select p as TriangleModel;
                    foreach (TriangleModel model in models)
                    {
                        LoadingModelDialog modelDlg =
                            new LoadingModelDialog(model);
                        modelDlg.Show();
                    }
                });
                Scene loaded = Scene.Load(openFileDialog.FileName);
                if (UnifiedScenesRepository.Scenes.ContainsName(loaded.Name))
                {
                    DialogResult dr =
                        MessageBox.Show(
                            "Alredy exists an scene opened with the same name!\n Press \"Yes\" to overwrite current scene or \"No\" to rename loaded scene!",
                            "Overwrite scene?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
                            MessageBoxDefaultButton.Button2);
                    if (dr == DialogResult.Yes)
                    {
                        UnifiedScenesRepository.Scenes[loaded.Name] = loaded;
                        this.SelectDocument(loaded.Name);
                        return;
                    }
                    else if (dr == DialogResult.Cancel)
                    {
                        return;
                    }
                    loaded.Name = null;
                    loaded      = null;
                }
                DocumentWindow childForm = new DocumentWindow(loaded);
                childForm.Show(this.dockPanel);
            }
        }