Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
3b6f7b8
jme3-core:
JohnLKkk Oct 9, 2023
8479dd3
jme3-examples:Added a set of test cases for renderPath.
JohnLKkk Oct 9, 2023
e5737df
jme3-core:Improve deferred shading issues;
JohnLKkk Oct 10, 2023
d69de2d
jme3-examples:Adjust deferred rendering test code
JohnLKkk Oct 10, 2023
6e75f0b
jme3-core:Adjust GBuffer format, RT0(16F), RT1(16F), RT2(16F), RT3(32…
Oct 10, 2023
0290dcd
jme3-core:Delete test code
JohnLKkk Oct 10, 2023
6a64da6
jme3-core:Fixed all known bugs in Tile-based DeferredShading.
JohnLKkk Oct 10, 2023
c8e7426
jme3-examples:update TestTileBasedDeferredShading
JohnLKkk Oct 10, 2023
e540601
jme3-core:update GLSLCompat.glsllib
JohnLKkk Oct 10, 2023
fdea4cc
jme3-core:Fix frameGraph assertion error
JohnLKkk Oct 11, 2023
f60a03b
jme3-core:Add some core code comments, delete Chinese code comments
JohnLKkk Oct 11, 2023
b7f0b58
jme3-core:Fix bugs existed in shadingModel
JohnLKkk Oct 12, 2023
e4862a6
jme3-examples:Add test case "TestShadingModel.java,TestRenderPathPoin…
JohnLKkk Oct 12, 2023
2475337
jme3-core:GBuffer data packing for terrain rendering compatibility (u…
Oct 17, 2023
81c1362
jme3-examples:
Oct 17, 2023
05eb006
jme3-core:Add rendering path support for AdvancedPBRTerrain
JohnLKkk Oct 18, 2023
e327316
jme3-examples:Add a test code
JohnLKkk Oct 18, 2023
63222d6
jme3-core:Supplement core code comments, add full JME license to each…
JohnLKkk Oct 19, 2023
82c6dc2
jme3-terrain:Implement PBRTerrain compatibility code
JohnLKkk Oct 19, 2023
0359a8e
jme3-core:Fixed Tile-basedDeferred light culling issue, fixed some fl…
JohnLKkk Oct 20, 2023
98e0ae4
jme3-examples:update TestCode
JohnLKkk Oct 20, 2023
000fb0e
jme3-examples:update TestPBRTerrainRenderPath.java
JohnLKkk Oct 20, 2023
09a22a6
jme3-core:Fix TestTexture3D/TestTexture3DLoading
JohnLKkk Oct 20, 2023
83ac2b5
jme3-core:fix lightTexSizeInv undefined
JohnLKkk Oct 20, 2023
65fd3de
Merge branch 'master' into master
JohnLKkk Oct 20, 2023
3521b2a
jme3-core:
JohnLKkk Oct 21, 2023
224eecd
jme3-core:use g_ViewProjectionMatrixInverse
JohnLKkk Oct 22, 2023
db4f0ac
jme3-core:use logger
JohnLKkk Oct 22, 2023
dc3a50b
jme3-core:update javadoc(FastMath.nextRandomFlot)
JohnLKkk Oct 27, 2023
9e977c6
Merge branch 'master' of https://github.com/JohnLKkk/jmonkeyengine in…
JohnLKkk Oct 27, 2023
5a3ff07
fixed merge conflicts and several bugs
codex128 Apr 18, 2024
6fdeb35
refactor FGPass, FGSink, and FGSource to interfaces
codex128 Apr 18, 2024
1be8dab
fix method name collision for FGPass
codex128 Apr 18, 2024
6247f73
renamed FGPass reset method
codex128 Apr 18, 2024
df9c4b9
changes
codex128 Apr 18, 2024
79d9426
rebuilt API
codex128 Apr 19, 2024
60c5def
fixed framebuffer attachments bug
codex128 Apr 19, 2024
a3af1e2
deferred shading usable
codex128 Apr 19, 2024
2f008e8
deferred and tiled deferred are working for TestShadingModel.java
codex128 Apr 19, 2024
2f4f92b
debugging
codex128 Apr 19, 2024
31445ef
debugging deferred pipeline
codex128 Apr 20, 2024
dfd3866
more debugging
codex128 Apr 21, 2024
097309d
more debugging
codex128 Apr 21, 2024
7d14e68
cleanup code
codex128 Apr 22, 2024
713ca9c
more cleanup
codex128 Apr 23, 2024
a877d00
remove reliance on J3mLoader and clean up code
codex128 Apr 24, 2024
fcfaa2b
reorganized java files
codex128 Apr 24, 2024
7eab19e
added support for cross-space parameter binding
codex128 Apr 25, 2024
34fee37
added optimizations
codex128 Apr 25, 2024
9ba9bb3
recoding resource system
codex128 Apr 27, 2024
c02d491
redesigned resource system
codex128 Apr 29, 2024
66810b7
framegraph operational
codex128 May 3, 2024
08f60d8
framegraph complete
codex128 May 4, 2024
6084154
draft ready
codex128 May 7, 2024
5bbe40f
rename registration method
codex128 May 7, 2024
86a458b
renamed method
codex128 May 7, 2024
f68d0ea
delete personal changelog
codex128 May 7, 2024
1e0af25
remove enums
codex128 May 8, 2024
9ff4f5d
added information management passes
codex128 May 9, 2024
8a39bf0
migrated to new ticket protocol
codex128 May 9, 2024
bd44103
added resource extraction
codex128 May 9, 2024
45ee1b2
provide logical control of framegraph
codex128 May 11, 2024
f9156e2
finalized user value sources and targets
codex128 May 17, 2024
4f0f352
fixed framegraph use on multiple viewports binding textures too often
codex128 May 17, 2024
1661dcc
fixed depth texture filtering
codex128 May 20, 2024
02d69d4
added export and import methods
codex128 May 20, 2024
9966f85
javadoc for new classes
codex128 May 21, 2024
5505ab4
licenses
codex128 May 21, 2024
1952784
pass tests
codex128 May 21, 2024
5e6fe7a
added framegraph opt-out for viewports
codex128 May 21, 2024
f16977a
added .j3g
codex128 May 21, 2024
9baebee
delete unused classes
codex128 May 21, 2024
a2d55f2
fixed background on deferred pipelines
codex128 May 22, 2024
9fbd053
added basic opencl
codex128 May 22, 2024
a9d74a1
fixed tests
codex128 May 22, 2024
970e73c
verified fix for overlapping viewports
codex128 May 22, 2024
06832da
added framegraph loading speed test
codex128 May 22, 2024
fe02e94
added framegraph event capture
codex128 May 25, 2024
ce4b259
fixed framebuffer update flag
codex128 May 31, 2024
5594184
fixed broken light count
codex128 Jun 3, 2024
a41e33f
revert debugging
codex128 Jun 3, 2024
c94bee2
fix merge conflict
codex128 Jun 3, 2024
deb82d2
Merge branch 'master' into framegraphAPI
codex128 Jun 3, 2024
78538fe
start moving lighting logic outside matdef logic
codex128 Jun 6, 2024
d02fa6a
added ticket groups
codex128 Jun 7, 2024
0d659aa
migrated lighting logic to render pass
codex128 Jun 14, 2024
8a969c9
fixed light tex inverse type
codex128 Jun 15, 2024
e1f5ae7
added light pack method junction
codex128 Jun 15, 2024
3c18f2f
deleted deferred lighting logic
codex128 Jun 15, 2024
39cb0bd
deleted draft files
codex128 Jun 15, 2024
6499b8b
added group attribute pass
codex128 Jun 15, 2024
f470edd
added indefinite ticket groups
codex128 Jun 17, 2024
a62b144
finalized ticket lists
codex128 Jun 17, 2024
39d6598
porting filters
codex128 Jun 19, 2024
d2c5639
narrowed PBR issue to metallic=1
codex128 Jun 22, 2024
eb67e8e
fixed functional array issues
codex128 Jun 23, 2024
09d4eba
fixed build errors
codex128 Jun 23, 2024
42f5ab6
fixed depth of field filter import-export
codex128 Jun 23, 2024
1531f0f
fixed deferred light probes
codex128 Jun 24, 2024
b2424bc
fixed ambient and fixed buffered lights
codex128 Jun 24, 2024
efa2771
fixed gbuffer packing for advanced terrain
codex128 Jun 24, 2024
00f268c
fixed pbr terrain
codex128 Jun 24, 2024
dbde835
made render object map threadsafe
codex128 Jun 25, 2024
a3eee4c
added multithreading
codex128 Jun 26, 2024
60cc523
fix referencing bug
codex128 Jun 27, 2024
d10bfc6
added fix for missing defines
codex128 Jun 27, 2024
482022a
test async
codex128 Jun 27, 2024
4c30527
fix dependency on java 9
codex128 Jun 27, 2024
d70e4cd
removed unnecessary atomic boolean
codex128 Jun 27, 2024
d1cbd33
fixed more async issues
codex128 Jun 28, 2024
2956c9d
fixed camera size when rendering to smaller textures
codex128 Jun 29, 2024
a198a80
added addLoop
codex128 Jun 29, 2024
15eb3bc
add faze pass
codex128 Jul 4, 2024
443643e
improved javadoc and fixed issue with deferred techniquedefs
codex128 Jul 19, 2024
a27e6a8
added pipeline interface and added render modules
codex128 Jul 29, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 14 additions & 12 deletions jme3-core/src/main/java/com/jme3/anim/tween/action/Action.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@

/**
* Wraps an array of Tween actions into an action object.
*
* <p>
* Notes :
* <li> The sequence of tweens is determined by {@link com.jme3.anim.tween.Tweens} utility class and the {@link BaseAction} interpolates that sequence. </li>
* <li> This implementation mimics the {@link com.jme3.anim.tween.AbstractTween}, but it delegates the interpolation method {@link Tween#interpolate(double)}
* <ul>
* <li> The sequence of tweens is determined by {@link com.jme3.anim.tween.Tweens} utility class and the {@link BaseAction} interpolates that sequence. </li>
* <li> This implementation mimics the {@link com.jme3.anim.tween.AbstractTween}, but it delegates the interpolation method {@link Tween#interpolate(double)}
* to the {@link BlendableAction} class. </li>
* </p>
* </ul>
*
* Created by Nehon.
*
Expand All @@ -66,10 +66,11 @@ public abstract class Action implements JmeCloneable, Tween {
* Instantiates an action object that wraps a tween actions array by extracting their actions to the collection {@link Action#actions}.
* <p>
* Notes :
* <li> If intentions are to wrap some tween actions, then subclasses have to call this constructor, examples : {@link BlendableAction} and {@link BlendAction}. </li>
* <li> If intentions are to make an implementation of {@link Action} that shouldn't wrap tweens of actions, then subclasses shouldn't call this
* <ul>
* <li> If intentions are to wrap some tween actions, then subclasses have to call this constructor, examples : {@link BlendableAction} and {@link BlendAction}. </li>
* <li> If intentions are to make an implementation of {@link Action} that shouldn't wrap tweens of actions, then subclasses shouldn't call this
* constructor, examples : {@link ClipAction} and {@link BaseAction}. </li>
* </p>
* </ul>
*
* @param tweens the tween actions to be wrapped (not null).
*/
Expand Down Expand Up @@ -119,11 +120,12 @@ public double getSpeed() {
* Alters the speedup factor applied by the layer running this action.
* <p>
* Notes:
* <li> This factor controls the animation direction, if the speed is a positive value then the animation will run forward and vice versa. </li>
* <li> The speed factor gets applied, inside the {@link com.jme3.anim.AnimLayer}, on each interpolation step by this formula : time += tpf * action.getSpeed() * composer.globalSpeed. </li>
* <li> Default speed is 1.0, it plays the animation clips at their normal speed. </li>
* <li> Setting the speed factor to Zero will stop the animation, while setting it to a negative number will play the animation in a backward fashion. </li>
* </p>
* <ul>
* <li> This factor controls the animation direction, if the speed is a positive value then the animation will run forward and vice versa. </li>
* <li> The speed factor gets applied, inside the {@link com.jme3.anim.AnimLayer}, on each interpolation step by this formula : time += tpf * action.getSpeed() * composer.globalSpeed. </li>
* <li> Default speed is 1.0, it plays the animation clips at their normal speed. </li>
* <li> Setting the speed factor to Zero will stop the animation, while setting it to a negative number will play the animation in a backward fashion. </li>
* </ul>
*
* @param speed the speed of frames.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
* //run the action within this layer
* animComposer.setCurrentAction("basicAction", ActionState.class.getSimpleName());
* </pre>
* </p>
* Created by Nehon.
*/
public class BaseAction extends Action {
Expand Down
2 changes: 2 additions & 0 deletions jme3-core/src/main/java/com/jme3/app/BasicProfiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@

import com.jme3.profile.AppProfiler;
import com.jme3.profile.AppStep;
import com.jme3.profile.FgStep;
import com.jme3.profile.SpStep;
import com.jme3.profile.VpStep;
import com.jme3.renderer.ViewPort;
Expand Down Expand Up @@ -204,4 +205,5 @@ public void vpStep(VpStep step, ViewPort vp, Bucket bucket) {
@Override
public void spStep(SpStep step, String... additionalInfo) {
}

}
11 changes: 11 additions & 0 deletions jme3-core/src/main/java/com/jme3/app/DetailedProfiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public class DetailedProfiler implements AppProfiler {
private String curAppPath = null;
private String curVpPath = null;
private String curSpPath = null;
private String curFgPath = null;
private VpStep lastVpStep = null;

private final StringBuilder path = new StringBuilder(256);
Expand Down Expand Up @@ -185,6 +186,16 @@ public void spStep(SpStep step, String... additionalInfo) {
}

}

@Override
public void fgStep(FgStep step, String... additionalInfo) {
if (data != null) {
curFgPath = getPath("", additionalInfo);
path.setLength(0);
path.append(curAppPath).append("/").append(curVpPath).append(curFgPath);
addStep(path.toString(), System.nanoTime());
}
}

public Map<String, StatLine> getStats() {
if (data != null) {
Expand Down
3 changes: 2 additions & 1 deletion jme3-core/src/main/java/com/jme3/app/LegacyApplication.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2022 jMonkeyEngine
* Copyright (c) 2024 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
Expand Down Expand Up @@ -336,6 +336,7 @@ private void initCamera() {
Camera guiCam = new Camera(settings.getWidth(), settings.getHeight());
guiViewPort = renderManager.createPostView("Gui Default", guiCam);
guiViewPort.setClearFlags(false, false, false);
//guiViewPort.setUseFrameGraphs(false);
}

/**
Expand Down
20 changes: 20 additions & 0 deletions jme3-core/src/main/java/com/jme3/asset/AssetManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
import com.jme3.material.Material;
import com.jme3.post.FilterPostProcessor;
import com.jme3.renderer.Caps;
import com.jme3.renderer.framegraph.export.FrameGraphData;
import com.jme3.renderer.framegraph.export.ModuleGraphData;
import com.jme3.scene.Spatial;
import com.jme3.scene.plugins.OBJLoader;
import com.jme3.shader.ShaderGenerator;
Expand Down Expand Up @@ -364,6 +366,24 @@ public default List<ClassLoader> getClassLoaders() {
*/
public FilterPostProcessor loadFilter(String name);

/**
* Loads a framegraph *.j3g file with a FrameGraphKey.
*
* @param key asset key of the framegraph file to load
* @return loaded framegraph
* @see #loadAsset(com.jme3.asset.AssetKey)
*/
public FrameGraphData loadFrameGraph(FrameGraphKey key);

/**
* Loads a framegraph *.j3g file with a FrameGraphKey.
*
* @param name asset name of the framegraph file to load
* @return loaded framegraph
* @see #loadAsset(com.jme3.asset.AssetKey)
*/
public FrameGraphData loadFrameGraph(String name);

/**
* Sets the shaderGenerator to generate shaders based on shaderNodes.
* @param generator the shaderGenerator
Expand Down
12 changes: 12 additions & 0 deletions jme3-core/src/main/java/com/jme3/asset/DesktopAssetManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@
import com.jme3.material.Material;
import com.jme3.post.FilterPostProcessor;
import com.jme3.renderer.Caps;
import com.jme3.renderer.framegraph.export.FrameGraphData;
import com.jme3.renderer.framegraph.export.ModuleGraphData;
import com.jme3.scene.Spatial;
import com.jme3.shader.Glsl100ShaderGenerator;
import com.jme3.shader.Glsl150ShaderGenerator;
Expand Down Expand Up @@ -455,6 +457,16 @@ public FilterPostProcessor loadFilter(FilterKey key) {
public FilterPostProcessor loadFilter(String name) {
return loadFilter(new FilterKey(name));
}

@Override
public FrameGraphData loadFrameGraph(FrameGraphKey key) {
return loadAsset(key);
}

@Override
public FrameGraphData loadFrameGraph(String name) {
return loadAsset(new FrameGraphKey(name));
}

/**
* {@inheritDoc}
Expand Down
55 changes: 55 additions & 0 deletions jme3-core/src/main/java/com/jme3/asset/FrameGraphKey.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* Copyright (c) 2024 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.asset;

import com.jme3.asset.cache.AssetCache;
import com.jme3.renderer.framegraph.export.FrameGraphData;

/**
*
* @author codex
*/
public class FrameGraphKey extends AssetKey<FrameGraphData> {

public FrameGraphKey(String name) {
super(name);
}
public FrameGraphKey() {
super();
}

@Override
public Class<? extends AssetCache> getCacheType() {
return null;
}

}
28 changes: 28 additions & 0 deletions jme3-core/src/main/java/com/jme3/asset/ModuleGraphKey.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.jme3.asset;

import com.jme3.asset.cache.AssetCache;
import com.jme3.renderer.framegraph.export.ModuleGraphData;

/**
*
* @author codex
*/
public class ModuleGraphKey extends AssetKey<ModuleGraphData> {

public ModuleGraphKey(String name) {
super(name);
}
public ModuleGraphKey() {
super();
}

@Override
public Class<? extends AssetCache> getCacheType() {
return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
* ec1.setPosition(new Vector3f(0,0,0));
* // ec2.setPosition(new Vector3f(0,0,10));
* 3. Tag the spatials that are part of the environment
* scene.deepFirstTraversal(s->{
* scene.deepFirstTraversal(s -&gt; {
* if(s.getUserData("isEnvNode")!=null){
* EnvironmentProbeControl.tagGlobal(s);
* // or ec1.tag(s);
Expand Down
23 changes: 21 additions & 2 deletions jme3-core/src/main/java/com/jme3/export/InputCapsule.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import java.nio.ShortBuffer;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Collection;
import java.util.Map;

/**
Expand Down Expand Up @@ -109,14 +110,32 @@ public interface InputCapsule {


// BinarySavable

public Savable readSavable(String name, Savable defVal) throws IOException;
public Savable[] readSavableArray(String name, Savable[] defVal) throws IOException;
public Savable[][] readSavableArray2D(String name, Savable[][] defVal) throws IOException;

public default <T extends Savable> T readSavable(String name, Class<T> type, T defVal) throws IOException {
Savable s = readSavable(name, defVal);
if (s != defVal && type.isAssignableFrom(s.getClass())) {
return (T)s;
} else {
return defVal;
}
}
public default SavableObject readSavableObject(String name, SavableObject defVal) throws IOException {
return readSavable(name, SavableObject.class, defVal);
}

// ArrayLists

public default Collection readToCollection(String name, Collection target) throws IOException {
ArrayList list = readSavableArrayList(name, new ArrayList());
for (Object obj : list) {
target.add(obj);
}
return target;
}

public ArrayList readSavableArrayList(String name, ArrayList defVal) throws IOException;
public ArrayList[] readSavableArrayListArray(String name, ArrayList[] defVal) throws IOException;
public ArrayList[][] readSavableArrayListArray2D(String name, ArrayList[][] defVal) throws IOException;
Expand Down
10 changes: 6 additions & 4 deletions jme3-core/src/main/java/com/jme3/export/NullSavable.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,12 @@
* @author Kirill Vainer
*/
public class NullSavable implements Savable {

public static final NullSavable INSTANCE = new NullSavable();

@Override
public void write(JmeExporter ex) throws IOException {
}
public void write(JmeExporter ex) throws IOException {}
@Override
public void read(JmeImporter im) throws IOException {
}
public void read(JmeImporter im) throws IOException {}

}
15 changes: 13 additions & 2 deletions jme3-core/src/main/java/com/jme3/export/OutputCapsule.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,14 @@
import java.nio.ShortBuffer;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Collection;
import java.util.Map;

/**
* @author Joshua Slack
*/
public interface OutputCapsule {

// byte primitive

public void write(byte value, String name, byte defVal) throws IOException;
Expand Down Expand Up @@ -115,7 +116,17 @@ public interface OutputCapsule {


// ArrayLists


public default void writeFromCollection(Collection collection, String name, boolean checkSavable) throws IOException {
ArrayList list = new ArrayList(collection.size());
for (Object obj : collection) {
if (!checkSavable || obj instanceof Savable) {
list.add(obj);
}
}
writeSavableArrayList(list, name, new ArrayList());
}

public void writeSavableArrayList(ArrayList array, String name, ArrayList defVal) throws IOException;
public void writeSavableArrayListArray(ArrayList[] array, String name, ArrayList[] defVal) throws IOException;
public void writeSavableArrayListArray2D(ArrayList[][] array, String name, ArrayList[][] defVal) throws IOException;
Expand Down
2 changes: 2 additions & 0 deletions jme3-core/src/main/java/com/jme3/export/Savable.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
* @author Kirill Vainer
*/
public interface Savable {

void write(JmeExporter ex) throws IOException;
void read(JmeImporter im) throws IOException;

}
Original file line number Diff line number Diff line change
Expand Up @@ -252,4 +252,5 @@ private static Constructor findNoArgConstructor(String className)

return result;
}

}
Loading