@Override
	public void processEntity(Entity entity) {
		// Get the entity's currently spatial
		Spatial parentSpatialComponent = entity.getComponent(Spatial.class, true);
		// Get all of the child entities and update their position relative
		// to the 'parent' entity
		Children childrenComponent = entity.getComponent(Children.class);
		// Get the list of entities that are children
		// List<Entity> chilrenEntities = childrenComponent.children
		for (Entity child : childrenComponent.children) {
			// Get the actual X,Y location so that we can update it
			Spatial childSpatialActual = child.getComponent(Spatial.class);
			// Get the 'childSpatial', this is so we know where the child
			// originally wanted to be drawn relatively to the parent, so we can
			// use this to update the spatial correctly
			ChildSpatial childSpatialRelative = child.getComponent(ChildSpatial.class);

			// if the child's spatial is null, it means it hasn't been set yet,
			// and that we should create its stored 'relative' spatial. There's
			// better ways to do this obviously, but it's not important in the
			// grand scheme of things.
			if (childSpatialRelative.spatial == null) {
				childSpatialRelative.spatial = new Spatial(childSpatialActual.x, childSpatialActual.y,
						childSpatialActual.width, childSpatialActual.height);
			}

			childSpatialActual.x = parentSpatialComponent.x + childSpatialRelative.spatial.x;
			childSpatialActual.y = parentSpatialComponent.y + childSpatialRelative.spatial.y;
			// If this child entity relies on the parent's rotation, change the
			// entity's actual spatial
			if (childSpatialRelative.rotateWithParent) {
				childSpatialActual.setRotation(parentSpatialComponent.getRotation());
			}
		}
	}