Example #1
0
        /// <summary>
        /// translates scene so that focusPointS lies on camera forward axis. Also updates
        /// camera.Target to be at this point.
        /// </summary>
        public void PanFocusOnScenePoint(FScene scene, fCamera camera, Vector3f focusPointS)
        {
            Vector3f focusPointW = scene.ToWorldP(focusPointS);

            // figure out the pan that we would apply to camera, then apply the delta to the scene
            Vector3f camPosW    = camera.GetPosition();
            Vector3f camForward = camera.Forward();
            float    fDist      = Vector3.Dot((focusPointW - camPosW), camForward);

            if (fDist == 0)
            {
                fDist = 2.0f * ((Camera)camera).nearClipPlane;
            }
            Vector3f newCamPosW = focusPointW - fDist * camForward;
            Vector3f delta      = camPosW - newCamPosW;

            scene.RootGameObject.Translate(delta, false);
            camera.SetTarget(focusPointW + delta);
        }
Example #2
0
        public void ScenePanFocus(FScene scene, fCamera camera, Vector3f focusPointW, bool bAnimated)
        {
            CameraAnimator animator = camera.Animator();

            if (bAnimated == false || animator == null)
            {
                // figure out the pan that we would apply to camera, then apply the delta to the scene
                Vector3f camPosW    = camera.GetPosition();
                Vector3f camForward = camera.Forward();
                float    fDist      = Vector3.Dot((focusPointW - camPosW), camForward);
                Vector3f newCamPosW = focusPointW - fDist * camForward;
                Vector3f delta      = camPosW - newCamPosW;

                scene.RootGameObject.Translate(delta, false);
                camera.SetTarget(focusPointW + delta);
            }
            else
            {
                animator.PanFocus(focusPointW);
            }
        }
Example #3
0
        public override void PreRender()
        {
            fCamera  cam         = Parent.Context.ActiveCamera;
            float    zNear       = 2 * cam.NearClipPlane;
            Vector3f forwardW    = cam.Forward();
            Vector3f gridCenterW = cam.GetPosition() + zNear * forwardW;

            Vector3f inCenterW = (Parent as FScene).ToWorldP(Center);

            //Vector3f gridDirS = (Parent as FScene).ToSceneN(forwardW);

            //Frame3f gridFrame = new Frame3f(gridCenter, gridDir);
            //Frame3f gridFrame = new Frame3f(Center, gridDirS);

            //Frame3f gridFrameW = new Frame3f(inCenterW, forwardW);
            Frame3f gridFrameW = new Frame3f(gridCenterW, forwardW);

            RootGameObject.SetWorldFrame(gridFrameW);

            if (grids_valid == false)
            {
                update_grids();
            }
        }