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);
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());
renderPony.setPonyModel(playerModel);

View file

@ -1,6 +1,7 @@
package com.minelittlepony.client.model.races;
import com.google.common.collect.Maps;
import com.minelittlepony.client.model.ModelWrapper;
import com.minelittlepony.client.model.entities.ModelSeapony;
import com.minelittlepony.client.render.entities.player.RenderPonyPlayer;
import com.minelittlepony.client.render.entities.player.RenderSeaponyPlayer;
@ -31,7 +32,7 @@ public enum PlayerModels {
SEAPONY(Race.SEAPONY, ModelSeapony::new) {
@Override
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;
}
public <T extends LivingEntity, M extends IModel> M getModel(boolean isSlim) {
return getPendingModel(isSlim).getModel(isSlim);
public <T extends LivingEntity, M extends IModel> ModelWrapper<T, M> getWrappedModel(boolean isSlim) {
return getPendingModel(isSlim).getWrappedModel(isSlim);
}
public String getId(boolean isSlim) {
@ -81,7 +82,7 @@ public enum PlayerModels {
}
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) {
@ -90,7 +91,7 @@ public enum PlayerModels {
private final class PendingModel {
@Nullable
private IModel model;
private ModelWrapper<?, IModel> model;
private final String key;
@ -99,12 +100,12 @@ public enum PlayerModels {
}
@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) {
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);
public RenderPonyPlayer(EntityRenderDispatcher manager, boolean useSmallArms, ClientPonyModel<AbstractClientPlayerEntity> model) {
public RenderPonyPlayer(EntityRenderDispatcher manager, boolean useSmallArms, ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> model) {
super(manager, useSmallArms);
this.model = renderPony.setPonyModel(new ModelWrapper<>(model));
this.model = renderPony.setPonyModel(model);
addLayers();
}

View file

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