@Override
	public Model getRotatedModel() {
		if (npcDefinition == null)
			return null;
		Model rotatedModel = getChildModel();
		if (rotatedModel == null)
			return null;
		super.height = rotatedModel.modelHeight;
		if (super.graphicId != -1 && super.currentAnimationId != -1) {
			SpotAnimation spotAnimation = SpotAnimation.cache[super.graphicId];
			Model animationModel = spotAnimation.getModel();
			if (animationModel != null) {
				int frameId = spotAnimation.sequences.frame2Ids[super.currentAnimationId];
				Model animatedModel = new Model(true,
						Animation.isNullFrame(frameId), false, animationModel);
				animatedModel.translate(0, -super.graphicHeight, 0);
				animatedModel.createBones();
				animatedModel.applyTransformation(frameId);
				animatedModel.triangleSkin = null;
				animatedModel.vertexSkin = null;
				if (spotAnimation.scaleXY != 128 || spotAnimation.scaleZ != 128)
					animatedModel.scaleT(spotAnimation.scaleXY,
							spotAnimation.scaleXY, spotAnimation.scaleZ);
				animatedModel.applyLighting(
						64 + spotAnimation.modelLightFalloff,
						850 + spotAnimation.modelLightAmbient, -30, -50, -30,
						true);
				Model models[] = { rotatedModel, animatedModel };
				rotatedModel = new Model(models);
			}
		}
		if (npcDefinition.boundaryDimension == 1)
			rotatedModel.singleTile = true;
		return rotatedModel;
	}