From 102012aa911791fb17cca57d169134b5b2c19361 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Thu, 15 Dec 2011 14:58:25 +0800 Subject: [PATCH] Detect scaled models that yield full blocks, and optimize to solid --- .../java/org/dynmap/hdmap/HDBlockModels.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/dynmap/hdmap/HDBlockModels.java b/src/main/java/org/dynmap/hdmap/HDBlockModels.java index 3a929f4b..7094ff1f 100644 --- a/src/main/java/org/dynmap/hdmap/HDBlockModels.java +++ b/src/main/java/org/dynmap/hdmap/HDBlockModels.java @@ -264,11 +264,19 @@ public class HDBlockModels { row = new short[16][]; blockmodels[m.blockid] = row; } - short[] smod = null; - for(int i = 0; i < 16; i++) { - if((m.databits & (1 << i)) != 0) { - if(smod == null) smod = m.getScaledMap(scale); - row[i] = smod; + short[] smod = m.getScaledMap(scale); + /* See if scaled model is full block : much faster to not use it if it is */ + if(smod != null) { + boolean keep = false; + for(int i = 0; (!keep) && (i < smod.length); i++) { + if(smod[i] == 0) keep = true; + } + if(keep) { + for(int i = 0; i < 16; i++) { + if((m.databits & (1 << i)) != 0) { + row[i] = smod; + } + } } } }