this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

minor bugfixes

clover 4b8ea058 32352f6e

+55 -19
+7
CHANGELOG.md
··· 2 2 3 3 All notable changes to this project will be documented in this file. 4 4 5 + ## [0.10.2] - 2025-07-21 6 + 7 + ### Fixed 8 + - (Sprite Editor) Fixed Set Raster commands clearing when duplicated 9 + - Proper asset stack texture handling 10 + - Various minor bugfixes 11 + 5 12 ## [0.10.1] - 2025-04-01 6 13 7 14 ### Fixed
+1 -1
app.properties
··· 1 - version=0.10.1 1 + version=0.10.2
+1 -1
src/main/java/game/map/BoundingBox.java
··· 307 307 308 308 public boolean overlaps(BoundingBox other) 309 309 { 310 - return (min.getX() <= other.max.getX() && other.min.getX() <= max.getY() && 310 + return (min.getX() <= other.max.getX() && other.min.getX() <= max.getX() && 311 311 min.getY() <= other.max.getY() && other.min.getY() <= max.getY() && 312 312 min.getZ() <= other.max.getZ() && other.min.getZ() <= max.getZ()); 313 313 }
+1 -3
src/main/java/game/map/shape/TransformMatrix.java
··· 328 328 double sin = Math.sin(Math.toRadians(angle)); 329 329 double soc = 1.0 - cos; 330 330 331 - //TODO off-diagonal correct? 332 - 333 331 TransformMatrix rot = TransformMatrix.identity(); 334 332 335 333 rot.mat[0][0] = soc * nx * nx + cos; 336 334 rot.mat[0][1] = soc * nx * ny - nz * sin; 337 - rot.mat[0][2] = soc * nx * ny + ny * sin; 335 + rot.mat[0][2] = soc * nx * nz + ny * sin; 338 336 339 337 rot.mat[1][0] = soc * nx * ny + nz * sin; 340 338 rot.mat[1][1] = soc * ny * ny + cos;
+12
src/main/java/game/message/StringConstants.java
··· 617 617 characterMap.add((byte) sc.id, sc.name.charAt(0)); 618 618 } 619 619 620 + // support for mapping macrons --> umlauts 621 + characterMap.add((byte) StandardCharacter.c7A.id, 'ā'); // ä 622 + characterMap.add((byte) StandardCharacter.c7F.id, 'ē'); // ë 623 + characterMap.add((byte) StandardCharacter.c83.id, 'ī'); // ï 624 + characterMap.add((byte) StandardCharacter.c88.id, 'ō'); // ö 625 + characterMap.add((byte) StandardCharacter.c8C.id, 'ū'); // ü 626 + characterMap.add((byte) StandardCharacter.c63.id, 'Ā'); // Ä 627 + characterMap.add((byte) StandardCharacter.c68.id, 'Ē'); // Ë 628 + characterMap.add((byte) StandardCharacter.c6C.id, 'Ī'); // Ï 629 + characterMap.add((byte) StandardCharacter.c71.id, 'Ō'); // Ö 630 + characterMap.add((byte) StandardCharacter.c75.id, 'Ū'); // Ü 631 + 620 632 creditsCharacterMap = new DualHashMap<>(); 621 633 creditsCharacterMap.add((byte) 0x00, 'A'); 622 634 creditsCharacterMap.add((byte) 0x01, 'B');
+5 -1
src/main/java/game/sprite/editor/animators/command/SetImage.java
··· 49 49 // FFF is valid, so sign extend (implicit cast to int) 50 50 int id = (s0 << 20) >> 20; 51 51 52 - if (id < 0 || id >= sprite.rasters.size()) 52 + if (id >= 0 && id < sprite.rasters.size()) { 53 53 imgIndex = id; 54 + // immediate lookup for 'copy/paste' operations. 55 + // loading from XML will also assign this during updateReferences 56 + img = sprite.rasters.get(id); 57 + } 54 58 } 55 59 56 60 public SetImage(CommandAnimator animator, SpriteRaster img)
+7 -1
src/main/java/game/sprite/editor/animators/command/SetPalette.java
··· 11 11 12 12 import app.SwingUtils; 13 13 import common.commands.AbstractCommand; 14 + import game.sprite.Sprite; 14 15 import game.sprite.SpritePalette; 15 16 import game.sprite.editor.CommandComboBox; 16 17 import game.sprite.editor.Editable; ··· 40 41 { 41 42 super(animator); 42 43 44 + Sprite sprite = animator.comp.parentAnimation.parentSprite; 45 + 43 46 // FFF is valid, so sign extend (implicit cast to int) 44 47 int id = (s0 << 20) >> 20; 45 - pal = (id < 0) ? null : animator.comp.parentAnimation.parentSprite.palettes.get(id); 48 + 49 + if (id >= 0 && id < sprite.palettes.size()) { 50 + pal = sprite.palettes.get(id); 51 + } 46 52 } 47 53 48 54 public SetPalette(CommandAnimator animator, SpritePalette pal)
+14 -5
src/main/java/game/texture/Texture.java
··· 10 10 import org.apache.commons.io.FilenameUtils; 11 11 12 12 import app.input.InputFileException; 13 + import assets.AssetHandle; 14 + import assets.AssetManager; 15 + import assets.AssetSubdir; 13 16 import game.texture.TextureArchive.JsonTexture; 14 17 15 18 public class Texture ··· 246 249 public static Texture parseTexture(File source, JsonTexture json) throws IOException 247 250 { 248 251 File dir = source.getParentFile(); 249 - File subdir = new File(dir, FilenameUtils.getBaseName(source.getName())); 252 + String texName = FilenameUtils.getBaseName(source.getName()); 253 + //File subdir = new File(dir, FilenameUtils.getBaseName(source.getName())); 250 254 251 255 Texture tx = new Texture(json.name); 252 256 tx.hWrap = new int[2]; ··· 305 309 throw new InputFileException(source, "(%s) Texture cannot have both mipmaps and aux.", json.name); 306 310 } 307 311 308 - tx.main = Tile.load(subdir + "/" + tx.name + ".png", imgFormat); 312 + AssetHandle mainAsset = AssetManager.get(AssetSubdir.MAP_TEX, texName + "/" + tx.name + ".png"); 309 313 310 - if (tx.hasAux) 311 - tx.aux = Tile.load(subdir + "/" + tx.name + "_AUX.png", auxFormat); 314 + tx.main = Tile.load(mainAsset, imgFormat); 315 + 316 + if (tx.hasAux) { 317 + AssetHandle auxAsset = AssetManager.get(AssetSubdir.MAP_TEX, texName + "/" + tx.name + "_AUX.png"); 318 + tx.aux = Tile.load(auxAsset, auxFormat); 319 + } 312 320 313 321 if (tx.hasMipmaps) { 314 322 int divisor = 2; ··· 321 329 int mmWidth = tx.main.width / divisor; 322 330 323 331 String mmName = tx.name + "_MM" + (tx.mipmapList.size() + 1); 324 - Tile mipmap = Tile.load(subdir + "/" + mmName + ".png", imgFormat); 332 + AssetHandle mmAsset = AssetManager.get(AssetSubdir.MAP_TEX, texName + "/" + mmName + ".png"); 333 + Tile mipmap = Tile.load(mmAsset, imgFormat); 325 334 326 335 if (mipmap.height != mmHeight) 327 336 throw new InputFileException(source, "%s has incorrect height: %s instead of %s", mmName, mipmap.height, mmHeight);
+1 -1
src/main/java/game/texture/editor/ImageEditor.java
··· 891 891 exportFileChooser.setCurrentDirectory(file.getParentFile()); 892 892 super.incrementDialogsOpen(); 893 893 if (exportFileChooser.prompt() == ChooseDialogResult.APPROVE) 894 - chosen = importFileChooser.getSelectedFile(); 894 + chosen = exportFileChooser.getSelectedFile(); 895 895 super.decrementDialogsOpen(); 896 896 897 897 return chosen;
+5
src/main/java/renderer/buffers/BufferedMesh.java
··· 4 4 import static org.lwjgl.opengl.GL15.*; 5 5 import static org.lwjgl.opengl.GL20.glEnableVertexAttribArray; 6 6 import static org.lwjgl.opengl.GL20.glVertexAttribPointer; 7 + import static org.lwjgl.opengl.GL30.glDeleteVertexArrays; 7 8 import static org.lwjgl.opengl.GL30.glGenVertexArrays; 8 9 9 10 import java.nio.FloatBuffer; ··· 271 272 272 273 if (auxVBO != null) 273 274 glDeleteBuffers(auxVBO.id); 275 + 276 + glDeleteVertexArrays(vao); 277 + RenderState.setVAO(0); 278 + vao = -1; 274 279 } 275 280 276 281 public void setVAO()
+1 -6
src/main/java/renderer/shaders/RenderState.java
··· 270 270 glBindVertexArray(rec.glVertexArray); 271 271 } 272 272 273 - public static final void useDefaultVAO() 274 - { 275 - glBindVertexArray(0); 276 - } 277 - 278 273 public static final void setVAO(int vao) 279 274 { 280 275 if (rec.glVertexArray == vao) ··· 551 546 552 547 public static void setBlendFunc(int srcFactor, int destFactor) 553 548 { 554 - if (srcFactor == rec.blendDestFactor && destFactor == rec.blendDestFactor) 549 + if (srcFactor == rec.blendSrcFactor && destFactor == rec.blendDestFactor) 555 550 return; 556 551 557 552 rec.blendSrcFactor = srcFactor;