Fixed performance issues on the skins gui

This commit is contained in:
Sollace 2019-05-29 13:05:10 +02:00
parent f8ab94f519
commit 9e40c6313d
4 changed files with 16 additions and 15 deletions

View file

@ -62,7 +62,7 @@ public class RenderDummyPony extends RenderDummyPlayer<DummyPony, ClientPonyMode
boolean canWet = playermodel.wet && (loc == playermodel.getTextures().getBlankSkin(Type.SKIN) || race == Race.SEAPONY); boolean canWet = playermodel.wet && (loc == playermodel.getTextures().getBlankSkin(Type.SKIN) || race == Race.SEAPONY);
playerModel = new ModelWrapper<>(canWet ? PlayerModels.SEAPONY.getModel(slim) : PlayerModels.forRace(thePony.getRace(true)).getModel(slim)); playerModel = canWet ? PlayerModels.SEAPONY.getWrappedModel(slim) : PlayerModels.forRace(thePony.getRace(true)).getWrappedModel(slim);
playerModel.apply(thePony.getMetadata()); playerModel.apply(thePony.getMetadata());
renderPony.setPonyModel(playerModel); renderPony.setPonyModel(playerModel);

View file

@ -1,6 +1,7 @@
package com.minelittlepony.client.model.races; package com.minelittlepony.client.model.races;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.minelittlepony.client.model.ModelWrapper;
import com.minelittlepony.client.model.entities.ModelSeapony; import com.minelittlepony.client.model.entities.ModelSeapony;
import com.minelittlepony.client.render.entities.player.RenderPonyPlayer; import com.minelittlepony.client.render.entities.player.RenderPonyPlayer;
import com.minelittlepony.client.render.entities.player.RenderSeaponyPlayer; import com.minelittlepony.client.render.entities.player.RenderSeaponyPlayer;
@ -31,7 +32,7 @@ public enum PlayerModels {
SEAPONY(Race.SEAPONY, ModelSeapony::new) { SEAPONY(Race.SEAPONY, ModelSeapony::new) {
@Override @Override
public RenderPonyPlayer createRenderer(EntityRenderDispatcher manager, boolean slimArms) { public RenderPonyPlayer createRenderer(EntityRenderDispatcher manager, boolean slimArms) {
return new RenderSeaponyPlayer(manager, slimArms, PlayerModels.UNICORN.getModel(slimArms), getModel(slimArms)); return new RenderSeaponyPlayer(manager, slimArms, PlayerModels.UNICORN.getWrappedModel(slimArms), getWrappedModel(slimArms));
} }
}; };
@ -72,8 +73,8 @@ public enum PlayerModels {
return isSlim ? slim : normal; return isSlim ? slim : normal;
} }
public <T extends LivingEntity, M extends IModel> M getModel(boolean isSlim) { public <T extends LivingEntity, M extends IModel> ModelWrapper<T, M> getWrappedModel(boolean isSlim) {
return getPendingModel(isSlim).getModel(isSlim); return getPendingModel(isSlim).getWrappedModel(isSlim);
} }
public String getId(boolean isSlim) { public String getId(boolean isSlim) {
@ -81,7 +82,7 @@ public enum PlayerModels {
} }
public RenderPonyPlayer createRenderer(EntityRenderDispatcher manager, boolean slimArms) { public RenderPonyPlayer createRenderer(EntityRenderDispatcher manager, boolean slimArms) {
return new RenderPonyPlayer(manager, slimArms, getModel(slimArms)); return new RenderPonyPlayer(manager, slimArms, getWrappedModel(slimArms));
} }
public static PlayerModels forRace(Race race) { public static PlayerModels forRace(Race race) {
@ -90,7 +91,7 @@ public enum PlayerModels {
private final class PendingModel { private final class PendingModel {
@Nullable @Nullable
private IModel model; private ModelWrapper<?, IModel> model;
private final String key; private final String key;
@ -99,12 +100,12 @@ public enum PlayerModels {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <T extends LivingEntity, M extends IModel> M getModel(boolean isSlim) { public <T extends LivingEntity, M extends IModel> ModelWrapper<T, M> getWrappedModel(boolean isSlim) {
if (model == null) { if (model == null) {
model = resolver.apply(isSlim); model = new ModelWrapper<>(resolver.apply(isSlim));
} }
return (M)model; return (ModelWrapper<T, M>)model;
} }
} }
} }

View file

@ -36,10 +36,10 @@ public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRende
protected final RenderPony<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> renderPony = new RenderPony<>(this); protected final RenderPony<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> renderPony = new RenderPony<>(this);
public RenderPonyPlayer(EntityRenderDispatcher manager, boolean useSmallArms, ClientPonyModel<AbstractClientPlayerEntity> model) { public RenderPonyPlayer(EntityRenderDispatcher manager, boolean useSmallArms, ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> model) {
super(manager, useSmallArms); super(manager, useSmallArms);
this.model = renderPony.setPonyModel(new ModelWrapper<>(model)); this.model = renderPony.setPonyModel(model);
addLayers(); addLayers();
} }

View file

@ -15,12 +15,12 @@ public class RenderSeaponyPlayer extends RenderPonyPlayer {
protected final ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> normalPony; protected final ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> normalPony;
public RenderSeaponyPlayer(EntityRenderDispatcher manager, boolean useSmallArms, public RenderSeaponyPlayer(EntityRenderDispatcher manager, boolean useSmallArms,
ClientPonyModel<AbstractClientPlayerEntity> model, ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> model,
ClientPonyModel<AbstractClientPlayerEntity> alternate) { ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> alternate) {
super(manager, useSmallArms, model); super(manager, useSmallArms, model);
seapony = new ModelWrapper<>(alternate); seapony = alternate;
normalPony = new ModelWrapper<>(model); normalPony = model;
} }
@Override @Override