/// <summary>
        /// Actualizar colisiones y camara
        /// </summary>
        /// <returns>Nueva posicion de la camara</returns>
        public Vector3 update()
        {
            Device device      = GuiController.Instance.D3dDevice;
            float  elapsedTime = GuiController.Instance.ElapsedTime;

            camera.updateCamera();

            //Capturar eventos de algunas teclas

            //Jump
            if (GuiController.Instance.D3dInput.keyPressed(Microsoft.DirectX.DirectInput.Key.Space))
            {
                //Salta si esta en el piso
                if (onGround)
                {
                    //Vector3 velocity = GuiController.Instance.FpsCamera.Velocity;
                    velocidad.Y = jumpSpeed;
                }
            }


            time += elapsedTime;
            Vector3 camPos    = camera.getPosition();
            Vector3 camLookAt = camera.getLookAt();

            /*
             * if (noClip)
             *  camera.JumpSpeed = 100.0f;
             * else
             *  camera.JumpSpeed = 0f;
             */

            //Detecto las colisiones
            if (!firstTime && !noClip)
            {
                Vector3 lookDir = camLookAt - camPos;

                //aplico la velocidad
                Vector3 aceleracion = new Vector3(0, -gravity, 0);

                //aplico la gravedad
                velocidad = velocidad + elapsedTime * aceleracion;

                camPos    = camPos + velocidad * elapsedTime;
                camPos.Y -= kEpsilon * 1.5f;

                //aplico las colisiones
                //traceType = TYPE_SPHERE;

                //camPos = TraceSphere(antCamPos, camPos, 25.0f);
                camPos = TraceBox(antCamPos, camPos, playerBB.PMin, playerBB.PMax);

                //dist
                if (bCollided)
                {
                    //float dist = Vector3.Dot(vCollisionNormal, velocidad);
                    //velocidad = velocidad - vCollisionNormal*dist;
                }


                // actualizo la posicion de la camara
                //Camara.setCamera(camPos, camPos + lookDir);
                camera.move(camPos - camera.getPosition());

                if (!OnGround)
                {
                    //Vector3 aceleracion = new Vector3(0, -9.8f, 0);
                    //aplico la gravidad
                    //velocidad = velocidad + elapsedTime*aceleracion;
                }
                else
                {
                    if (velocidad.Y < 0)
                    {
                        velocidad.Y = 0;
                    }
                }
            }

            antCamPos = camPos;
            firstTime = false;

            return(camPos);
        }