Example #1
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (IsSaveQuestionCancelled())
            {
                return;
            }

            using (OpenFileDialog dlg = new OpenFileDialog())
            {
                dlg.Filter           = fileDialogFilter;
                dlg.RestoreDirectory = true;
                if (dlg.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                lastFileName = dlg.FileName;
            }

            if (Path.GetExtension(lastFileName) == ".bullet")
            {
                bulletWrapper = new ExperimentalBulletWrapper();
                bulletWrapper.Load(lastFileName);
                bulletController.Model = bulletWrapper;
                Manipulated            = bulletController;
            }

            undo.Clear();
            InvalidateAllViews();
        }
 void BindSelectionXYZ(OpenGLManipulatingController controller)
 {
     controller.ObserverSelectionX.WillChange += new EventHandler(ObserverSelectionX_WillChange);
     controller.ObserverSelectionY.WillChange += new EventHandler(ObserverSelectionY_WillChange);
     controller.ObserverSelectionZ.WillChange += new EventHandler(ObserverSelectionZ_WillChange);
     controller.ObserverSelectionX.DidChange  += new EventHandler(ObserverSelectionX_DidChange);
     controller.ObserverSelectionY.DidChange  += new EventHandler(ObserverSelectionY_DidChange);
     controller.ObserverSelectionZ.DidChange  += new EventHandler(ObserverSelectionZ_DidChange);
 }
        void UndoDeleteSelected(List<IndexedItem> selectedItems)
        {
            Trace.WriteLine("undoDeleteSelected:");
            Manipulated = itemsController;
            items.CurrentItems = selectedItems;

            undo.PrepareUndo("Delete",
                Invocation.Create(selectedItems, RedoDeleteSelected));

            itemsController.UpdateSelection();
            OnEachViewDo(view => view.Invalidate());
        }
        void UndoCloneSelected(List<uint> selection)
        {
            Trace.WriteLine("undoCloneSelected:");

            Manipulated = itemsController;
            items.RemoveRange((int)items.Count - selection.Count, selection.Count);
            items.CurrentSelection = selection;

            undo.PrepareUndo("Clone",
                Invocation.Create(selection, RedoCloneSelected));

            itemsController.UpdateSelection();
            OnEachViewDo(view => view.Invalidate());
        }
        void SwapMeshManipulation(MeshManipulationState old,
            MeshManipulationState current)
        {
            Trace.WriteLine("swapMeshManipulationWithOld:current:");

            items.CurrentMeshManipulation = old;

            undo.PrepareUndo("Mesh Manipulation",
                Invocation.Create(current, old, SwapMeshManipulation));

            itemsController.UpdateSelection();
            meshController.UpdateSelection();
            Manipulated = meshController;
        }
        void SwapMeshFullState(MeshFullState old, MeshFullState current, string actionName)
        {
            Trace.WriteLine("swapMeshFullStateWithOld:current:actionName:");

            items.CurrentMeshFull = old;

            undo.PrepareUndo(actionName,
                Invocation.Create(current, old, actionName, SwapMeshFullState));

            itemsController.UpdateSelection();
            meshController.UpdateSelection();
            Manipulated = meshController;
        }
        void SwapManipulations(List<ItemManipulationState> old,
            List<ItemManipulationState> current)
        {
            Trace.WriteLine("swapManipulationsWithOld:current:");
            Trace.Assert(old.Count == current.Count, "old.Count == current.Count");
            items.CurrentManipulations = old;

            undo.PrepareUndo("Manipulations",
                Invocation.Create(current, old, SwapManipulations));

            itemsController.UpdateSelection();
            Manipulated = itemsController;
        }
        void SwapAllItems(List<Item> old, List<Item> current, string actionName)
        {
            Trace.WriteLine("swapAllItemsWithOld:current:actionName:");

            Trace.WriteLine(string.Format("items count before set = {0}", items.Count));
            items.AllItems = old;
            Trace.WriteLine(string.Format("items count after set = {0}", items.Count));

            undo.PrepareUndo(actionName,
                Invocation.Create(current, old, actionName, SwapAllItems));

            itemsController.UpdateSelection();
            Manipulated = itemsController;
        }
        void RedoCloneSelected(List<uint> selection)
        {
            Trace.WriteLine("redoCloneSelected:");

            Manipulated = itemsController;
            items.CurrentSelection = selection;
            Manipulated.CloneSelected();

            undo.PrepareUndo("Clone",
                Invocation.Create(selection, UndoCloneSelected));

            itemsController.UpdateSelection();
            OnEachViewDo(view => view.Invalidate());
        }
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (IsSaveQuestionCancelled())
                return;

            using (OpenFileDialog dlg = new OpenFileDialog())
            {
                dlg.Filter = fileDialogFilter;
                dlg.RestoreDirectory = true;
                if (dlg.ShowDialog() != DialogResult.OK)
                    return;

                lastFileName = dlg.FileName;
            }

            if (Path.GetExtension(lastFileName) == ".bullet")
            {
                bulletWrapper = new ExperimentalBulletWrapper(lastFileName);
                bulletController.Model = bulletWrapper;
                Manipulated = bulletController;
            }
            else
            {
                items = new ItemCollection();
                items.ReadFromFile(lastFileName);
                itemsController.Model = items;
                itemsController.UpdateSelection();
            }

            undo.Clear();
            OnEachViewDo(view => view.Invalidate());
        }
        public DocumentForm()
        {
            InitializeComponent();

            if (this.DesignMode)
                return;

            items = new ItemCollection();
            itemsController = new OpenGLManipulatingController();
            meshController = new OpenGLManipulatingController();
            bulletController = new OpenGLManipulatingController();
            undo = new UndoManager();

            fourViewDock = new DockFourViews();
            propertyPanel = new DockPropertyPanel();
            hierarchyPanel = new DockHierarchyPanel();
            logPanel = new DockLogPanel();

            openGLSceneViewLeft = fourViewDock.openGLSceneViewLeft;
            openGLSceneViewTop = fourViewDock.openGLSceneViewTop;
            openGLSceneViewFront = fourViewDock.openGLSceneViewFront;
            openGLSceneViewPerspective = fourViewDock.openGLSceneViewPerspective;

            mainSplit = fourViewDock.mainSplit;
            topSplit = fourViewDock.topSplit;
            bottomSplit = fourViewDock.bottomSplit;

            logTextBox = logPanel.logTextBox;
            sceneGraphTreeView = hierarchyPanel.sceneGraphTreeView;
            propertyGrid = propertyPanel.propertyGrid;

            logWriter = new StringWriter();
            Trace.Listeners.Add(new TextWriterTraceListener(logWriter));

            logTextBox.Text = logWriter.ToString();

            topSplit.SplitterMoving += new SplitterCancelEventHandler(topSplit_SplitterMoving);
            bottomSplit.SplitterMoving += new SplitterCancelEventHandler(bottomSplit_SplitterMoving);

            topSplit.SplitterMoved += new SplitterEventHandler(topSplit_SplitterMoved);
            bottomSplit.SplitterMoved += new SplitterEventHandler(bottomSplit_SplitterMoved);

            openGLSceneViewLeft.CurrentCameraMode = CameraMode.CameraModeLeft;
            openGLSceneViewTop.CurrentCameraMode = CameraMode.CameraModeTop;
            openGLSceneViewFront.CurrentCameraMode = CameraMode.CameraModeFront;
            openGLSceneViewPerspective.CurrentCameraMode = CameraMode.CameraModePerspective;

            itemsController.Model = items;

            OnEachViewDo(view => view.CurrentManipulator = ManipulatorType.ManipulatorTypeDefault);

            itemsController.CurrentManipulator = openGLSceneViewLeft.CurrentManipulator;

            OnEachViewDo(view =>
                {
                    view.Displayed = view.Manipulated = itemsController;
                    view.TheDelegate = this;
                });

            textBoxX.Bind<float>("Number", this, "SelectionX");
            textBoxY.Bind<float>("Number", this, "SelectionY");
            textBoxZ.Bind<float>("Number", this, "SelectionZ");

            BindSelectionXYZ(itemsController);
            BindSelectionXYZ(meshController);

            observerSelectionX = this.ObserveProperty<float>("SelectionX");
            observerSelectionY = this.ObserveProperty<float>("SelectionY");
            observerSelectionZ = this.ObserveProperty<float>("SelectionZ");

            manipulationFinished = true;
            oldManipulations = null;
            oldMeshManipulation = null;

            undo.NeedsSaveChanged += new EventHandler(undo_NeedsSaveChanged);
            this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);

            views = new List<OpenGLSceneView>();
            OnEachViewDo(view => views.Add(view));

            this.KeyDown += new KeyEventHandler(DocumentForm_KeyDown);

            fourViewDock.Show(dockPanel1);
            propertyPanel.Show(dockPanel1);
            hierarchyPanel.Show(dockPanel1);
            logPanel.Show(dockPanel1);

            dockPanel1.DockLeftPortion = 0.15;   // 15 percent of dock space
            dockPanel1.DockRightPortion = 0.15;  // 25 percent is default

            Manipulated = itemsController;
            propertyGrid.PropertyValueChanged += new PropertyValueChangedEventHandler(propertyGrid_PropertyValueChanged);

            simulationTimer = new Timer();
            simulationTimer.Interval = 1000 / 60;
            simulationTimer.Enabled = false;
            simulationTimer.Tick += new EventHandler(simulationTimer_Tick);
        }
 private void EditMesh(MeshSelectionMode mode)
 {
     int index = itemsController.LastSelectedIndex;
     if (index > -1)
     {
         Item item = items.GetItem((uint)index);
         item.GetMesh().SelectionMode = mode;
         meshController.Model = item.GetMesh();
         meshController.SetTransform(item);
         Manipulated = meshController;
     }
 }
        private void EditItems()
        {
            Mesh mesh = CurrentMesh;
            if (mesh != null)
                mesh.SelectionMode = MeshSelectionMode.MeshSelectionModeVertices;

            itemsController.Model = items;
            itemsController.SetTransform(null);
            Manipulated = itemsController;
        }
 void BindSelectionXYZ(OpenGLManipulatingController controller)
 {
     controller.ObserverSelectionX.WillChange += new EventHandler(ObserverSelectionX_WillChange);
     controller.ObserverSelectionY.WillChange += new EventHandler(ObserverSelectionY_WillChange);
     controller.ObserverSelectionZ.WillChange += new EventHandler(ObserverSelectionZ_WillChange);
     controller.ObserverSelectionX.DidChange += new EventHandler(ObserverSelectionX_DidChange);
     controller.ObserverSelectionY.DidChange += new EventHandler(ObserverSelectionY_DidChange);
     controller.ObserverSelectionZ.DidChange += new EventHandler(ObserverSelectionZ_DidChange);
 }
        void RedoDeleteSelected(List<IndexedItem> selectedItems)
        {
            Trace.WriteLine("redoDeleteSelected:");

            Manipulated = itemsController;
            items.SetSelectionFromIndexedItems(selectedItems);
            Manipulated.RemoveSelected();

            undo.PrepareUndo("Delete",
                Invocation.Create(selectedItems, UndoDeleteSelected));

            itemsController.UpdateSelection();
            OnEachViewDo(view => view.Invalidate());
        }
        public DocumentForm()
        {
            InitializeComponent();

            if (this.DesignMode)
            {
                return;
            }

            items            = new ItemCollection();
            itemsController  = new OpenGLManipulatingController();
            meshController   = new OpenGLManipulatingController();
            bulletController = new OpenGLManipulatingController();
            undo             = new UndoManager();

            fourViewDock   = new DockFourViews();
            propertyPanel  = new DockPropertyPanel();
            hierarchyPanel = new DockHierarchyPanel();
            logPanel       = new DockLogPanel();

            openGLSceneViewLeft        = fourViewDock.openGLSceneViewLeft;
            openGLSceneViewTop         = fourViewDock.openGLSceneViewTop;
            openGLSceneViewFront       = fourViewDock.openGLSceneViewFront;
            openGLSceneViewPerspective = fourViewDock.openGLSceneViewPerspective;

            mainSplit   = fourViewDock.mainSplit;
            topSplit    = fourViewDock.topSplit;
            bottomSplit = fourViewDock.bottomSplit;

            logTextBox         = logPanel.logTextBox;
            sceneGraphTreeView = hierarchyPanel.sceneGraphTreeView;
            propertyGrid       = propertyPanel.propertyGrid;

            logWriter = new StringWriter();
            Trace.Listeners.Add(new TextWriterTraceListener(logWriter));

            logTextBox.Text = logWriter.ToString();

            topSplit.SplitterMoving    += new SplitterCancelEventHandler(topSplit_SplitterMoving);
            bottomSplit.SplitterMoving += new SplitterCancelEventHandler(bottomSplit_SplitterMoving);

            topSplit.SplitterMoved    += new SplitterEventHandler(topSplit_SplitterMoved);
            bottomSplit.SplitterMoved += new SplitterEventHandler(bottomSplit_SplitterMoved);

            openGLSceneViewLeft.CurrentCameraMode        = CameraMode.CameraModeLeft;
            openGLSceneViewTop.CurrentCameraMode         = CameraMode.CameraModeTop;
            openGLSceneViewFront.CurrentCameraMode       = CameraMode.CameraModeFront;
            openGLSceneViewPerspective.CurrentCameraMode = CameraMode.CameraModePerspective;

            itemsController.Model = items;

            OnEachViewDo(view => view.CurrentManipulator = ManipulatorType.ManipulatorTypeDefault);

            itemsController.CurrentManipulator = openGLSceneViewLeft.CurrentManipulator;

            OnEachViewDo(view =>
            {
                view.Displayed   = view.Manipulated = itemsController;
                view.TheDelegate = this;
            });

            textBoxX.Bind <float>("Number", this, "SelectionX");
            textBoxY.Bind <float>("Number", this, "SelectionY");
            textBoxZ.Bind <float>("Number", this, "SelectionZ");

            BindSelectionXYZ(itemsController);
            BindSelectionXYZ(meshController);

            observerSelectionX = this.ObserveProperty <float>("SelectionX");
            observerSelectionY = this.ObserveProperty <float>("SelectionY");
            observerSelectionZ = this.ObserveProperty <float>("SelectionZ");

            manipulationFinished = true;
            oldManipulations     = null;
            oldMeshManipulation  = null;

            undo.NeedsSaveChanged += new EventHandler(undo_NeedsSaveChanged);
            this.FormClosing      += new FormClosingEventHandler(Form1_FormClosing);

            views = new List <OpenGLSceneView>();
            OnEachViewDo(view => views.Add(view));

            this.KeyDown += new KeyEventHandler(DocumentForm_KeyDown);

            fourViewDock.Show(dockPanel1);
            propertyPanel.Show(dockPanel1);
            hierarchyPanel.Show(dockPanel1);
            logPanel.Show(dockPanel1);

            dockPanel1.DockLeftPortion  = 0.15;  // 15 percent of dock space
            dockPanel1.DockRightPortion = 0.15;  // 25 percent is default

            Manipulated = itemsController;
            propertyGrid.PropertyValueChanged += new PropertyValueChangedEventHandler(propertyGrid_PropertyValueChanged);

            simulationTimer          = new Timer();
            simulationTimer.Interval = 1000 / 60;
            simulationTimer.Enabled  = false;
            simulationTimer.Tick    += new EventHandler(simulationTimer_Tick);
        }
Example #17
0
        public DocumentForm()
        {
            InitializeComponent();

            // need to fix that, never works correctly because we are in constructor
            if (this.DesignMode)
            {
                return;
            }

            bulletController       = new OpenGLManipulatingController();
            bulletWrapper          = new ExperimentalBulletWrapper();
            bulletController.Model = bulletWrapper;
            undo = new UndoManager();

            fourViewDock  = new DockFourViews();
            propertyPanel = new DockPropertyPanel();
            gridPanel     = new DockGridPanel();
            logPanel      = new DockLogPanel();

            openGLSceneViewLeft        = fourViewDock.openGLSceneViewLeft;
            openGLSceneViewTop         = fourViewDock.openGLSceneViewTop;
            openGLSceneViewFront       = fourViewDock.openGLSceneViewFront;
            openGLSceneViewPerspective = fourViewDock.openGLSceneViewPerspective;

            mainSplit   = fourViewDock.mainSplit;
            topSplit    = fourViewDock.topSplit;
            bottomSplit = fourViewDock.bottomSplit;

            logTextBox   = logPanel.logTextBox;
            objectView   = gridPanel.objectView;
            propertyGrid = propertyPanel.propertyGrid;

            logWriter = new StringWriter();
            Trace.Listeners.Add(new TextWriterTraceListener(logWriter));

            logTextBox.Text = logWriter.ToString();

            topSplit.SplitterMoving    += new SplitterCancelEventHandler(topSplit_SplitterMoving);
            bottomSplit.SplitterMoving += new SplitterCancelEventHandler(bottomSplit_SplitterMoving);

            topSplit.SplitterMoved    += new SplitterEventHandler(topSplit_SplitterMoved);
            bottomSplit.SplitterMoved += new SplitterEventHandler(bottomSplit_SplitterMoved);

            openGLSceneViewLeft.CurrentCameraMode        = CameraMode.CameraModeLeft;
            openGLSceneViewTop.CurrentCameraMode         = CameraMode.CameraModeTop;
            openGLSceneViewFront.CurrentCameraMode       = CameraMode.CameraModeFront;
            openGLSceneViewPerspective.CurrentCameraMode = CameraMode.CameraModePerspective;

            OnEachViewDo(view => view.CurrentManipulator = ManipulatorType.ManipulatorTypeDefault);

            bulletController.CurrentManipulator = openGLSceneViewLeft.CurrentManipulator;

            OnEachViewDo(view =>
            {
                view.Displayed   = view.Manipulated = bulletController;
                view.TheDelegate = this;
            });

            undo.NeedsSaveChanged += new EventHandler(undo_NeedsSaveChanged);
            this.FormClosing      += new FormClosingEventHandler(Form1_FormClosing);

            views = new List <OpenGLSceneView>();
            OnEachViewDo(view => views.Add(view));

            this.KeyDown += new KeyEventHandler(DocumentForm_KeyDown);

            fourViewDock.Show(dockPanel1);
            propertyPanel.Show(dockPanel1);
            gridPanel.Show(dockPanel1);
            logPanel.Show(dockPanel1);

            dockPanel1.DockLeftPortion  = 0.15;  // 15 percent of dock space, 25 percent is default
            dockPanel1.DockRightPortion = 0.15;

            Manipulated = bulletController;
            propertyGrid.PropertyValueChanged += new PropertyValueChangedEventHandler(propertyGrid_PropertyValueChanged);

            simulationTimer          = new Timer();
            simulationTimer.Interval = 1000 / 60;
            simulationTimer.Enabled  = false;
            simulationTimer.Tick    += new EventHandler(simulationTimer_Tick);

            objectView.SelectionChanged += new EventHandler(objectView_SelectionChanged);

            comboBoxViewMode.Items.Add("Solid");
            comboBoxViewMode.Items.Add("Wireframe");
            comboBoxViewMode.SelectedItem = "Solid";

            comboBoxViewMode.SelectedIndexChanged += new EventHandler(comboBoxViewMode_SelectedIndexChanged);
        }