Exemplo n.º 1
0
        public static IObject3D Pick(int X, int Y, Midget.Cameras.MidgetCamera camera, IRenderSurface renderSurface)
        {
            Vector3 pickRayDirection	= new Vector3();
            Vector3 pickRayOrigin		= new Vector3();

            camera.UnProjectCoordinates(X,Y, renderSurface.ClientWidth, renderSurface.ClientHeight, ref pickRayOrigin, ref pickRayDirection);

            //			// compute the vector of the pick ray in screen space
            //			Vector3 v = new Vector3();
            //			v.X =  ( ( ( 2.0f * X ) / renderSurface.ClientWidth ) - 1 ) / camera.ProjectionMatrix.M11;
            //			v.Y = -( ( ( 2.0f * Y ) / renderSurface.ClientHeight ) - 1 ) / camera.ProjectionMatrix.M22;
            //			v.Z =  1.0f;
            //
            //			// Get the inverse view matrix
            //			Matrix m = Matrix.Invert(camera.ViewMatrix);
            //
            //			// Transform the screen space pick ray into 3D space
            //			pickRayDirection.X  = v.X*m.M11 + v.Y*m.M21 + v.Z*m.M31;
            //			pickRayDirection.Y  = v.X*m.M12 + v.Y*m.M22 + v.Z*m.M32;
            //			pickRayDirection.Z  = v.X*m.M13 + v.Y*m.M23 + v.Z*m.M33;
            //
            //			pickRayDirection.Normalize();
            //
            //			pickRayOrigin.X = m.M41;
            //			pickRayOrigin.Y = m.M42;
            //			pickRayOrigin.Z = m.M43;
            //
            //			// calc origin as intersection with near frustum
            //
            //			pickRayOrigin += pickRayDirection * 1.0f;

            //			int zDistance = -1;
            //			IObject3D closestObj = null;

            //			foreach (IObject3D obj in DeviceManager.Instance.ObjectList)
            //			{
            //
            //				// transform world space to object space
            //				Vector3 pickRayOriginTemp = new Vector3(pickRayOrigin.X, pickRayOrigin.Y, pickRayOrigin.Z);
            //				Vector3 pickRayDirectionTemp = new Vector3(pickRayDirection.X,pickRayDirection.Y,pickRayDirection.Z);
            //
            //				// convert ray from 3d space to model space
            //				pickRayOriginTemp.TransformCoordinate(Matrix.Invert(obj.WorldSpace));	//Matrix.Invert(Matrix.Identity));
            //				pickRayDirectionTemp.TransformNormal(Matrix.Invert(obj.WorldSpace));	//inverse);
            //
            //
            //				if (obj.Intersect(pickRayOriginTemp, pickRayDirectionTemp) > zDistance)
            //				{
            //					closestObj = obj;
            //				}
            //			}

            return SceneManager.Instance.Scene.Intersect(pickRayOrigin, pickRayDirection, camera.WorldMatrix);

            //return closestObj;
        }
Exemplo n.º 2
0
 private void EventFactory_DeleteObject(object sender, Midget.Events.Object.MultiObjectEventArgs e)
 {
     DeviceManager.Instance.UpdateViews();
 }
Exemplo n.º 3
0
        private void EventFactory_SelectAdditionalObject(object sender, Midget.Events.Object.SingleObjectEventArgs e)
        {
            selectedObjects.Add(e.Object);

            MidgetTreeNode node = FindNode(e.Object);

            if(node != null)
            {
                treeView.SelectedNode = node;
            }
        }
Exemplo n.º 4
0
 private void EventFactory_CreateObject(object sender, Midget.Events.Object.SingleObjectEventArgs e)
 {
     // add all objects to the scene (treeview)
     treeView.AddNode(new MidgetTreeNode(e.Object), (MidgetTreeNode)treeView.Nodes[0]);
 }
Exemplo n.º 5
0
 private void EventFactory_Transformation(object sender, Midget.Events.Object.MultiObjectEventArgs e)
 {
     FillObjectValues((IObject3D)selectedObjects[selectedObjects.Count - 1]);
 }
Exemplo n.º 6
0
        private void EventFactory_Group(object sender, Midget.Events.Object.Relation.GroupEventArgs e)
        {
            // add the group
            MidgetTreeNode groupNode = new MidgetTreeNode(e.Group);

            treeView.AddNode(groupNode,FindParentNode(groupNode));

            // add all objects to the scene
            foreach(IObject3D obj in e.Objects)
            {
                treeView.MoveNode(FindNode(obj),groupNode);
            }
        }
Exemplo n.º 7
0
        private void EventFactory_SelectAdditionalObject(object sender, Midget.Events.Object.SingleObjectEventArgs e)
        {
            selectedObjects.Add(e.Object);

            // refresh the visible keyframes on the timeline
            pnlTimeline.Invalidate();
        }
Exemplo n.º 8
0
 private void EventFactory_RemoveDynamic(object sender, Midget.Events.Object.Transformation.DynamicEventArgs e)
 {
     propertyGrid.SelectedObject = null;
     FillObjectValues(e.Object);
 }
Exemplo n.º 9
0
 private void EventFactory_DeselectObjects(object sender, Midget.Events.Object.SingleObjectEventArgs e)
 {
     selectedObjects.Remove(e.Object);
     // refresh the visible keyframes on the timeline
     pnlTimeline.Invalidate();
 }
Exemplo n.º 10
0
 private void EventFactory_RemoveKeyFrame(object sender, Midget.Events.Object.Animation.KeyFrameEventArgs e)
 {
     pnlTimeline.Invalidate();
 }
Exemplo n.º 11
0
 private void EventFactory_Transformation(object sender, Midget.Events.Object.MultiObjectEventArgs e)
 {
     DeviceManager.Instance.UpdateViews();
 }
Exemplo n.º 12
0
 private void EventFactory_SelectAdditionalObject(object sender, Midget.Events.Object.SingleObjectEventArgs e)
 {
     selectedObjects.Add(e.Object);
     DeviceManager.Instance.UpdateViews();
 }
Exemplo n.º 13
0
 private void EventFactory_DeselectObjects(object sender, Midget.Events.Object.SingleObjectEventArgs e)
 {
     selectedObjects.Remove(e.Object);
     DeviceManager.Instance.UpdateViews();
 }
Exemplo n.º 14
0
 //////////
 /// TODO: add event handler for any added dynamics
 /// //////
 private void EventFactory_AddDynamic(object sender, Midget.Events.Object.Transformation.DynamicEventArgs e)
 {
     FillObjectValues(e.Object);
 }
Exemplo n.º 15
0
        private void EventFactory_DeselectObjects(object sender, Midget.Events.Object.SingleObjectEventArgs e)
        {
            selectedObjects.Remove(e.Object);

            // if there are objects still selected
            if(selectedObjects.Count != 0)
            {
                LoadMaterial(((IObject3D)selectedObjects[selectedObjects.Count - 1]).Material);
            }
            else
            {
                this.Clear();
            }
        }
Exemplo n.º 16
0
        private void EventFactory_DeselectObjects(object sender, Midget.Events.Object.SingleObjectEventArgs e)
        {
            selectedObjects.Remove(e.Object);

            if(selectedObjects.Count != 0)
            {
                FillObjectValues((IObject3D)selectedObjects[selectedObjects.Count - 1]);
            }
            else
            {
                this.Clear();
            }
        }
Exemplo n.º 17
0
 private void EventFactory_SelectAdditionalObject(object sender, Midget.Events.Object.SingleObjectEventArgs e)
 {
     selectedObjects.Add(e.Object);
     LoadMaterial(e.Object.Material);
 }
Exemplo n.º 18
0
 private void EventFactory_SelectAdditionalObject(object sender, Midget.Events.Object.SingleObjectEventArgs e)
 {
     selectedObjects.Add(e.Object);
     FillObjectValues(e.Object);
 }
Exemplo n.º 19
0
        private void LoadMaterial(Midget.Materials.MidgetMaterial material)
        {
            currentMaterial = material;

            picAmbient.BackColor = (Color)currentMaterial.Ambient;
            picDiffuse.BackColor = (Color)currentMaterial.Diffuse;
            picEmissive.BackColor = (Color)currentMaterial.Emissive;
            picSpecular.BackColor = (Color)currentMaterial.Specular;

            if(currentMaterial.TexturePath.Length != 0)
            {
                picTexture.Image = Image.FromFile(currentMaterial.TexturePath);
            }
        }
Exemplo n.º 20
0
        private void EventFactory_DeselectObjects(object sender, Midget.Events.Object.SingleObjectEventArgs e)
        {
            selectedObjects.Remove(e.Object);

            if(selectedObjects.Count != 0)
            {
                MidgetTreeNode node = FindNode((IObject3D)selectedObjects[selectedObjects.Count - 1]);

                if(node != null)
                {
                    treeView.SelectedNode = node;
                }
            }
        }
Exemplo n.º 21
0
 private void EventFactory_AdjustCameraEvent(object sender, Midget.Events.User.AdjustCameraEventArgs e)
 {
     // if the cameras are equal redraw the view
     if ( camera != null && camera.Equals(e.Camera) )
     {
         this.Render();
     }
 }
Exemplo n.º 22
0
        private void EventFactory_ParentChange(object sender, Midget.Events.Object.Relation.ParentChangeEventArgs e)
        {
            // find the parent node
            MidgetTreeNode newParent = FindNode(e.NewParent);

            // add all objects to the scene
            foreach(IObject3D obj in e.Objects)
            {
                treeView.MoveNode(FindNode(obj),newParent);
            }
        }
Exemplo n.º 23
0
 private void EventFactory_DeselectObjects(object sender, Midget.Events.Object.SingleObjectEventArgs e)
 {
     selectedObjects.Remove(e.Object);
 }
Exemplo n.º 24
0
        private void EventFactory_Ungroup(object sender, Midget.Events.Object.SingleObjectEventArgs e)
        {
            // move each node to new parent
            MidgetTreeNode groupNode = FindNode(e.Object);

            while (groupNode.Nodes.Count != 0)
            {
                MidgetTreeNode obj = (MidgetTreeNode)groupNode.Nodes[0];
                treeView.MoveNode(FindNode(obj.Object3d),(MidgetTreeNode)groupNode.Parent);
            }
        }
Exemplo n.º 25
0
 private void EventFactory_SwitchEditModeEvent(object sender, Midget.Events.User.SwitchEditModeEventArgs e)
 {
     _editMode = e.EditMode;
 }
Exemplo n.º 26
0
        private void EventFactory_DeleteObject(object sender, Midget.Events.Object.MultiObjectEventArgs e)
        {
            foreach(IObject3D obj in e.Objects)
            {
                MidgetTreeNode node = FindNode(obj);

                // if the node hasn't already been deleted
                if(node != null)
                {
                    node.Remove();
                }
            }
        }
Exemplo n.º 27
0
 private void EventFactory_CreateObject(object sender, Midget.Events.Object.SingleObjectEventArgs e)
 {
     DeviceManager.Instance.UpdateViews();
 }