From 31110b9e9cd90e02f5b850ff2720f80098619731 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 23 May 2026 15:16:41 +0000 Subject: [PATCH 1/3] Initial plan From b54d36f283e0e5ce510b3851e0d54e9735e17d60 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 23 May 2026 15:20:40 +0000 Subject: [PATCH 2/3] Remove AWT dependencies from jme3-terrain ShaderUtils - Remove mix(java.awt.Color, java.awt.Color, float) method (unused, AWT-dependent) - Remove getImageDataFromImage(BufferedImage) method (unused, AWT-dependent) - Remove all java.awt.* and related java.nio imports that were only used by those methods Agent-Logs-Url: https://github.com/jMonkeyEngine/jmonkeyengine/sessions/8296ad20-a298-49e4-aeb5-aae4f42c13fb Co-authored-by: riccardobl <4943530+riccardobl@users.noreply.github.com> --- .../com/jme3/terrain/noise/ShaderUtils.java | 37 ------------------- 1 file changed, 37 deletions(-) diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java b/jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java index 84aa59a4ee..65405541ce 100644 --- a/jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java +++ b/jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java @@ -29,15 +29,6 @@ */ package com.jme3.terrain.noise; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.image.BufferedImage; -import java.awt.image.DataBuffer; -import java.awt.image.DataBufferInt; -import java.awt.image.WritableRaster; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; - /** * Helper class containing useful functions explained in the book: * Texturing & Modeling - A Procedural Approach @@ -66,12 +57,6 @@ public static final float mix(final float a, final float b, final float f) { return (1 - f) * a + f * b; } - public static final Color mix(final Color a, final Color b, final float f) { - return new Color((int) ShaderUtils.clamp(ShaderUtils.mix(a.getRed(), b.getRed(), f), 0, 255), (int) ShaderUtils.clamp( - ShaderUtils.mix(a.getGreen(), b.getGreen(), f), 0, 255), (int) ShaderUtils.clamp( - ShaderUtils.mix(a.getBlue(), b.getBlue(), f), 0, 255)); - } - public static final int mix(final int a, final int b, final float f) { return (int) ((1 - f) * a + f * b); } @@ -257,28 +242,6 @@ public static final float length(final float[] v) { return (float) Math.sqrt(s); } - public static final ByteBuffer getImageDataFromImage(BufferedImage bufferedImage) { - WritableRaster wr; - DataBuffer db; - - BufferedImage bi = new BufferedImage(128, 64, BufferedImage.TYPE_INT_ARGB); - Graphics2D g = bi.createGraphics(); - g.drawImage(bufferedImage, null, null); - bufferedImage = bi; - wr = bi.getRaster(); - db = wr.getDataBuffer(); - - DataBufferInt dbi = (DataBufferInt) db; - int[] data = dbi.getData(); - - ByteBuffer byteBuffer = ByteBuffer.allocateDirect(data.length * 4); - byteBuffer.order(ByteOrder.LITTLE_ENDIAN); - byteBuffer.asIntBuffer().put(data); - byteBuffer.flip(); - - return byteBuffer; - } - public static float frac(float f) { return f - ShaderUtils.floor(f); } From 0c83cbf6b376d08f8e4620a1a559e66787cdfe9a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 23 May 2026 15:36:49 +0000 Subject: [PATCH 3/3] Add cross-platform ColorRGBA/Texture2D helpers to ShaderUtils; enable terrain in iOS examples - Add mix(ColorRGBA, ColorRGBA, float) as cross-platform replacement for removed mix(java.awt.Color, ...) - Add getImageDataFromTexture(Texture2D) as cross-platform replacement for removed getImageDataFromImage(BufferedImage) - Remove jme3test.terrain. from iOS example chooser excluded prefixes - Move jme3-terrain from iosIncludeAwtUnsafeModules conditional to unconditional iOS dependencies Agent-Logs-Url: https://github.com/jMonkeyEngine/jmonkeyengine/sessions/612baf0b-d7a0-4d66-bc40-412519339e72 Co-authored-by: riccardobl <4943530+riccardobl@users.noreply.github.com> --- jme3-ios-examples/build.gradle | 5 ++--- .../java/com/jme3/terrain/noise/ShaderUtils.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/jme3-ios-examples/build.gradle b/jme3-ios-examples/build.gradle index f3fbd6476c..c90029bb5a 100644 --- a/jme3-ios-examples/build.gradle +++ b/jme3-ios-examples/build.gradle @@ -35,8 +35,7 @@ def iosChooserExcludedPrefixes = [ 'jme3test.awt.', 'jme3test.bullet.', 'jme3test.niftygui.', - 'jme3test.opencl.', - 'jme3test.terrain.' + 'jme3test.opencl.' ] def iosChooserExcludedNames = [ 'jme3test.app.TestChangeAppIcon', @@ -311,10 +310,10 @@ dependencies { implementation project(':jme3-plugins') implementation project(':jme3-plugins-json') implementation project(':jme3-plugins-json-gson') + implementation project(':jme3-terrain') if ((findProperty('iosIncludeAwtUnsafeModules') ?: 'false').toString().toBoolean()) { implementation project(':jme3-niftygui') - implementation project(':jme3-terrain') } } diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java b/jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java index 65405541ce..91f7576084 100644 --- a/jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java +++ b/jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java @@ -29,6 +29,10 @@ */ package com.jme3.terrain.noise; +import com.jme3.math.ColorRGBA; +import com.jme3.texture.Texture2D; +import java.nio.ByteBuffer; + /** * Helper class containing useful functions explained in the book: * Texturing & Modeling - A Procedural Approach @@ -61,6 +65,14 @@ public static final int mix(final int a, final int b, final float f) { return (int) ((1 - f) * a + f * b); } + public static final ColorRGBA mix(final ColorRGBA a, final ColorRGBA b, final float f) { + return new ColorRGBA( + ShaderUtils.mix(a.r, b.r, f), + ShaderUtils.mix(a.g, b.g, f), + ShaderUtils.mix(a.b, b.b, f), + ShaderUtils.mix(a.a, b.a, f)); + } + public static final float[] mix(final float[] c1, final float[] c2, final float f) { return new float[] { ShaderUtils.mix(c1[0], c2[0], f), ShaderUtils.mix(c1[1], c2[1], f), ShaderUtils.mix(c1[2], c2[2], f) }; } @@ -242,6 +254,10 @@ public static final float length(final float[] v) { return (float) Math.sqrt(s); } + public static final ByteBuffer getImageDataFromTexture(final Texture2D texture) { + return texture.getImage().getData(0); + } + public static float frac(float f) { return f - ShaderUtils.floor(f); }