Ejemplo n.º 1
0
 public void GenerateAdjustCameraEvent(object sender, Midget.Cameras.MidgetCamera camera)
 {
     if (AdjustCameraEvent != null)
     {
         AdjustCameraEvent(sender, new AdjustCameraEventArgs(camera));
     }
 }
Ejemplo n.º 2
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;
        }
Ejemplo n.º 3
0
 public AdjustCameraEventArgs( Midget.Cameras.MidgetCamera camera )
 {
     _camera = camera;
 }
Ejemplo n.º 4
0
 public AdjustCameraEventArgs(Midget.Cameras.MidgetCamera camera)
 {
     _camera = camera;
 }