public void update(Node rootNode, Camera cam, Nifty nifty, HashMap<String, StreetInfo> streetInfoMap){      
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
        currentTime = sdf.format(cal.getTime());
        
        Ray ray;
        
        CollisionResults results = new CollisionResults();

        ray = new Ray(cam.getLocation(), new Vector3f(0, -1, 0));
 
        rootNode.getChild("World").collideWith(ray, results);

        if (results.size() > 0 && results.getClosestCollision().getDistance() < 500){
            String roadObj = results.getClosestCollision().getGeometry().getParent().getName();
            float roadDirection[] = results.getClosestCollision().getGeometry().getParent().getLocalRotation().toAngles(null);
            //System.out.println(roadDirection[0] + " " + roadDirection[1] + " " + roadDirection[2]);
            roadDirection[0] += FastMath.PI / 2f;

            /** BEGIN TEMPORARY DIRECTION CODE**/          
            Vector3f roadDir = new Quaternion().fromAngles(roadDirection).getRotationColumn(0),
                     oppositeRoadDir = roadDir.negate(),
                     camDir = cam.getDirection();
            /*System.out.println(roadDir);
            System.out.println(camDir);
            float temp = camDir.getX();
            camDir.setX(camDir.getZ());
            camDir.setZ(temp);*/
            
            
            if (camDir.distance(oppositeRoadDir) < camDir.distance(roadDir)) {
                onRoad = false;
            }
            else {
                onRoad = true;
            }         
            /** END TEMPORARY DIRECTION CODE**/
            
            if (streetInfoMap.get(roadObj) != null){
                currentStreet = streetInfoMap.get(roadObj).getStreetName();
                if (onRoad) {
                    nextStreet = "Next: " + streetInfoMap.get(roadObj).getNextStreetName();
                }
                else {
                    nextStreet = "Next: " + streetInfoMap.get(roadObj).getPrevStreetName();
                }               
            } else {
                currentStreet = nextStreet = "";
            }
            

            /*if (!nifty.getCurrentScreen().isNull() && nifty.getCurrentScreen().getScreenId().equals("hud")){           
                nifty.getCurrentScreen().findNiftyControl("currentStreet", Label.class).setText(currentStreet);
                
                nifty.getCurrentScreen().findNiftyControl("currentTime", Label.class).setText(currentTime);
            }*/
        }
        else{
            currentStreet = "";
            nextStreet = "";
        }
        
        if (nifty.getCurrentScreen() != null && nifty.getCurrentScreen().getScreenId().equals("hud")){           
            nifty.getCurrentScreen().findNiftyControl("currentStreet", Label.class).setText(currentStreet);
            nifty.getCurrentScreen().findNiftyControl("nextStreet", Label.class).setText(nextStreet);
            nifty.getCurrentScreen().findNiftyControl("currentSpeedKPH", Label.class).setText("");                
            nifty.getCurrentScreen().findNiftyControl("currentTime", Label.class).setText(currentTime);
        }   
    }