예제 #1
0
        public void NewPlaceAction()
        {
            if (IsPlacing)
            {
                PlacingID++;
                PlacingID %= RenderableList.Count;

                IRenderable CreatedRenderable;
                CreatedRenderable = System.Activator.CreateInstance(RenderableList[PlacingID]) as IRenderable;
                CreateObject.Undo();
                OutsideSimulatorApp.GetInstance().ObjectPicker.ClickedNode = LastPickedObject;
                Cameras.Camera SceneCamera = OutsideSimulatorApp.GetInstance().SceneCamera;
                Vector3 lav = (SceneCamera.LookAt - SceneCamera.Position);
                lav.Normalize();
                CreateObject = new CreateObject(
                    CreatedRenderable,
                    Matrix.Translation(SceneCamera.Position
                    + lav * ObjectMover.frontDist));
                CreateObject.Redo();
                OutsideSimulatorApp.GetInstance().ObjectPicker.ClickedNode = CreateObject.ParentNode.Children[CreateObject.ChildName];
            }
            else
            {
                IsPlacing = true;
                PlacingID = 0;

                IRenderable CreatedRenderable;
                CreatedRenderable = System.Activator.CreateInstance(RenderableList[PlacingID]) as IRenderable;
                Cameras.Camera SceneCamera = OutsideSimulatorApp.GetInstance().SceneCamera;
                Vector3 lav = (SceneCamera.LookAt - SceneCamera.Position);
                lav.Normalize();
                LastPickedObject = OutsideSimulatorApp.GetInstance().ObjectPicker.ClickedNode;
                CreateObject = new CreateObject(
                    CreatedRenderable,
                    Matrix.Translation(SceneCamera.Position
                    + lav * ObjectMover.frontDist));
                CreateObject.Redo();
                OutsideSimulatorApp.GetInstance().ObjectPicker.ClickedNode = CreateObject.ParentNode.Children[CreateObject.ChildName];
            }
        }
예제 #2
0
        protected void PlaceObject()
        {
            //
            // Create a new CreateObject, for the newest location
            //
            var coToSave = new CreateObject(CreateObject.ParentNode.Children[CreateObject.ChildName].Renderable,
                CreateObject.ParentNode.Children[CreateObject.ChildName].Transform);
            CreateObject.Undo();
            CreateObject = coToSave;
            CreateObject.Redo();

            //
            // Place
            //
            OutsideSimulatorApp.GetInstance().CommandStack.Push(CreateObject);
            IsPlacing = false;

            // Place new object (undo-able action) in our scene,
            //  at its current location (15 units in front of camera, axis-aligned to world)
            OutsideSimulatorApp.GetInstance().ObjectPicker.ClickedNode = null;
        }