diff --git a/src/main/java/speiger/src/coreengine/assets/language/Language.java b/src/main/java/speiger/src/coreengine/assets/language/Language.java index 4a8ac83..27870b3 100644 --- a/src/main/java/speiger/src/coreengine/assets/language/Language.java +++ b/src/main/java/speiger/src/coreengine/assets/language/Language.java @@ -33,8 +33,7 @@ public class Language public String translate(String key) { - String result = translations.get(key); - return result == null ? key : result; + return translations.getOrDefault(key, key); } public String translate(String key, Object...args) diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/helper/animations/Animation.java b/src/main/java/speiger/src/coreengine/rendering/gui/helper/animations/Animation.java index 5198d4a..ad0d2e5 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/helper/animations/Animation.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/helper/animations/Animation.java @@ -9,7 +9,7 @@ import speiger.src.coreengine.rendering.gui.helper.animations.transitions.ITrans public class Animation { - Object2ObjectMap transitions = new Object2ObjectLinkedOpenHashMap(); + Object2ObjectMap transitions = new Object2ObjectLinkedOpenHashMap<>(); AnimationListener listener; float duration = 0F; @@ -28,7 +28,7 @@ public class Animation public AnimationInstance createInstance(GuiComponent comp, AnimationInstance old, float delay, boolean reverse) { - Object2ObjectMap values = new Object2ObjectLinkedOpenHashMap(); + Object2ObjectMap values = new Object2ObjectLinkedOpenHashMap<>(); for(Object2ObjectMap.Entry entry : Object2ObjectMaps.fastIterable(transitions)) { AnimationTarget target = entry.getKey(); diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/helper/animations/Animator.java b/src/main/java/speiger/src/coreengine/rendering/gui/helper/animations/Animator.java index 27f278d..a2b3808 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/helper/animations/Animator.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/helper/animations/Animator.java @@ -46,12 +46,9 @@ public class Animator public void update(float particalTicks) { - if(listeners.size() > 0) + for(int i = 0,m=listeners.size();i data, int offset, int size) + public void putIntoBuffer(ByteBuffer buffer, JsonList list, int offset, int stride, int size) { - for(int i = 0;i entries, boolean excludeOptional) { - List numbers = parseVertexData(obj, entries, excludeOptional); - ByteBuffer buffer = ByteBuffer.allocate(vertexCount * VertexEntry.caculateByteSize(entries, excludeOptional)).order(ByteOrder.nativeOrder()); - for(int i = 0,offset=0,m=vertexCount*entries.size();i parseVertexData(JsonObject obj, List entries, boolean excludeOptional) - { + int byteStride = VertexEntry.caculateByteSize(entries, excludeOptional); + JsonArray vertexes = obj.getAsJsonArray("vertexes"); + ByteBuffer buffer = ByteBuffer.allocate(vertexCount * byteStride).order(ByteOrder.nativeOrder()); int stride = VertexEntry.caclulateStride(entries); - int outStride = excludeOptional ? VertexEntry.calculateNonOptionalStride(entries) : stride; - int[] vertexes = JsonUtil.parseIntArray(obj.getAsJsonArray("vertexes")); - Number[] data = new Number[excludeOptional ? (vertexes.length / stride) * outStride : vertexes.length]; - for(int i = 0,inOff=0,outOff=0,m=entries.size();i> parseMappedVertexData(JsonObject obj, List entries, boolean excludeOptional) @@ -66,14 +54,6 @@ public class VertexLoader return mappedData; } - public static void deserializeIndecies(int[] indecies, T[] in, int size, int stride, int offset, T[] out, int outStride, int outOffset) - { - for(int i = 0,m=(indecies.length/stride)*size;i List deserializeIndecies(int[] indecies, T[] in, int size, int stride, int offset) { List out = new ObjectArrayList<>(); @@ -83,4 +63,43 @@ public class VertexLoader } return out; } + + public static interface JsonList + { + public JsonElement get(int index); + public int size(); + } + + private static class JsonWrapper implements JsonList + { + JsonArray array; + JsonArray vertexes; + int offset; + int size; + int stride; + int max; + + public JsonWrapper(JsonArray vertexes, JsonArray array, int offset, int stride, int size, int max) + { + this.array = array; + this.vertexes = vertexes; + this.offset = offset; + this.size = size; + this.stride = stride; + this.max = max; + } + + @Override + public int size() + { + return max; + } + + @Override + public JsonElement get(int index) + { + return array.get(vertexes.get(offset + ((index/size) * stride) + (index % size)).getAsInt()); + } + + } } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java index eeb8d6d..95ccb76 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java @@ -13,7 +13,7 @@ import speiger.src.coreengine.assets.reloader.IReloadableResource; public class ShaderTracker implements IReloadableResource { public static final ShaderTracker INSTANCE = new ShaderTracker(); - List> programs = new ObjectArrayList>(); + List> programs = new ObjectArrayList<>(); int activeShader = 0; boolean reloading = false; AssetManager assets; @@ -27,8 +27,7 @@ public class ShaderTracker implements IReloadableResource { T result = creator.get(); result.init(); - ReloadReference reference = new ReloadReference<>(result, creator, reloader); - programs.add(reference); + programs.add(new ReloadReference<>(result, creator, reloader)); return result; } diff --git a/src/main/java/speiger/src/coreengine/utils/eventbus/Listeners.java b/src/main/java/speiger/src/coreengine/utils/eventbus/Listeners.java index 4f343b4..52ac58e 100644 --- a/src/main/java/speiger/src/coreengine/utils/eventbus/Listeners.java +++ b/src/main/java/speiger/src/coreengine/utils/eventbus/Listeners.java @@ -19,7 +19,7 @@ public class Listeners { for(int i = 0;i>(); + unsortedListeners[i] = new ObjectLinkedOpenHashSet<>(); } } @@ -46,18 +46,13 @@ public class Listeners public void removeListeners(Consumer listener) { - boolean found = false; for(int i = 0,m=unsortedListeners.length;i> events) @@ -77,6 +72,7 @@ public class Listeners private void markDirty() { + if(rebuild) return; rebuild = true; if(childs != null) {