public void tick(double secondsPassed)
			{
				if (reset)
					{
						plantsAddedByUser.clear();
						plantsToAdd.clear();
						plants.clear();
						filters.clear();
						lightMap = new LightMap((int) simWidth, 550);
						lightImage = new BufferedImage(800, 550, BufferedImage.TYPE_INT_RGB);

						reset = false;
					}

				if (addFilter)
					{
						Color filterColour = ColTools.checkColour((int) Hub.simWindow.filterRedLightSlider.getValue(), (int) Hub.simWindow.filterGreenLightSlider.getValue(),
								(int) Hub.simWindow.filterBlueLightSlider.getValue());
						LightFilter newFilter = new LightFilter((int) -simX + 5, 250, (int) Hub.simWindow.filterWidthSlider.getValue(), filterColour);
						filters.add(newFilter);
						addFilter = false;

						lightMap.addShadow(newFilter.x, newFilter.y, newFilter.width, newFilter.shadowColour);
						if (showLighting)
							updateLighting();
					}

				for (int i = 0; i < filters.size();)
					{
						LightFilter f = filters.get(i);

						if (f.movedTo != null)
							{
								lightMap.removeShadow(f.x, f.y, f.width, f.shadowColour);
								f.moved();
								lightMap.addShadow(f.x, f.y, f.width, f.shadowColour);

								if (showLighting)
									updateLighting();
							}
						if (!f.exists)
							{
								lightMap.removeShadow(f.x, f.y, f.width, f.shadowColour);
								filters.remove(i);
							}
						else
							i++;
					}

				timePassed += secondsPassed;
				if (timePassed > 0.03)
					{
						timePassed = 0;
						rendered = false;
					}

				secondsPassed *= Hub.simWindow.playbackSpeed.getValue();

				// Cap secondsPassed to stop strange things happening at low
				// frame-rates
				if (secondsPassed > 0.2)
					secondsPassed = 0.2;

				for (int i = 0; i < Hub.simWindow.warpSpeedSlider.getValue(); i++)
					{
						//----------------------------------
						/*REALLY SUPER SLOW*/
						if (showLighting)
							updateLighting();
						/*REALLY SUPER SLOW*/
						//----------------------------------
						
						// Add new seedlings to Array
						for (Point p : plantsAddedByUser)
							plants.add(new Plant(currentGenes, (int) p.getX()));
						plantsAddedByUser.clear();
						// Add new seedlings to Array
						for (Plant p : plantsToAdd)
							plants.add(new Plant(p, p.plantX));
						plantsToAdd.clear();
						// Remove dead plants
						for (int p = 0; p < plants.size(); p++)
							if (plants.get(p).alive == false)
								plants.remove(p);
						for (Plant p : plants)
							p.tick(secondsPassed);
					}
			}