@Override
	public void render(int glMode) {
		final Vect3D pos = movableEntity.getPos();
		final Vect3D speed = movableEntity.getSpeed();

		GL11.glTranslatef(pos.x, pos.y, pos.z);
		if (Model.getModel().getUiContext().isDebugMode()) {
			speed.render(glMode);
			GL11.glColor3f(1, 0, 0);
			desiredVelocity.render(glMode);
			GL11.glTranslated(desiredVelocity.x, desiredVelocity.y, 0);
			GL11.glColor3f(0, 0, 1);
			steeringForce.render(glMode);
			GL11.glTranslated(-desiredVelocity.x, -desiredVelocity.y, 0);
			GL11.glColor3f(0, 1, 0);
			speedOpposition.render(glMode);
		}
		GL11.glTranslatef(-pos.x, -pos.y, -pos.z);

		if (movableEntity instanceof Ship && movableEntity.isSelected() || movableEntity instanceof Planet) {
			// Show target
			GL11.glTranslatef(target.x, target.y, 0);

			float zoomFactor = Model.getModel().getViewport().getZoomFactor();
			GL11.glScalef(1f / zoomFactor, 1f / zoomFactor, 1);
			TextureImpl.bindNone();
			GL11.glBegin(GL11.GL_QUADS);
			GL11.glVertex2f(-3, -3);
			GL11.glVertex2f(3, -3);
			GL11.glVertex2f(3, 3);
			GL11.glVertex2f(-3, 3);
			GL11.glEnd();

			// render limit of effect zone
			GL11.glBegin(GL11.GL_LINES);
			float t = 0; // temporary data holder
			float x = 15; // radius
			float y = 0;
			for (int i = 0; i < nbSegments; i++) {
				GL11.glColor4d(1, 1, 1, 0.15);
				GL11.glVertex2d(x, y);

				t = x;
				x = cos * x - sin * y;
				y = sin * t + cos * y;

				GL11.glVertex2d(x, y);
			}
			GL11.glEnd();

			if (Model.getModel().getUiContext().isDebugMode()) {
				// render limit of effect zone
				GL11.glBegin(GL11.GL_LINES);
				t = 0; // temporary data holder
				x = slowingDistance; // radius
				y = 0;
				for (int i = 0; i < nbSegments; i++) {
					GL11.glColor4d(1, 0, 0, 0.15);
					GL11.glVertex2d(x, y);

					t = x;
					x = cos * x - sin * y;
					y = sin * t + cos * y;

					GL11.glVertex2d(x, y);
				}
				GL11.glEnd();
			}

			GL11.glScalef(zoomFactor, zoomFactor, 1);
			GL11.glTranslatef(-target.x, -target.y, 0);
		}
	}