Esempio n. 1
0
        protected override bool FrameEnded(FrameEvent e)
        {
            if (!base.FrameEnded(e))
            {
                return(false);
            }

            SetDebugCaption(0, string.Format("Camera Location: ({0}, {1}, {2}) ",
                                             mCamera.GetPosition().x, mCamera.GetPosition().y, mCamera.GetPosition().z));

            SetDebugCaption(1, string.Format("Camera Orientation: ({0}, {1}, {2}, {3}) ",
                                             mCamera.GetOrientation().x, mCamera.GetOrientation().y, mCamera.GetOrientation().z, mCamera.GetOrientation().w));


            Vector3 p = mCamera.GetPosition();

            p.y = 3000.0f;
            mRay.setOrigin(p);
            SetDebugCaption(2, string.Format("  ray at : ({0}, {1}, {2}) ", mRay.getOrigin().x, mRay.getOrigin().y, mRay.getOrigin().z));
            SetDebugCaption(3, "");
            mRaySceneQuery.setRay(mRay);
            RaySceneQueryResult qryResult = mRaySceneQuery.execute();

            if (qryResult.Count > 0)
            {
                float newY = -999.0f;
                foreach (RaySceneQueryResultEntry qryEntry in qryResult)
                {
                    if (newY < qryEntry.distance)
                    {
                        newY = qryEntry.distance;
                    }
                }
                if (newY != -999.0f)
                {
                    newY = 3000.0f - newY;
                    p    = mCamera.GetPosition();
                    p.y  = newY + 5.0f;
                    mCamera.SetPosition(p.x, p.y, p.z);
                    SetDebugCaption(3, string.Format("  intersect at : ({0}, {1}, {2}) ", p.x, p.y, p.z));
                }
            }
            return(true);
        }