public void update(double delta) {
		frameCount++;
		if(frameCount >= program.framerate) {
			secondFlash = !secondFlash;
			frameCount = 0;
			
		}
		
		//Camera Zoom
		canvas.camera.zoom(Input.getMouseScroll() / 10.0);
		if(canvas.camera.getScale() < maxZoom) canvas.camera.setScale(maxZoom);
		if(canvas.camera.getScale() > minZoom) canvas.camera.setScale(minZoom);
		
		//Camera movement
		if(Input.getMouse(Input.MOUSE_MIDDLE)) {
			Point p = Input.getMousePosition();
			int x = p.x - mouseLastPosition.x;
			int y = p.y - mouseLastPosition.y;
			canvas.camera.translate(x, y);
		}
		
		//Cycle between people
		if(Input.getKeyDown(KeyEvent.VK_C)) {
			cameraCyclePeople();
		}
		
		//Debug Mode
		program.stats.setEnabled(Input.getKey(KeyEvent.VK_F3));
		
		for(Person person : people) 
			person.update(delta);
		
		village.update(delta);
		
		if(System.nanoTime() - tickStart >= tickRate * 1e9) {
			tickStart = System.nanoTime();
			tick();
		}
		
		
		mouseLastPosition = Input.getMousePosition();	
	}