From ac5b3466e784b183b1163714a2338c9577e5896e Mon Sep 17 00:00:00 2001 From: Electroblob77 <35599699+Electroblob77@users.noreply.github.com> Date: Wed, 30 Sep 2020 17:05:57 +0100 Subject: [PATCH] A few little optimisations for PlayerAnimator --- .../client/animation/PlayerAnimator.java | 12 ++++++++---- .../ebwizardry/textures/spells/frost_shield.png | Bin 0 -> 9830 bytes 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/assets/ebwizardry/textures/spells/frost_shield.png diff --git a/src/main/java/electroblob/wizardry/client/animation/PlayerAnimator.java b/src/main/java/electroblob/wizardry/client/animation/PlayerAnimator.java index 217d96eb..84446682 100644 --- a/src/main/java/electroblob/wizardry/client/animation/PlayerAnimator.java +++ b/src/main/java/electroblob/wizardry/client/animation/PlayerAnimator.java @@ -35,6 +35,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * Handles the setup and rendering events for custom player animations, as well as registering of animations. Addons @@ -90,7 +91,8 @@ public class PlayerAnimator { List> layers = (List>)layerRenderers.get(renderer); - playerLayers.put(renderer, layers); + // Save armour layers for lazy-loading later (ignore other layers so iteration is faster) + playerLayers.put(renderer, layers.stream().filter(l -> l instanceof LayerBipedArmor).collect(Collectors.toList())); for(LayerRenderer layer : layers){ @@ -127,11 +129,13 @@ public class PlayerAnimator { for(EntityEquipmentSlot slot : InventoryUtils.ARMOUR_SLOTS){ ItemStack armour = player.getItemStackFromSlot(slot); + // This method could behave dynamically depending on stuff like NBT so there's not really any way to + // optimise it further, we *have* to retrieve the model every time (shouldn't be too bad though) ModelBiped model = ForgeHooksClient.getArmorModel(player, armour, slot, ((LayerBipedArmor)layer).getModelFromSlot(slot)); List models = playerLayerModels.get(renderer); - if(!models.contains(model)){ + if(!models.contains(model)){ // Ignore already-wrapped models models.add(model); ModelRendererExtended.wrap(model); } @@ -143,10 +147,10 @@ public class PlayerAnimator { for(Animation animation : animations){ - boolean autoRotateSecondLayer = animation.autoRotateSecondLayer(player, firstPerson); - if(animation.shouldDisplay(player, firstPerson)){ + boolean autoRotateSecondLayer = animation.autoRotateSecondLayer(player, firstPerson); + flag = true; for(ModelBiped model : playerLayerModels.get(renderer)){ diff --git a/src/main/resources/assets/ebwizardry/textures/spells/frost_shield.png b/src/main/resources/assets/ebwizardry/textures/spells/frost_shield.png new file mode 100644 index 0000000000000000000000000000000000000000..3268d351a906321f0e625714fe117ff35f5ae72f GIT binary patch literal 9830 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 literal 0 HcmV?d00001