缓存无人机渲染的挂载实体
This commit is contained in:
parent
21dc782fb7
commit
4014507e41
1 changed files with 29 additions and 17 deletions
|
@ -112,22 +112,35 @@ public class DroneRenderer extends GeoEntityRenderer<DroneEntity> {
|
||||||
poseStack.popPose();
|
poseStack.popPose();
|
||||||
}
|
}
|
||||||
|
|
||||||
renderAttachments(entityIn, player, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
|
renderAttachments(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
poseStack.popPose();
|
poseStack.popPose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String entityNameCache = "";
|
||||||
|
private Entity entityCache = null;
|
||||||
|
|
||||||
// 统一渲染挂载实体
|
// 统一渲染挂载实体
|
||||||
private void renderAttachments(DroneEntity entity, Player player, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource buffer, int packedLight) {
|
private void renderAttachments(DroneEntity entity, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource buffer, int packedLight) {
|
||||||
var attached = entity.getEntityData().get(ATTACHED_ENTITY);
|
var attached = entity.getEntityData().get(ATTACHED_ENTITY);
|
||||||
if (attached.isEmpty()) return;
|
if (attached.isEmpty()) return;
|
||||||
|
|
||||||
EntityType.byString(attached).ifPresent(entityType -> {
|
Entity renderEntity;
|
||||||
var renderEntity = entityType.create(entity.level());
|
|
||||||
|
if (entityNameCache.equals(attached) && entityCache != null) {
|
||||||
|
renderEntity = entityCache;
|
||||||
|
} else {
|
||||||
|
renderEntity = EntityType.byString(attached)
|
||||||
|
.map(type -> type.create(entity.level()))
|
||||||
|
.orElse(null);
|
||||||
if (renderEntity == null) return;
|
if (renderEntity == null) return;
|
||||||
|
|
||||||
|
entityNameCache = attached;
|
||||||
|
entityCache = renderEntity;
|
||||||
|
}
|
||||||
|
|
||||||
var displayData = entity.getEntityData().get(ATTACHMENT_DISPLAY);
|
var displayData = entity.getEntityData().get(ATTACHMENT_DISPLAY);
|
||||||
|
|
||||||
var scale = new float[]{displayData.get(0), displayData.get(1), displayData.get(2)};
|
var scale = new float[]{displayData.get(0), displayData.get(1), displayData.get(2)};
|
||||||
|
@ -144,7 +157,6 @@ public class DroneRenderer extends GeoEntityRenderer<DroneEntity> {
|
||||||
entityRenderDispatcher.render(renderEntity, 0, 0, 0, entityYaw, partialTicks, poseStack, buffer, packedLight);
|
entityRenderDispatcher.render(renderEntity, 0, 0, 0, entityYaw, partialTicks, poseStack, buffer, packedLight);
|
||||||
|
|
||||||
poseStack.popPose();
|
poseStack.popPose();
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Add table
Reference in a new issue