public override List<MeshFilter> apply (HighLevelEdge edge)
		{
			List<MeshFilter> meshes = new List<MeshFilter> ();
			Vector3 cornerDimensions = new Vector3 (1.0f, 1.0f, 1.0f);

			// Get from and translate to world space
			Vector3 from = edge.getFrom ().getVertex().getPoint();
			Vector3 to = edge.getTo ().getVertex().getPoint();
			from = parent.TransformPoint (from);
			to = parent.TransformPoint (to);

			// Get direction and translate to world space
			Vector3 direction = edge.getDirection ();
			direction = parent.TransformDirection (direction);
			direction.Normalize ();

			// Set from and to actual center points of the corner
			from = from + Vector3.Scale (edge.getFrom ().getTranslateVector (), cornerDimensions / 2) + Vector3.Scale(direction, cornerDimensions /2);
			to = to + Vector3.Scale (edge.getTo ().getTranslateVector (), cornerDimensions / 2) - Vector3.Scale(direction, cornerDimensions / 2);

			float edgeMagnitude = (to-from).magnitude;

			// These are all world space
			Vector3 dimensions = this.getCellDimensions ();
			Vector3 scale = this.getCellSize();

			Vector3 normal = edge.getNormal ();

			meshes.AddRange(FillCellModule.fillCell (from, to, scale, dimensions, parent, color, normal));

			return meshes;
		}
		public override List<MeshFilter> apply (HighLevelEdge edge)
		{
			List<MeshFilter> meshes = new List<MeshFilter> ();
			Vector3 cornerDimensions = new Vector3 (1.0f, 1.0f, 1.0f);

			// Get points of edge and translate to world space
			Corner cFrom = edge.getFrom();
			Vector3 from = edge.getFrom ().getVertex().getPoint();
			Vector3 to = edge.getTo ().getVertex().getPoint();
			from = parent.TransformPoint (from);
			to = parent.TransformPoint (to);

			// Get other two edges for brick direction
			HighLevelEdge e1 = null, e2 = null;
			foreach (HighLevelEdge e in edge.getFrom().getEdges()) {
				if (e.Equals (edge))
					continue;
				else if (e1 == null) {
					e1 = e;
				} else if (e2 == null) {
					e2 = e;
				} else {
					Debug.Log ("Warning more then 3 edges, likely invalid render");
				}
			}

			if (e2 == null) {
				Debug.Log ("Warning, corner with only one edge found, something went wrong!");
				return meshes;
			}

			// Calculate rotation for the two directions
			Vector3 e1Dir = e1.getDirection(cFrom).normalized;
			Vector3 e2Dir = e2.getDirection(cFrom).normalized;

			Quaternion rotationE1 = Quaternion.FromToRotation(Vector3.forward, e1Dir);
			Quaternion rotationE2 = Quaternion.FromToRotation (Vector3.forward, e2Dir);

			// Get direction and translate to world space
			Vector3 direction = edge.getDirection ();
			direction = parent.TransformDirection (direction);
			float edgeMagnitude = parent.TransformVector (direction).magnitude - cornerDimensions.y * 2;

			direction.Normalize ();

			// Set from and to actual center points of the corner
			from = from + Vector3.Scale (edge.getFrom ().getTranslateVector (), cornerDimensions/2) + Vector3.Scale(direction, cornerDimensions/2);
			to = to + Vector3.Scale (edge.getTo ().getTranslateVector (), cornerDimensions/2) - Vector3.Scale(direction, cornerDimensions/2);

			edgeMagnitude = (to-from).magnitude;

			// These are all world space
			Vector3 dimensions = this.getCellDimensions ();
			Vector3 scale = this.getCellSize();

			// Calculate start position
			Vector3 start = from + direction * dimensions.y / 2;

			// Create each cell
			int maxCount = (int) Mathf.Floor(edgeMagnitude / scale.y) - 1;
			int i = 0;
			bool takeDir1 = direction.y >= 0;

			float stepSize = dimensions.y;

			for (Vector3 p = start; i < maxCount; p += direction * stepSize) {
				Cell c;
				Color finalColor = Color.Lerp (color, Color.black, UnityEngine.Random.value * 0.3f);
				if (takeDir1) {
					c = new Cell (parent, p + (dimensions.z / 2 - cornerDimensions.z / 2) * e1Dir, scale, rotationE1, "CornerEdgeBrick");
				} else {
					c = new Cell (parent, p + (dimensions.z / 2 - cornerDimensions.z / 2) * e2Dir, scale, rotationE2, "CornerEdgeBrick");
				}
				takeDir1 = !takeDir1;
				c.setColor (finalColor);
				i++;
				meshes.Add(c.getCell().GetComponent<MeshFilter>());
			}

			return meshes;
		}