Add missing @Override annotations (#1270)
* jme3-core: add the missing @Override annotations * jme3-desktop: add the missing @Override annotations * jme3-bullet and jme3-jbullet: add the missing @Override annotations * jme3-effects: add the missing @Override annotations * jme3-terrain: add the missing @Override annotations * jme3-examples: add the missing @Override annotations * jme3-android: add the missing @Override annotations * jme3-blender: add the missing @Override annotations * jme3-ios: add the missing @Override annotations * jme3-jogg and jme3-jogl: add the missing @Override annotations * jme3-plugind: add the missing @Override annotations * jme3-lwjgl and jme3-lwjgl3: add the missing @Override annotations * jme3-networking: add the missing @Override annotations * jme3-vr: add the missing @Override annotations
This commit is contained in:
parent
427ae0a28b
commit
0fd70b81c9
@ -362,6 +362,7 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
|
||||
* @param dialog
|
||||
* @param whichButton
|
||||
*/
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
if (whichButton != -2) {
|
||||
if (app != null) {
|
||||
@ -473,6 +474,7 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
|
||||
handler.setLevel(Level.ALL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
app.initialize();
|
||||
if (handleExitHook) {
|
||||
@ -488,10 +490,12 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reshape(int width, int height) {
|
||||
app.reshape(width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
app.update();
|
||||
// call to remove the splash screen, if present.
|
||||
@ -503,10 +507,12 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestClose(boolean esc) {
|
||||
app.requestClose(esc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
if (app != null) {
|
||||
app.destroy();
|
||||
@ -516,6 +522,7 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void gainFocus() {
|
||||
logger.fine("gainFocus");
|
||||
if (view != null) {
|
||||
@ -547,6 +554,7 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loseFocus() {
|
||||
logger.fine("loseFocus");
|
||||
if (app != null) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014 jMonkeyEngine
|
||||
* Copyright (c) 2014-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -82,6 +82,7 @@ import com.jme3.renderer.queue.RenderQueue;
|
||||
public class DefaultAndroidProfiler implements AppProfiler {
|
||||
private int androidApiLevel = Build.VERSION.SDK_INT;
|
||||
|
||||
@Override
|
||||
public void appStep(AppStep appStep) {
|
||||
if (androidApiLevel >= 18) {
|
||||
switch(appStep) {
|
||||
@ -140,6 +141,7 @@ public class DefaultAndroidProfiler implements AppProfiler {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void vpStep(VpStep vpStep, ViewPort vp, RenderQueue.Bucket bucket) {
|
||||
if (androidApiLevel >= 18) {
|
||||
switch (vpStep) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -73,6 +73,7 @@ public class VideoRecorderAppState extends AbstractAppState {
|
||||
private Application app;
|
||||
private ExecutorService executor = Executors.newCachedThreadPool(new ThreadFactory() {
|
||||
|
||||
@Override
|
||||
public Thread newThread(Runnable r) {
|
||||
Thread th = new Thread(r);
|
||||
th.setName("jME3 Video Processor");
|
||||
@ -239,6 +240,7 @@ public class VideoRecorderAppState extends AbstractAppState {
|
||||
renderer.readFrameBufferWithFormat(out, item.buffer, Image.Format.BGRA8);
|
||||
executor.submit(new Callable<Void>() {
|
||||
|
||||
@Override
|
||||
public Void call() throws Exception {
|
||||
if (fastMode) {
|
||||
item.data = item.buffer.array();
|
||||
@ -260,6 +262,7 @@ public class VideoRecorderAppState extends AbstractAppState {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(RenderManager rm, ViewPort viewPort) {
|
||||
logger.log(Level.INFO, "initialize in VideoProcessor");
|
||||
this.camera = viewPort.getCamera();
|
||||
@ -275,13 +278,16 @@ public class VideoRecorderAppState extends AbstractAppState {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reshape(ViewPort vp, int w, int h) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInitialized() {
|
||||
return this.isInitilized;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preFrame(float tpf) {
|
||||
if (null == writer) {
|
||||
try {
|
||||
@ -292,14 +298,17 @@ public class VideoRecorderAppState extends AbstractAppState {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postQueue(RenderQueue rq) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postFrame(FrameBuffer out) {
|
||||
numFrames++;
|
||||
addImage(renderManager.getRenderer(), out);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanup() {
|
||||
logger.log(Level.INFO, "cleanup in VideoProcessor");
|
||||
logger.log(Level.INFO, "VideoProcessor numFrames: {0}", numFrames);
|
||||
@ -332,22 +341,27 @@ public class VideoRecorderAppState extends AbstractAppState {
|
||||
this.ticks = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getTime() {
|
||||
return (long) (this.ticks * (1.0f / this.framerate) * 1000f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getResolution() {
|
||||
return 1000L;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getFrameRate() {
|
||||
return this.framerate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getTimePerFrame() {
|
||||
return (float) (1.0f / this.framerate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
long time = System.currentTimeMillis();
|
||||
long difference = time - lastTime;
|
||||
@ -364,6 +378,7 @@ public class VideoRecorderAppState extends AbstractAppState {
|
||||
this.ticks++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
this.ticks = 0;
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ public class AndroidLocator implements AssetLocator {
|
||||
public AndroidLocator() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRootPath(String rootPath) {
|
||||
this.rootPath = rootPath;
|
||||
}
|
||||
|
@ -10,44 +10,64 @@ public final class AndroidAL implements AL {
|
||||
public AndroidAL() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public native String alGetString(int parameter);
|
||||
|
||||
@Override
|
||||
public native int alGenSources();
|
||||
|
||||
@Override
|
||||
public native int alGetError();
|
||||
|
||||
@Override
|
||||
public native void alDeleteSources(int numSources, IntBuffer sources);
|
||||
|
||||
@Override
|
||||
public native void alGenBuffers(int numBuffers, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alDeleteBuffers(int numBuffers, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alSourceStop(int source);
|
||||
|
||||
@Override
|
||||
public native void alSourcei(int source, int param, int value);
|
||||
|
||||
@Override
|
||||
public native void alBufferData(int buffer, int format, ByteBuffer data, int size, int frequency);
|
||||
|
||||
@Override
|
||||
public native void alSourcePlay(int source);
|
||||
|
||||
@Override
|
||||
public native void alSourcePause(int source);
|
||||
|
||||
@Override
|
||||
public native void alSourcef(int source, int param, float value);
|
||||
|
||||
@Override
|
||||
public native void alSource3f(int source, int param, float value1, float value2, float value3);
|
||||
|
||||
@Override
|
||||
public native int alGetSourcei(int source, int param);
|
||||
|
||||
@Override
|
||||
public native void alSourceUnqueueBuffers(int source, int numBuffers, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alSourceQueueBuffers(int source, int numBuffers, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alListener(int param, FloatBuffer data);
|
||||
|
||||
@Override
|
||||
public native void alListenerf(int param, float value);
|
||||
|
||||
@Override
|
||||
public native void alListener3f(int param, float value1, float value2, float value3);
|
||||
|
||||
@Override
|
||||
public native void alSource3i(int source, int param, int value1, int value2, int value3);
|
||||
|
||||
}
|
||||
|
@ -12,19 +12,27 @@ public final class AndroidALC implements ALC {
|
||||
public AndroidALC() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public native void createALC();
|
||||
|
||||
@Override
|
||||
public native void destroyALC();
|
||||
|
||||
@Override
|
||||
public native boolean isCreated();
|
||||
|
||||
@Override
|
||||
public native String alcGetString(int parameter);
|
||||
|
||||
@Override
|
||||
public native boolean alcIsExtensionPresent(String extension);
|
||||
|
||||
@Override
|
||||
public native void alcGetInteger(int param, IntBuffer buffer, int size);
|
||||
|
||||
@Override
|
||||
public native void alcDevicePauseSOFT();
|
||||
|
||||
@Override
|
||||
public native void alcDeviceResumeSOFT();
|
||||
}
|
||||
|
@ -8,25 +8,36 @@ public class AndroidEFX implements EFX {
|
||||
public AndroidEFX() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public native void alGenAuxiliaryEffectSlots(int numSlots, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alGenEffects(int numEffects, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alEffecti(int effect, int param, int value);
|
||||
|
||||
@Override
|
||||
public native void alAuxiliaryEffectSloti(int effectSlot, int param, int value);
|
||||
|
||||
@Override
|
||||
public native void alDeleteEffects(int numEffects, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alDeleteAuxiliaryEffectSlots(int numEffectSlots, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alGenFilters(int numFilters, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alFilteri(int filter, int param, int value);
|
||||
|
||||
@Override
|
||||
public native void alFilterf(int filter, int param, float value);
|
||||
|
||||
@Override
|
||||
public native void alDeleteFilters(int numFilters, IntBuffer buffers);
|
||||
|
||||
@Override
|
||||
public native void alEffectf(int effect, int param, float value);
|
||||
}
|
||||
|
@ -46,6 +46,7 @@ public class NativeVorbisLoader implements AssetLoader {
|
||||
throw new IOException("Not supported for audio streams");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTime(float time) {
|
||||
try {
|
||||
file.seekTime(time);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2015 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -46,6 +46,7 @@ public class AndroidGL implements GL, GL2, GLES_30, GLExt, GLFbo {
|
||||
|
||||
IntBuffer tmpBuff = BufferUtils.createIntBuffer(1);
|
||||
|
||||
@Override
|
||||
public void resetStats() {
|
||||
}
|
||||
|
||||
@ -86,10 +87,12 @@ public class AndroidGL implements GL, GL2, GLES_30, GLExt, GLFbo {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glActiveTexture(int texture) {
|
||||
GLES20.glActiveTexture(texture);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glAttachShader(int program, int shader) {
|
||||
GLES20.glAttachShader(program, shader);
|
||||
}
|
||||
@ -99,144 +102,179 @@ public class AndroidGL implements GL, GL2, GLES_30, GLExt, GLFbo {
|
||||
GLES30.glBeginQuery(target, query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBindBuffer(int target, int buffer) {
|
||||
GLES20.glBindBuffer(target, buffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBindTexture(int target, int texture) {
|
||||
GLES20.glBindTexture(target, texture);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBlendFunc(int sfactor, int dfactor) {
|
||||
GLES20.glBlendFunc(sfactor, dfactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBlendFuncSeparate(int sfactorRGB, int dfactorRGB, int sfactorAlpha, int dfactorAlpha) {
|
||||
GLES20.glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBufferData(int target, FloatBuffer data, int usage) {
|
||||
GLES20.glBufferData(target, getLimitBytes(data), data, usage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBufferData(int target, ShortBuffer data, int usage) {
|
||||
GLES20.glBufferData(target, getLimitBytes(data), data, usage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBufferData(int target, ByteBuffer data, int usage) {
|
||||
GLES20.glBufferData(target, getLimitBytes(data), data, usage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBufferData(int target, long data_size, int usage) {
|
||||
GLES20.glBufferData(target, (int) data_size, null, usage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBufferSubData(int target, long offset, FloatBuffer data) {
|
||||
GLES20.glBufferSubData(target, (int) offset, getLimitBytes(data), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBufferSubData(int target, long offset, ShortBuffer data) {
|
||||
GLES20.glBufferSubData(target, (int) offset, getLimitBytes(data), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBufferSubData(int target, long offset, ByteBuffer data) {
|
||||
GLES20.glBufferSubData(target, (int) offset, getLimitBytes(data), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGetBufferSubData(int target, long offset, ByteBuffer data) {
|
||||
throw new UnsupportedOperationException("OpenGL ES 2 does not support glGetBufferSubData");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glClear(int mask) {
|
||||
GLES20.glClear(mask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glClearColor(float red, float green, float blue, float alpha) {
|
||||
GLES20.glClearColor(red, green, blue, alpha);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glColorMask(boolean red, boolean green, boolean blue, boolean alpha) {
|
||||
GLES20.glColorMask(red, green, blue, alpha);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glCompileShader(int shader) {
|
||||
GLES20.glCompileShader(shader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glCompressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, ByteBuffer data) {
|
||||
GLES20.glCompressedTexImage2D(target, level, internalformat, width, height, 0, getLimitBytes(data), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glCompressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, ByteBuffer data) {
|
||||
GLES20.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, getLimitBytes(data), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int glCreateProgram() {
|
||||
return GLES20.glCreateProgram();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int glCreateShader(int shaderType) {
|
||||
return GLES20.glCreateShader(shaderType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glCullFace(int mode) {
|
||||
GLES20.glCullFace(mode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDeleteBuffers(IntBuffer buffers) {
|
||||
checkLimit(buffers);
|
||||
GLES20.glDeleteBuffers(buffers.limit(), buffers);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDeleteProgram(int program) {
|
||||
GLES20.glDeleteProgram(program);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDeleteShader(int shader) {
|
||||
GLES20.glDeleteShader(shader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDeleteTextures(IntBuffer textures) {
|
||||
checkLimit(textures);
|
||||
GLES20.glDeleteTextures(textures.limit(), textures);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDepthFunc(int func) {
|
||||
GLES20.glDepthFunc(func);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDepthMask(boolean flag) {
|
||||
GLES20.glDepthMask(flag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDepthRange(double nearVal, double farVal) {
|
||||
GLES20.glDepthRangef((float)nearVal, (float)farVal);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDetachShader(int program, int shader) {
|
||||
GLES20.glDetachShader(program, shader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDisable(int cap) {
|
||||
GLES20.glDisable(cap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDisableVertexAttribArray(int index) {
|
||||
GLES20.glDisableVertexAttribArray(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDrawArrays(int mode, int first, int count) {
|
||||
GLES20.glDrawArrays(mode, first, count);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDrawRangeElements(int mode, int start, int end, int count, int type, long indices) {
|
||||
GLES20.glDrawElements(mode, count, type, (int)indices);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glEnable(int cap) {
|
||||
GLES20.glEnable(cap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glEnableVertexAttribArray(int index) {
|
||||
GLES20.glEnableVertexAttribArray(index);
|
||||
}
|
||||
@ -246,11 +284,13 @@ public class AndroidGL implements GL, GL2, GLES_30, GLExt, GLFbo {
|
||||
GLES30.glEndQuery(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGenBuffers(IntBuffer buffers) {
|
||||
checkLimit(buffers);
|
||||
GLES20.glGenBuffers(buffers.limit(), buffers);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGenTextures(IntBuffer textures) {
|
||||
checkLimit(textures);
|
||||
GLES20.glGenTextures(textures.limit(), textures);
|
||||
@ -261,29 +301,35 @@ public class AndroidGL implements GL, GL2, GLES_30, GLExt, GLFbo {
|
||||
GLES30.glGenQueries(num, buff);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int glGetAttribLocation(int program, String name) {
|
||||
return GLES20.glGetAttribLocation(program, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGetBoolean(int pname, ByteBuffer params) {
|
||||
// GLES20.glGetBoolean(pname, params);
|
||||
throw new UnsupportedOperationException("Today is not a good day for this");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int glGetError() {
|
||||
return GLES20.glGetError();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGetInteger(int pname, IntBuffer params) {
|
||||
checkLimit(params);
|
||||
GLES20.glGetIntegerv(pname, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGetProgram(int program, int pname, IntBuffer params) {
|
||||
checkLimit(params);
|
||||
GLES20.glGetProgramiv(program, pname, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String glGetProgramInfoLog(int program, int maxLength) {
|
||||
return GLES20.glGetProgramInfoLog(program);
|
||||
}
|
||||
@ -303,51 +349,63 @@ public class AndroidGL implements GL, GL2, GLES_30, GLExt, GLFbo {
|
||||
return buff.get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGetShader(int shader, int pname, IntBuffer params) {
|
||||
checkLimit(params);
|
||||
GLES20.glGetShaderiv(shader, pname, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String glGetShaderInfoLog(int shader, int maxLength) {
|
||||
return GLES20.glGetShaderInfoLog(shader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String glGetString(int name) {
|
||||
return GLES20.glGetString(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int glGetUniformLocation(int program, String name) {
|
||||
return GLES20.glGetUniformLocation(program, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean glIsEnabled(int cap) {
|
||||
return GLES20.glIsEnabled(cap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glLineWidth(float width) {
|
||||
GLES20.glLineWidth(width);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glLinkProgram(int program) {
|
||||
GLES20.glLinkProgram(program);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glPixelStorei(int pname, int param) {
|
||||
GLES20.glPixelStorei(pname, param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glPolygonOffset(float factor, float units) {
|
||||
GLES20.glPolygonOffset(factor, units);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glReadPixels(int x, int y, int width, int height, int format, int type, ByteBuffer data) {
|
||||
GLES20.glReadPixels(x, y, width, height, format, type, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glScissor(int x, int y, int width, int height) {
|
||||
GLES20.glScissor(x, y, width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glShaderSource(int shader, String[] string, IntBuffer length) {
|
||||
if (string.length != 1) {
|
||||
throw new UnsupportedOperationException("Today is not a good day");
|
||||
@ -355,186 +413,231 @@ public class AndroidGL implements GL, GL2, GLES_30, GLExt, GLFbo {
|
||||
GLES20.glShaderSource(shader, string[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glStencilFuncSeparate(int face, int func, int ref, int mask) {
|
||||
GLES20.glStencilFuncSeparate(face, func, ref, mask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glStencilOpSeparate(int face, int sfail, int dpfail, int dppass) {
|
||||
GLES20.glStencilOpSeparate(face, sfail, dpfail, dppass);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glTexImage2D(int target, int level, int internalFormat, int width, int height, int border, int format, int type, ByteBuffer data) {
|
||||
GLES20.glTexImage2D(target, level, internalFormat, width, height, 0, format, type, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glTexParameterf(int target, int pname, float param) {
|
||||
GLES20.glTexParameterf(target, pname, param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glTexParameteri(int target, int pname, int param) {
|
||||
GLES20.glTexParameteri(target, pname, param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, int type, ByteBuffer data) {
|
||||
GLES20.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform1(int location, FloatBuffer value) {
|
||||
GLES20.glUniform1fv(location, getLimitCount(value, 1), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform1(int location, IntBuffer value) {
|
||||
GLES20.glUniform1iv(location, getLimitCount(value, 1), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform1f(int location, float v0) {
|
||||
GLES20.glUniform1f(location, v0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform1i(int location, int v0) {
|
||||
GLES20.glUniform1i(location, v0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform2(int location, IntBuffer value) {
|
||||
GLES20.glUniform2iv(location, getLimitCount(value, 2), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform2(int location, FloatBuffer value) {
|
||||
GLES20.glUniform2fv(location, getLimitCount(value, 2), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform2f(int location, float v0, float v1) {
|
||||
GLES20.glUniform2f(location, v0, v1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform3(int location, IntBuffer value) {
|
||||
GLES20.glUniform3iv(location, getLimitCount(value, 3), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform3(int location, FloatBuffer value) {
|
||||
GLES20.glUniform3fv(location, getLimitCount(value, 3), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform3f(int location, float v0, float v1, float v2) {
|
||||
GLES20.glUniform3f(location, v0, v1, v2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform4(int location, FloatBuffer value) {
|
||||
GLES20.glUniform4fv(location, getLimitCount(value, 4), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform4(int location, IntBuffer value) {
|
||||
GLES20.glUniform4iv(location, getLimitCount(value, 4), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniform4f(int location, float v0, float v1, float v2, float v3) {
|
||||
GLES20.glUniform4f(location, v0, v1, v2, v3);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniformMatrix3(int location, boolean transpose, FloatBuffer value) {
|
||||
GLES20.glUniformMatrix3fv(location, getLimitCount(value, 3 * 3), transpose, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUniformMatrix4(int location, boolean transpose, FloatBuffer value) {
|
||||
GLES20.glUniformMatrix4fv(location, getLimitCount(value, 4 * 4), transpose, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glUseProgram(int program) {
|
||||
GLES20.glUseProgram(program);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glVertexAttribPointer(int index, int size, int type, boolean normalized, int stride, long pointer) {
|
||||
GLES20.glVertexAttribPointer(index, size, type, normalized, stride, (int)pointer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glViewport(int x, int y, int width, int height) {
|
||||
GLES20.glViewport(x, y, width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBlitFramebufferEXT(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter) {
|
||||
GLES30.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBufferData(int target, IntBuffer data, int usage) {
|
||||
GLES20.glBufferData(target, getLimitBytes(data), data, usage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBufferSubData(int target, long offset, IntBuffer data) {
|
||||
GLES20.glBufferSubData(target, (int)offset, getLimitBytes(data), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDrawArraysInstancedARB(int mode, int first, int count, int primcount) {
|
||||
GLES30.glDrawArraysInstanced(mode, first, count, primcount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDrawBuffers(IntBuffer bufs) {
|
||||
GLES30.glDrawBuffers(bufs.limit(), bufs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDrawElementsInstancedARB(int mode, int indices_count, int type, long indices_buffer_offset, int primcount) {
|
||||
GLES30.glDrawElementsInstanced(mode, indices_count, type, (int)indices_buffer_offset, primcount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGetMultisample(int pname, int index, FloatBuffer val) {
|
||||
GLES31.glGetMultisamplefv(pname, index, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glRenderbufferStorageMultisampleEXT(int target, int samples, int internalformat, int width, int height) {
|
||||
GLES30.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glTexImage2DMultisample(int target, int samples, int internalformat, int width, int height, boolean fixedsamplelocations) {
|
||||
GLES31.glTexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glVertexAttribDivisorARB(int index, int divisor) {
|
||||
GLES30.glVertexAttribDivisor(index, divisor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBindFramebufferEXT(int param1, int param2) {
|
||||
GLES20.glBindFramebuffer(param1, param2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glBindRenderbufferEXT(int param1, int param2) {
|
||||
GLES20.glBindRenderbuffer(param1, param2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int glCheckFramebufferStatusEXT(int param1) {
|
||||
return GLES20.glCheckFramebufferStatus(param1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDeleteFramebuffersEXT(IntBuffer param1) {
|
||||
checkLimit(param1);
|
||||
GLES20.glDeleteFramebuffers(param1.limit(), param1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glDeleteRenderbuffersEXT(IntBuffer param1) {
|
||||
checkLimit(param1);
|
||||
GLES20.glDeleteRenderbuffers(param1.limit(), param1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glFramebufferRenderbufferEXT(int param1, int param2, int param3, int param4) {
|
||||
GLES20.glFramebufferRenderbuffer(param1, param2, param3, param4);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glFramebufferTexture2DEXT(int param1, int param2, int param3, int param4, int param5) {
|
||||
GLES20.glFramebufferTexture2D(param1, param2, param3, param4, param5);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGenFramebuffersEXT(IntBuffer param1) {
|
||||
checkLimit(param1);
|
||||
GLES20.glGenFramebuffers(param1.limit(), param1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGenRenderbuffersEXT(IntBuffer param1) {
|
||||
checkLimit(param1);
|
||||
GLES20.glGenRenderbuffers(param1.limit(), param1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glGenerateMipmapEXT(int param1) {
|
||||
GLES20.glGenerateMipmap(param1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glRenderbufferStorageEXT(int param1, int param2, int param3, int param4) {
|
||||
GLES20.glRenderbufferStorage(param1, param2, param3, param4);
|
||||
}
|
||||
@ -570,16 +673,20 @@ public class AndroidGL implements GL, GL2, GLES_30, GLExt, GLFbo {
|
||||
GLES30.glFramebufferTextureLayer(target, attachment, texture, level, layer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glAlphaFunc(int func, float ref) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glPointSize(float size) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glPolygonMode(int face, int mode) {
|
||||
}
|
||||
|
||||
// Wrapper to DrawBuffers as there's no DrawBuffer method in GLES
|
||||
@Override
|
||||
public void glDrawBuffer(int mode) {
|
||||
tmpBuff.clear();
|
||||
tmpBuff.put(0, mode);
|
||||
@ -587,25 +694,30 @@ public class AndroidGL implements GL, GL2, GLES_30, GLExt, GLFbo {
|
||||
glDrawBuffers(tmpBuff);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glReadBuffer(int mode) {
|
||||
GLES30.glReadBuffer(mode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glCompressedTexImage3D(int target, int level, int internalFormat, int width, int height, int depth,
|
||||
int border, ByteBuffer data) {
|
||||
GLES30.glCompressedTexImage3D(target, level, internalFormat, width, height, depth, border, getLimitBytes(data), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glCompressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width,
|
||||
int height, int depth, int format, ByteBuffer data) {
|
||||
GLES30.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, getLimitBytes(data), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glTexImage3D(int target, int level, int internalFormat, int width, int height, int depth, int border,
|
||||
int format, int type, ByteBuffer data) {
|
||||
GLES30.glTexImage3D(target, level, internalFormat, width, height, depth, border, format, type, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void glTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height,
|
||||
int depth, int format, int type, ByteBuffer data) {
|
||||
GLES30.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
|
||||
|
@ -204,6 +204,7 @@ public class JmeAndroidSystem extends JmeSystemDelegate {
|
||||
public void showSoftKeyboard(final boolean show) {
|
||||
view.getHandler().post(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
InputMethodManager manager =
|
||||
(InputMethodManager)view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2018 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -202,6 +202,7 @@ public class OGLESContext implements JmeContext, GLSurfaceView.Renderer, SoftTex
|
||||
|
||||
// Setup unhandled Exception Handler
|
||||
Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
|
||||
@Override
|
||||
public void uncaughtException(Thread thread, Throwable thrown) {
|
||||
listener.handleError("Exception thrown in " + thread.toString(), thrown);
|
||||
}
|
||||
@ -414,6 +415,7 @@ public class OGLESContext implements JmeContext, GLSurfaceView.Renderer, SoftTex
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDialog(final int id, final String title, final String initialValue, final SoftTextDialogInputListener listener) {
|
||||
logger.log(Level.FINE, "requestDialog: title: {0}, initialValue: {1}",
|
||||
new Object[]{title, initialValue});
|
||||
@ -457,6 +459,7 @@ public class OGLESContext implements JmeContext, GLSurfaceView.Renderer, SoftTex
|
||||
|
||||
AlertDialog dialogTextInput = new AlertDialog.Builder(view.getContext()).setTitle(title).setView(layoutTextDialogInput).setPositiveButton("OK",
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
/* User clicked OK, send COMPLETE action
|
||||
* and text */
|
||||
@ -464,6 +467,7 @@ public class OGLESContext implements JmeContext, GLSurfaceView.Renderer, SoftTex
|
||||
}
|
||||
}).setNegativeButton("Cancel",
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
/* User clicked CANCEL, send CANCEL action
|
||||
* and text */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2014 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -67,6 +67,7 @@ public class AndroidBufferImageLoader implements AssetLoader {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object load(AssetInfo assetInfo) throws IOException {
|
||||
Bitmap bitmap = null;
|
||||
Image.Format format;
|
||||
|
@ -25,6 +25,7 @@ public class AndroidNativeImageLoader implements AssetLoader {
|
||||
|
||||
private static native Image load(InputStream in, boolean flipY, byte[] tmpArray) throws IOException;
|
||||
|
||||
@Override
|
||||
public Image load(AssetInfo info) throws IOException {
|
||||
boolean flip = ((TextureKey) info.getKey()).isFlipY();
|
||||
InputStream in = null;
|
||||
|
@ -49,6 +49,7 @@ public class RingBuffer<T> implements Iterable<T> {
|
||||
return item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<T> iterator() {
|
||||
return new RingBufferIterator();
|
||||
}
|
||||
@ -58,14 +59,17 @@ public class RingBuffer<T> implements Iterable<T> {
|
||||
|
||||
private int i = 0;
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return i < count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public T next() {
|
||||
if (!hasNext()) {
|
||||
throw new NoSuchElementException();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -100,9 +100,11 @@ public class MaterialHelper extends AbstractBlenderHelper {
|
||||
super(blenderVersion, blenderContext);
|
||||
// setting alpha masks
|
||||
alphaMasks.put(ALPHA_MASK_NONE, new IAlphaMask() {
|
||||
@Override
|
||||
public void setImageSize(int width, int height) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getAlpha(float x, float y) {
|
||||
return (byte) 255;
|
||||
}
|
||||
@ -111,11 +113,13 @@ public class MaterialHelper extends AbstractBlenderHelper {
|
||||
private float r;
|
||||
private float[] center;
|
||||
|
||||
@Override
|
||||
public void setImageSize(int width, int height) {
|
||||
r = Math.min(width, height) * 0.5f;
|
||||
center = new float[] { width * 0.5f, height * 0.5f };
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getAlpha(float x, float y) {
|
||||
float d = FastMath.abs(FastMath.sqrt((x - center[0]) * (x - center[0]) + (y - center[1]) * (y - center[1])));
|
||||
return (byte) (d >= r ? 0 : 255);
|
||||
@ -125,11 +129,13 @@ public class MaterialHelper extends AbstractBlenderHelper {
|
||||
private float r;
|
||||
private float[] center;
|
||||
|
||||
@Override
|
||||
public void setImageSize(int width, int height) {
|
||||
r = Math.min(width, height) * 0.5f;
|
||||
center = new float[] { width * 0.5f, height * 0.5f };
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getAlpha(float x, float y) {
|
||||
float d = FastMath.abs(FastMath.sqrt((x - center[0]) * (x - center[0]) + (y - center[1]) * (y - center[1])));
|
||||
return (byte) (d >= r ? 0 : -255.0f * d / r + 255.0f);
|
||||
@ -139,11 +145,13 @@ public class MaterialHelper extends AbstractBlenderHelper {
|
||||
private float r;
|
||||
private float[] center;
|
||||
|
||||
@Override
|
||||
public void setImageSize(int width, int height) {
|
||||
r = Math.min(width, height) * 0.5f;
|
||||
center = new float[] { width * 0.5f, height * 0.5f };
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getAlpha(float x, float y) {
|
||||
float d = FastMath.abs(FastMath.sqrt((x - center[0]) * (x - center[0]) + (y - center[1]) * (y - center[1]))) / r;
|
||||
return d >= 1.0f ? 0 : (byte) ((-FastMath.sqrt((2.0f - d) * d) + 1.0f) * 255.0f);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -554,6 +554,7 @@ public final class DQuaternion implements Savable, Cloneable, java.io.Serializab
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter e) throws IOException {
|
||||
OutputCapsule cap = e.getCapsule(this);
|
||||
cap.write(x, "x", 0);
|
||||
@ -562,6 +563,7 @@ public final class DQuaternion implements Savable, Cloneable, java.io.Serializab
|
||||
cap.write(w, "w", 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter e) throws IOException {
|
||||
InputCapsule cap = e.getCapsule(this);
|
||||
x = cap.readFloat("x", 0);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -158,6 +158,7 @@ public final class DTransform implements Savable, Cloneable, java.io.Serializabl
|
||||
return this.getClass().getSimpleName() + "[ " + translation.x + ", " + translation.y + ", " + translation.z + "]\n" + "[ " + rotation.x + ", " + rotation.y + ", " + rotation.z + ", " + rotation.w + "]\n" + "[ " + scale.x + " , " + scale.y + ", " + scale.z + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter e) throws IOException {
|
||||
OutputCapsule capsule = e.getCapsule(this);
|
||||
capsule.write(rotation, "rot", new DQuaternion());
|
||||
@ -165,6 +166,7 @@ public final class DTransform implements Savable, Cloneable, java.io.Serializabl
|
||||
capsule.write(scale, "scale", Vector3d.UNIT_XYZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter e) throws IOException {
|
||||
InputCapsule capsule = e.getCapsule(this);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -851,6 +851,7 @@ public final class Vector3d implements Savable, Cloneable, Serializable {
|
||||
return "(" + x + ", " + y + ", " + z + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter e) throws IOException {
|
||||
OutputCapsule capsule = e.getCapsule(this);
|
||||
capsule.write(x, "x", 0);
|
||||
@ -858,6 +859,7 @@ public final class Vector3d implements Savable, Cloneable, Serializable {
|
||||
capsule.write(z, "z", 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter e) throws IOException {
|
||||
InputCapsule capsule = e.getCapsule(this);
|
||||
x = capsule.readDouble("x", 0);
|
||||
|
@ -160,6 +160,7 @@ import com.jme3.util.TempVars;
|
||||
Vector3f[] uvsArray = uvs.toArray(new Vector3f[uvs.size()]);
|
||||
BoundingBox boundingBox = UVCoordinatesGenerator.getBoundingBox(geometries);
|
||||
Set<TriangleTextureElement> triangleTextureElements = new TreeSet<TriangleTextureElement>(new Comparator<TriangleTextureElement>() {
|
||||
@Override
|
||||
public int compare(TriangleTextureElement o1, TriangleTextureElement o2) {
|
||||
return o1.faceIndex - o2.faceIndex;
|
||||
}
|
||||
|
@ -70,6 +70,7 @@ import com.jme3.util.BufferUtils;
|
||||
public TriangulatedTexture(Texture2D texture2d, List<Vector2f> uvs, BlenderContext blenderContext) {
|
||||
maxTextureSize = blenderContext.getBlenderKey().getMaxTextureSize();
|
||||
faceTextures = new TreeSet<TriangleTextureElement>(new Comparator<TriangleTextureElement>() {
|
||||
@Override
|
||||
public int compare(TriangleTextureElement o1, TriangleTextureElement o2) {
|
||||
return o1.faceIndex - o2.faceIndex;
|
||||
}
|
||||
@ -184,6 +185,7 @@ import com.jme3.util.BufferUtils;
|
||||
// sorting the parts by their height (from highest to the lowest)
|
||||
List<TriangleTextureElement> list = new ArrayList<TriangleTextureElement>(faceTextures);
|
||||
Collections.sort(list, new Comparator<TriangleTextureElement>() {
|
||||
@Override
|
||||
public int compare(TriangleTextureElement o1, TriangleTextureElement o2) {
|
||||
return o2.image.getHeight() - o1.image.getHeight();
|
||||
}
|
||||
|
@ -103,6 +103,7 @@ import com.jme3.texture.Image;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyBlendingData(TextureBlender textureBlender) {
|
||||
if (textureBlender instanceof AbstractTextureBlender) {
|
||||
flag = ((AbstractTextureBlender) textureBlender).flag;
|
||||
|
@ -43,6 +43,7 @@ public class TextureBlenderLuminance extends AbstractTextureBlender {
|
||||
super(flag, negateTexture, blendType, materialColor, color, blendFactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Image blend(Image image, Image baseImage, BlenderContext blenderContext) {
|
||||
this.prepareImagesForBlending(image, baseImage);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -109,30 +109,36 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
static {
|
||||
noiseFunctions.put(Integer.valueOf(0), new NoiseFunction() {
|
||||
// originalBlenderNoise
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
return NoiseFunctions.originalBlenderNoise(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
return 2.0f * NoiseFunctions.originalBlenderNoise(x, y, z) - 1.0f;
|
||||
}
|
||||
});
|
||||
noiseFunctions.put(Integer.valueOf(1), new NoiseFunction() {
|
||||
// orgPerlinNoise
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
return 0.5f + 0.5f * NoiseFunctions.noise3Perlin(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
return NoiseFunctions.noise3Perlin(x, y, z);
|
||||
}
|
||||
});
|
||||
noiseFunctions.put(Integer.valueOf(2), new NoiseFunction() {
|
||||
// newPerlin
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
return 0.5f + 0.5f * NoiseFunctions.newPerlin(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
return this.execute(x, y, z);
|
||||
}
|
||||
@ -142,11 +148,13 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
private final float[] pa = new float[12];
|
||||
|
||||
// voronoi_F1
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return da[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return 2.0f * da[0] - 1.0f;
|
||||
@ -157,11 +165,13 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
private final float[] pa = new float[12];
|
||||
|
||||
// voronoi_F2
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return da[1];
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return 2.0f * da[1] - 1.0f;
|
||||
@ -172,11 +182,13 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
private final float[] pa = new float[12];
|
||||
|
||||
// voronoi_F3
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return da[2];
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return 2.0f * da[2] - 1.0f;
|
||||
@ -187,11 +199,13 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
private final float[] pa = new float[12];
|
||||
|
||||
// voronoi_F4
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return da[3];
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return 2.0f * da[3] - 1.0f;
|
||||
@ -202,11 +216,13 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
private final float[] pa = new float[12];
|
||||
|
||||
// voronoi_F1F2
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return da[1] - da[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
NoiseFunctions.voronoi(x, y, z, da, pa, 1, NATURAL_DISTANCE_FUNCTION);
|
||||
return 2.0f * (da[1] - da[0]) - 1.0f;
|
||||
@ -216,11 +232,13 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
private final NoiseFunction voronoiF1F2NoiseFunction = noiseFunctions.get(Integer.valueOf(7));
|
||||
|
||||
// voronoi_Cr
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
float t = 10 * voronoiF1F2NoiseFunction.execute(x, y, z);
|
||||
return t > 1.0f ? 1.0f : t;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
float t = 10.0f * voronoiF1F2NoiseFunction.execute(x, y, z);
|
||||
return t > 1.0f ? 1.0f : 2.0f * t - 1.0f;
|
||||
@ -228,6 +246,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
});
|
||||
noiseFunctions.put(Integer.valueOf(14), new NoiseFunction() {
|
||||
// cellNoise
|
||||
@Override
|
||||
public float execute(float x, float y, float z) {
|
||||
int xi = (int) FastMath.floor(x);
|
||||
int yi = (int) FastMath.floor(y);
|
||||
@ -237,6 +256,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
return (n * (n * n * 15731 + 789221) + 1376312589) / 4294967296.0f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float executeSigned(float x, float y, float z) {
|
||||
return 2.0f * this.execute(x, y, z) - 1.0f;
|
||||
}
|
||||
@ -248,24 +268,28 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
static {
|
||||
distanceFunctions.put(Integer.valueOf(0), new DistanceFunction() {
|
||||
// real distance
|
||||
@Override
|
||||
public float execute(float x, float y, float z, float e) {
|
||||
return (float) Math.sqrt(x * x + y * y + z * z);
|
||||
}
|
||||
});
|
||||
distanceFunctions.put(Integer.valueOf(1), new DistanceFunction() {
|
||||
// distance squared
|
||||
@Override
|
||||
public float execute(float x, float y, float z, float e) {
|
||||
return x * x + y * y + z * z;
|
||||
}
|
||||
});
|
||||
distanceFunctions.put(Integer.valueOf(2), new DistanceFunction() {
|
||||
// manhattan/taxicab/cityblock distance
|
||||
@Override
|
||||
public float execute(float x, float y, float z, float e) {
|
||||
return FastMath.abs(x) + FastMath.abs(y) + FastMath.abs(z);
|
||||
}
|
||||
});
|
||||
distanceFunctions.put(Integer.valueOf(3), new DistanceFunction() {
|
||||
// Chebychev
|
||||
@Override
|
||||
public float execute(float x, float y, float z, float e) {
|
||||
x = FastMath.abs(x);
|
||||
y = FastMath.abs(y);
|
||||
@ -276,6 +300,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
});
|
||||
distanceFunctions.put(Integer.valueOf(4), new DistanceFunction() {
|
||||
// Minkovsky, preset exponent 0.5 (MinkovskyH)
|
||||
@Override
|
||||
public float execute(float x, float y, float z, float e) {
|
||||
float d = (float) (Math.sqrt(FastMath.abs(x)) + Math.sqrt(FastMath.abs(y)) + Math.sqrt(FastMath.abs(z)));
|
||||
return d * d;
|
||||
@ -283,6 +308,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
});
|
||||
distanceFunctions.put(Integer.valueOf(5), new DistanceFunction() {
|
||||
// Minkovsky, preset exponent 0.25 (Minkovsky4)
|
||||
@Override
|
||||
public float execute(float x, float y, float z, float e) {
|
||||
x *= x;
|
||||
y *= y;
|
||||
@ -292,6 +318,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
});
|
||||
distanceFunctions.put(Integer.valueOf(6), new DistanceFunction() {
|
||||
// Minkovsky, general case
|
||||
@Override
|
||||
public float execute(float x, float y, float z, float e) {
|
||||
return (float) Math.pow(Math.pow(FastMath.abs(x), e) + Math.pow(FastMath.abs(y), e) + Math.pow(FastMath.abs(z), e), 1.0f / e);
|
||||
}
|
||||
@ -303,6 +330,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
static {
|
||||
musgraveFunctions.put(Integer.valueOf(TEX_MFRACTAL), new MusgraveFunction() {
|
||||
|
||||
@Override
|
||||
public float execute(MusgraveData musgraveData, float x, float y, float z) {
|
||||
float rmd, value = 1.0f, pwr = 1.0f, pwHL = (float) Math.pow(musgraveData.lacunarity, -musgraveData.h);
|
||||
|
||||
@ -322,6 +350,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
});
|
||||
musgraveFunctions.put(Integer.valueOf(TEX_RIDGEDMF), new MusgraveFunction() {
|
||||
|
||||
@Override
|
||||
public float execute(MusgraveData musgraveData, float x, float y, float z) {
|
||||
float result, signal, weight;
|
||||
float pwHL = (float) Math.pow(musgraveData.lacunarity, -musgraveData.h);
|
||||
@ -353,6 +382,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
});
|
||||
musgraveFunctions.put(Integer.valueOf(TEX_HYBRIDMF), new MusgraveFunction() {
|
||||
|
||||
@Override
|
||||
public float execute(MusgraveData musgraveData, float x, float y, float z) {
|
||||
float result, signal, weight, rmd;
|
||||
float pwHL = (float) Math.pow(musgraveData.lacunarity, -musgraveData.h);
|
||||
@ -386,6 +416,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
});
|
||||
musgraveFunctions.put(Integer.valueOf(TEX_FBM), new MusgraveFunction() {
|
||||
|
||||
@Override
|
||||
public float execute(MusgraveData musgraveData, float x, float y, float z) {
|
||||
float rmd, value = 0.0f, pwr = 1.0f, pwHL = (float) Math.pow(musgraveData.lacunarity, -musgraveData.h);
|
||||
|
||||
@ -406,6 +437,7 @@ import com.jme3.scene.plugins.blender.textures.generating.TextureGeneratorMusgra
|
||||
});
|
||||
musgraveFunctions.put(Integer.valueOf(TEX_HTERRAIN), new MusgraveFunction() {
|
||||
|
||||
@Override
|
||||
public float execute(MusgraveData musgraveData, float x, float y, float z) {
|
||||
float value, increment, rmd;
|
||||
float pwHL = (float) Math.pow(musgraveData.lacunarity, -musgraveData.h);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -46,17 +46,20 @@ public final class TextureGeneratorBlend extends TextureGenerator {
|
||||
private static final IntensityFunction INTENSITY_FUNCTION[] = new IntensityFunction[7];
|
||||
static {
|
||||
INTENSITY_FUNCTION[0] = new IntensityFunction() {// Linear: stype = 0 (TEX_LIN)
|
||||
@Override
|
||||
public float getIntensity(float x, float y, float z) {
|
||||
return (1.0f + x) * 0.5f;
|
||||
}
|
||||
};
|
||||
INTENSITY_FUNCTION[1] = new IntensityFunction() {// Quad: stype = 1 (TEX_QUAD)
|
||||
@Override
|
||||
public float getIntensity(float x, float y, float z) {
|
||||
float result = (1.0f + x) * 0.5f;
|
||||
return result * result;
|
||||
}
|
||||
};
|
||||
INTENSITY_FUNCTION[2] = new IntensityFunction() {// Ease: stype = 2 (TEX_EASE)
|
||||
@Override
|
||||
public float getIntensity(float x, float y, float z) {
|
||||
float result = (1.0f + x) * 0.5f;
|
||||
if (result <= 0.0f) {
|
||||
@ -69,23 +72,27 @@ public final class TextureGeneratorBlend extends TextureGenerator {
|
||||
}
|
||||
};
|
||||
INTENSITY_FUNCTION[3] = new IntensityFunction() {// Diagonal: stype = 3 (TEX_DIAG)
|
||||
@Override
|
||||
public float getIntensity(float x, float y, float z) {
|
||||
return (2.0f + x + y) * 0.25f;
|
||||
}
|
||||
};
|
||||
INTENSITY_FUNCTION[4] = new IntensityFunction() {// Sphere: stype = 4 (TEX_SPHERE)
|
||||
@Override
|
||||
public float getIntensity(float x, float y, float z) {
|
||||
float result = 1.0f - (float) Math.sqrt(x * x + y * y + z * z);
|
||||
return result < 0.0f ? 0.0f : result;
|
||||
}
|
||||
};
|
||||
INTENSITY_FUNCTION[5] = new IntensityFunction() {// Halo: stype = 5 (TEX_HALO)
|
||||
@Override
|
||||
public float getIntensity(float x, float y, float z) {
|
||||
float result = 1.0f - (float) Math.sqrt(x * x + y * y + z * z);
|
||||
return result <= 0.0f ? 0.0f : result * result;
|
||||
}
|
||||
};
|
||||
INTENSITY_FUNCTION[6] = new IntensityFunction() {// Radial: stype = 6 (TEX_RAD)
|
||||
@Override
|
||||
public float getIntensity(float x, float y, float z) {
|
||||
return (float) Math.atan2(y, x) * FastMath.INV_TWO_PI + 0.5f;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -45,51 +45,61 @@ public class TextureGeneratorMagic extends TextureGenerator {
|
||||
private static NoiseDepthFunction[] noiseDepthFunctions = new NoiseDepthFunction[10];
|
||||
static {
|
||||
noiseDepthFunctions[0] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[1] = -(float) Math.cos(xyz[0] - xyz[1] + xyz[2]) * turbulence;
|
||||
}
|
||||
};
|
||||
noiseDepthFunctions[1] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[0] = (float) Math.cos(xyz[0] - xyz[1] - xyz[2]) * turbulence;
|
||||
}
|
||||
};
|
||||
noiseDepthFunctions[2] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[2] = (float) Math.sin(-xyz[0] - xyz[1] - xyz[2]) * turbulence;
|
||||
}
|
||||
};
|
||||
noiseDepthFunctions[3] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[0] = -(float) Math.cos(-xyz[0] + xyz[1] - xyz[2]) * turbulence;
|
||||
}
|
||||
};
|
||||
noiseDepthFunctions[4] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[1] = -(float) Math.sin(-xyz[0] + xyz[1] + xyz[2]) * turbulence;
|
||||
}
|
||||
};
|
||||
noiseDepthFunctions[5] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[1] = -(float) Math.cos(-xyz[0] + xyz[1] + xyz[2]) * turbulence;
|
||||
}
|
||||
};
|
||||
noiseDepthFunctions[6] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[0] = (float) Math.cos(xyz[0] + xyz[1] + xyz[2]) * turbulence;
|
||||
}
|
||||
};
|
||||
noiseDepthFunctions[7] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[2] = (float) Math.sin(xyz[0] + xyz[1] - xyz[2]) * turbulence;
|
||||
}
|
||||
};
|
||||
noiseDepthFunctions[8] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[0] = -(float) Math.cos(-xyz[0] - xyz[1] + xyz[2]) * turbulence;
|
||||
}
|
||||
};
|
||||
noiseDepthFunctions[9] = new NoiseDepthFunction() {
|
||||
@Override
|
||||
public void compute(float[] xyz, float turbulence) {
|
||||
xyz[1] = -(float) Math.sin(xyz[0] - xyz[1] + xyz[2]) * turbulence;
|
||||
}
|
||||
|
@ -95,12 +95,14 @@ public class TextureGeneratorWood extends TextureGenerator {
|
||||
static {
|
||||
waveformFunctions[0] = new WaveForm() {// sinus (TEX_SIN)
|
||||
|
||||
@Override
|
||||
public float execute(float x) {
|
||||
return 0.5f + 0.5f * (float) Math.sin(x);
|
||||
}
|
||||
};
|
||||
waveformFunctions[1] = new WaveForm() {// saw (TEX_SAW)
|
||||
|
||||
@Override
|
||||
public float execute(float x) {
|
||||
int n = (int) (x * FastMath.INV_TWO_PI);
|
||||
x -= n * FastMath.TWO_PI;
|
||||
@ -112,6 +114,7 @@ public class TextureGeneratorWood extends TextureGenerator {
|
||||
};
|
||||
waveformFunctions[2] = new WaveForm() {// triangle (TEX_TRI)
|
||||
|
||||
@Override
|
||||
public float execute(float x) {
|
||||
return 1.0f - 2.0f * FastMath.abs((float) Math.floor(x * FastMath.INV_TWO_PI + 0.5f) - x * FastMath.INV_TWO_PI);
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import jme3tools.converters.RGB565;
|
||||
* @author Marcin Roguski (Kaelthas)
|
||||
*/
|
||||
/* package */class AWTPixelInputOutput implements PixelInputOutput {
|
||||
@Override
|
||||
public void read(Image image, int layer, TexturePixel pixel, int index) {
|
||||
ByteBuffer data = image.getData(layer);
|
||||
switch (image.getFormat()) {
|
||||
@ -64,11 +65,13 @@ import jme3tools.converters.RGB565;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(Image image, int layer, TexturePixel pixel, int x, int y) {
|
||||
int index = (y * image.getWidth() + x) * (image.getFormat().getBitsPerPixel() >> 3);
|
||||
this.read(image, layer, pixel, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Image image, int layer, TexturePixel pixel, int index) {
|
||||
ByteBuffer data = image.getData(layer);
|
||||
switch (image.getFormat()) {
|
||||
@ -149,6 +152,7 @@ import jme3tools.converters.RGB565;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Image image, int layer, TexturePixel pixel, int x, int y) {
|
||||
int index = (y * image.getWidth() + x) * (image.getFormat().getBitsPerPixel() >> 3);
|
||||
this.write(image, layer, pixel, index);
|
||||
|
@ -15,10 +15,12 @@ import jme3tools.converters.RGB565;
|
||||
/**
|
||||
* For this class the index should be considered as a pixel index in AWT image format.
|
||||
*/
|
||||
@Override
|
||||
public void read(Image image, int layer, TexturePixel pixel, int index) {
|
||||
this.read(image, layer, pixel, index % image.getWidth(), index / image.getWidth());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(Image image, int layer, TexturePixel pixel, int x, int y) {
|
||||
int xTexetlIndex = x % image.getWidth() >> 2;
|
||||
int yTexelIndex = y % image.getHeight() >> 2;
|
||||
@ -161,10 +163,12 @@ import jme3tools.converters.RGB565;
|
||||
pixel.alpha = alpha;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Image image, int layer, TexturePixel pixel, int index) {
|
||||
throw new UnsupportedOperationException("Cannot put the DXT pixel by index because not every index contains the pixel color!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Image image, int layer, TexturePixel pixel, int x, int y) {
|
||||
throw new UnsupportedOperationException("Writing to DDS texture pixel by pixel is not yet supported!");
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import java.nio.ByteBuffer;
|
||||
* @author Marcin Roguski (Kaelthas)
|
||||
*/
|
||||
/* package */class LuminancePixelInputOutput implements PixelInputOutput {
|
||||
@Override
|
||||
public void read(Image image, int layer, TexturePixel pixel, int index) {
|
||||
ByteBuffer data = image.getData(layer);
|
||||
switch (image.getFormat()) {
|
||||
@ -36,11 +37,13 @@ import java.nio.ByteBuffer;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(Image image, int layer, TexturePixel pixel, int x, int y) {
|
||||
int index = y * image.getWidth() + x;
|
||||
this.read(image, layer, pixel, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Image image, int layer, TexturePixel pixel, int index) {
|
||||
ByteBuffer data = image.getData(layer);
|
||||
data.put(index, pixel.getInt());
|
||||
@ -67,6 +70,7 @@ import java.nio.ByteBuffer;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Image image, int layer, TexturePixel pixel, int x, int y) {
|
||||
int index = y * image.getWidth() + x;
|
||||
this.write(image, layer, pixel, index);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -182,6 +182,7 @@ public class BulletAppState
|
||||
executor = new ScheduledThreadPoolExecutor(1);
|
||||
final BulletAppState app = this;
|
||||
Callable<Boolean> call = new Callable<Boolean>() {
|
||||
@Override
|
||||
public Boolean call() throws Exception {
|
||||
detachedPhysicsLastUpdate = System.currentTimeMillis();
|
||||
pSpace = new PhysicsSpace(worldMin, worldMax, broadphaseType);
|
||||
@ -200,6 +201,7 @@ public class BulletAppState
|
||||
}
|
||||
}
|
||||
private Callable<Boolean> parallelPhysicsUpdate = new Callable<Boolean>() {
|
||||
@Override
|
||||
public Boolean call() throws Exception {
|
||||
pSpace.update(tpf * getSpeed());
|
||||
return true;
|
||||
@ -207,6 +209,7 @@ public class BulletAppState
|
||||
};
|
||||
long detachedPhysicsLastUpdate = 0;
|
||||
private Callable<Boolean> detachedPhysicsUpdate = new Callable<Boolean>() {
|
||||
@Override
|
||||
public Boolean call() throws Exception {
|
||||
pSpace.update(getPhysicsSpace().getAccuracy() * getSpeed());
|
||||
pSpace.distributeEvents();
|
||||
@ -484,6 +487,7 @@ public class BulletAppState
|
||||
* @param space the space that is about to be stepped (not null)
|
||||
* @param f the time per physics step (in seconds, ≥0)
|
||||
*/
|
||||
@Override
|
||||
public void prePhysicsTick(PhysicsSpace space, float f) {
|
||||
}
|
||||
|
||||
@ -494,6 +498,7 @@ public class BulletAppState
|
||||
* @param space the space that is about to be stepped (not null)
|
||||
* @param f the time per physics step (in seconds, ≥0)
|
||||
*/
|
||||
@Override
|
||||
public void physicsTick(PhysicsSpace space, float f) {
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -89,6 +89,7 @@ public class ChildCollisionShape implements Savable {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
capsule.write(location, "location", new Vector3f());
|
||||
@ -102,6 +103,7 @@ public class ChildCollisionShape implements Savable {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
location = (Vector3f) capsule.readSavable("location", new Vector3f());
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2018 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -231,6 +231,7 @@ public abstract class AbstractPhysicsControl implements PhysicsControl, JmeClone
|
||||
*
|
||||
* @param spatial the spatial to control (or null)
|
||||
*/
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial) {
|
||||
if (this.spatial != null && this.spatial != spatial) {
|
||||
removeSpatialData(this.spatial);
|
||||
@ -262,6 +263,7 @@ public abstract class AbstractPhysicsControl implements PhysicsControl, JmeClone
|
||||
*
|
||||
* @param enabled true→enable the control, false→disable it
|
||||
*/
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
if (space != null) {
|
||||
@ -284,13 +286,16 @@ public abstract class AbstractPhysicsControl implements PhysicsControl, JmeClone
|
||||
*
|
||||
* @return true if enabled, otherwise false
|
||||
*/
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(RenderManager rm, ViewPort vp) {
|
||||
}
|
||||
|
||||
@ -326,6 +331,7 @@ public abstract class AbstractPhysicsControl implements PhysicsControl, JmeClone
|
||||
*
|
||||
* @return the pre-existing space, or null for none
|
||||
*/
|
||||
@Override
|
||||
public PhysicsSpace getPhysicsSpace() {
|
||||
return space;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -194,6 +194,7 @@ public class BetterCharacterControl extends AbstractPhysicsControl implements Ph
|
||||
* @param space the space that is about to be stepped (not null)
|
||||
* @param tpf the time per physics step (in seconds, ≥0)
|
||||
*/
|
||||
@Override
|
||||
public void prePhysicsTick(PhysicsSpace space, float tpf) {
|
||||
checkOnGround();
|
||||
if (wantToUnDuck && checkCanUnDuck()) {
|
||||
@ -245,6 +246,7 @@ public class BetterCharacterControl extends AbstractPhysicsControl implements Ph
|
||||
* @param space the space that was just stepped (not null)
|
||||
* @param tpf the time per physics step (in seconds, ≥0)
|
||||
*/
|
||||
@Override
|
||||
public void physicsTick(PhysicsSpace space, float tpf) {
|
||||
rigidBody.getLinearVelocity(velocity);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2018 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -120,6 +120,7 @@ public class CharacterControl extends PhysicsCharacter implements PhysicsControl
|
||||
this.spatial = cloner.clone(spatial);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial) {
|
||||
this.spatial = spatial;
|
||||
setUserObject(spatial);
|
||||
@ -136,6 +137,7 @@ public class CharacterControl extends PhysicsCharacter implements PhysicsControl
|
||||
return this.spatial;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
if (space != null) {
|
||||
@ -152,6 +154,7 @@ public class CharacterControl extends PhysicsCharacter implements PhysicsControl
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
@ -172,6 +175,7 @@ public class CharacterControl extends PhysicsCharacter implements PhysicsControl
|
||||
this.useViewDirection = viewDirectionEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
if (enabled && spatial != null) {
|
||||
Quaternion localRotationQuat = spatial.getLocalRotation();
|
||||
@ -195,6 +199,7 @@ public class CharacterControl extends PhysicsCharacter implements PhysicsControl
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(RenderManager rm, ViewPort vp) {
|
||||
}
|
||||
|
||||
@ -225,6 +230,7 @@ public class CharacterControl extends PhysicsCharacter implements PhysicsControl
|
||||
space = newSpace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PhysicsSpace getPhysicsSpace() {
|
||||
return space;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -196,6 +196,7 @@ public class GhostControl extends PhysicsGhostObject implements PhysicsControl,
|
||||
*
|
||||
* @param spatial the spatial to control (or null)
|
||||
*/
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial) {
|
||||
this.spatial = spatial;
|
||||
setUserObject(spatial);
|
||||
@ -222,6 +223,7 @@ public class GhostControl extends PhysicsGhostObject implements PhysicsControl,
|
||||
*
|
||||
* @param enabled true→enable the control, false→disable it
|
||||
*/
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
if (space != null) {
|
||||
@ -244,6 +246,7 @@ public class GhostControl extends PhysicsGhostObject implements PhysicsControl,
|
||||
*
|
||||
* @return true if enabled, otherwise false
|
||||
*/
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
@ -255,6 +258,7 @@ public class GhostControl extends PhysicsGhostObject implements PhysicsControl,
|
||||
*
|
||||
* @param tpf the time interval between frames (in seconds, ≥0)
|
||||
*/
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
if (!enabled) {
|
||||
return;
|
||||
@ -271,6 +275,7 @@ public class GhostControl extends PhysicsGhostObject implements PhysicsControl,
|
||||
* @param rm the render manager (not null)
|
||||
* @param vp the view port to render (not null)
|
||||
*/
|
||||
@Override
|
||||
public void render(RenderManager rm, ViewPort vp) {
|
||||
}
|
||||
|
||||
@ -307,6 +312,7 @@ public class GhostControl extends PhysicsGhostObject implements PhysicsControl,
|
||||
*
|
||||
* @return the pre-existing space, or null for none
|
||||
*/
|
||||
@Override
|
||||
public PhysicsSpace getPhysicsSpace() {
|
||||
return space;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2018 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -817,6 +817,7 @@ public class KinematicRagdollControl extends AbstractPhysicsControl implements P
|
||||
*
|
||||
* @param event (not null)
|
||||
*/
|
||||
@Override
|
||||
public void collision(PhysicsCollisionEvent event) {
|
||||
PhysicsCollisionObject objA = event.getObjectA();
|
||||
PhysicsCollisionObject objB = event.getObjectB();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -193,6 +193,7 @@ public class RigidBodyControl extends PhysicsRigidBody implements PhysicsControl
|
||||
*
|
||||
* @param spatial the spatial to control (or null)
|
||||
*/
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial) {
|
||||
this.spatial = spatial;
|
||||
setUserObject(spatial);
|
||||
@ -249,6 +250,7 @@ public class RigidBodyControl extends PhysicsRigidBody implements PhysicsControl
|
||||
*
|
||||
* @param enabled true→enable the control, false→disable it
|
||||
*/
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
if (space != null) {
|
||||
@ -271,6 +273,7 @@ public class RigidBodyControl extends PhysicsRigidBody implements PhysicsControl
|
||||
*
|
||||
* @return true if enabled, otherwise false
|
||||
*/
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
@ -347,6 +350,7 @@ public class RigidBodyControl extends PhysicsRigidBody implements PhysicsControl
|
||||
*
|
||||
* @param tpf the time interval between frames (in seconds, ≥0)
|
||||
*/
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
if (enabled && spatial != null) {
|
||||
if (isKinematic() && kinematicSpatial) {
|
||||
@ -366,6 +370,7 @@ public class RigidBodyControl extends PhysicsRigidBody implements PhysicsControl
|
||||
* @param rm the render manager (not null)
|
||||
* @param vp the view port to render (not null)
|
||||
*/
|
||||
@Override
|
||||
public void render(RenderManager rm, ViewPort vp) {
|
||||
}
|
||||
|
||||
@ -401,6 +406,7 @@ public class RigidBodyControl extends PhysicsRigidBody implements PhysicsControl
|
||||
*
|
||||
* @return the pre-existing space, or null for none
|
||||
*/
|
||||
@Override
|
||||
public PhysicsSpace getPhysicsSpace() {
|
||||
return space;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -159,6 +159,7 @@ public class VehicleControl extends PhysicsVehicle implements PhysicsControl, Jm
|
||||
*
|
||||
* @return a new control (not null)
|
||||
*/
|
||||
@Override
|
||||
public Object jmeClone() {
|
||||
VehicleControl control = new VehicleControl(collisionShape, mass);
|
||||
control.setAngularFactor(getAngularFactor());
|
||||
@ -231,6 +232,7 @@ public class VehicleControl extends PhysicsVehicle implements PhysicsControl, Jm
|
||||
*
|
||||
* @param spatial spatial to control (or null)
|
||||
*/
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial) {
|
||||
this.spatial = spatial;
|
||||
setUserObject(spatial);
|
||||
@ -250,6 +252,7 @@ public class VehicleControl extends PhysicsVehicle implements PhysicsControl, Jm
|
||||
*
|
||||
* @param enabled true→enable the control, false→disable it
|
||||
*/
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
if (space != null) {
|
||||
@ -272,6 +275,7 @@ public class VehicleControl extends PhysicsVehicle implements PhysicsControl, Jm
|
||||
*
|
||||
* @return true if enabled, otherwise false
|
||||
*/
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
@ -282,6 +286,7 @@ public class VehicleControl extends PhysicsVehicle implements PhysicsControl, Jm
|
||||
*
|
||||
* @param tpf the time interval between frames (in seconds, ≥0)
|
||||
*/
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
if (enabled && spatial != null) {
|
||||
if (getMotionState().applyTransform(spatial)) {
|
||||
@ -301,6 +306,7 @@ public class VehicleControl extends PhysicsVehicle implements PhysicsControl, Jm
|
||||
* @param rm the render manager (not null)
|
||||
* @param vp the view port to render (not null)
|
||||
*/
|
||||
@Override
|
||||
public void render(RenderManager rm, ViewPort vp) {
|
||||
}
|
||||
|
||||
@ -336,6 +342,7 @@ public class VehicleControl extends PhysicsVehicle implements PhysicsControl, Jm
|
||||
*
|
||||
* @return the pre-existing space, or null for none
|
||||
*/
|
||||
@Override
|
||||
public PhysicsSpace getPhysicsSpace() {
|
||||
return space;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -86,6 +86,7 @@ public class BoxCollisionShape extends CollisionShape {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -98,6 +99,7 @@ public class BoxCollisionShape extends CollisionShape {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -141,6 +141,7 @@ public class CapsuleCollisionShape extends CollisionShape{
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -155,6 +156,7 @@ public class CapsuleCollisionShape extends CollisionShape{
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -201,6 +201,7 @@ public abstract class CollisionShape implements Savable {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
capsule.write(scale, "scale", new Vector3f(1, 1, 1));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2018 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -152,6 +152,7 @@ public class CompoundCollisionShape extends CollisionShape {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -164,6 +165,7 @@ public class CompoundCollisionShape extends CollisionShape {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -119,6 +119,7 @@ public class ConeCollisionShape extends CollisionShape {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -133,6 +134,7 @@ public class ConeCollisionShape extends CollisionShape {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -128,6 +128,7 @@ public class CylinderCollisionShape extends CollisionShape {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -141,6 +142,7 @@ public class CylinderCollisionShape extends CollisionShape {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -122,6 +122,7 @@ public class GImpactCollisionShape extends CollisionShape {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -141,6 +142,7 @@ public class GImpactCollisionShape extends CollisionShape {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -193,6 +193,7 @@ public class HeightfieldCollisionShape extends CollisionShape {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -212,6 +213,7 @@ public class HeightfieldCollisionShape extends CollisionShape {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -84,6 +84,7 @@ public class PlaneCollisionShape extends CollisionShape{
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -96,6 +97,7 @@ public class PlaneCollisionShape extends CollisionShape{
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -118,6 +118,7 @@ public class SimplexCollisionShape extends CollisionShape {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -133,6 +134,7 @@ public class SimplexCollisionShape extends CollisionShape {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -85,6 +85,7 @@ public class SphereCollisionShape extends CollisionShape {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -97,6 +98,7 @@ public class SphereCollisionShape extends CollisionShape {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -242,6 +242,7 @@ public class HingeJoint extends PhysicsJoint {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
super.write(ex);
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
@ -268,6 +269,7 @@ public class HingeJoint extends PhysicsJoint {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
super.read(im);
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -192,6 +192,7 @@ public abstract class PhysicsJoint implements Savable {
|
||||
* @param ex exporter (not null)
|
||||
* @throws IOException from exporter
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule capsule = ex.getCapsule(this);
|
||||
capsule.write(nodeA, "nodeA", null);
|
||||
@ -206,6 +207,7 @@ public abstract class PhysicsJoint implements Savable {
|
||||
* @param im importer (not null)
|
||||
* @throws IOException from importer
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule capsule = im.getCapsule(this);
|
||||
this.nodeA = ((PhysicsRigidBody) capsule.readSavable("nodeA", null));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -794,6 +794,7 @@ public class PhysicsRigidBody extends PhysicsCollisionObject {
|
||||
*
|
||||
* @param collisionShape the shape to apply (not null, alias created)
|
||||
*/
|
||||
@Override
|
||||
public void setCollisionShape(CollisionShape collisionShape) {
|
||||
super.setCollisionShape(collisionShape);
|
||||
if (collisionShape instanceof MeshCollisionShape && mass != 0) {
|
||||
|
@ -216,6 +216,7 @@ public class Joint implements Savable, JmeCloneable, HasLocalTransform {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLocalTransform(Transform localTransform) {
|
||||
this.localTransform.set(localTransform);
|
||||
}
|
||||
@ -272,6 +273,7 @@ public class Joint implements Savable, JmeCloneable, HasLocalTransform {
|
||||
return initialTransform;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Transform getLocalTransform() {
|
||||
return localTransform;
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ public class MatrixJointModelTransform implements JointModelTransform {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getOffsetTransform(Matrix4f outTransform, Matrix4f inverseModelBindMatrix) {
|
||||
modelTransformMatrix.mult(inverseModelBindMatrix, outTransform);
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ public class SeparateJointModelTransform implements JointModelTransform {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getOffsetTransform(Matrix4f outTransform, Matrix4f inverseModelBindMatrix) {
|
||||
modelTransform.toTransformMatrix(outTransform).mult(inverseModelBindMatrix, outTransform);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -208,10 +208,12 @@ public class TransformTrack implements AnimTrack<Transform> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getLength() {
|
||||
return length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getDataAtTime(double t, Transform transform) {
|
||||
float time = (float) t;
|
||||
|
||||
|
@ -49,6 +49,7 @@ public class BlendAction extends BlendableAction {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doInterpolate(double t) {
|
||||
blendWeight = blendSpace.getWeight();
|
||||
BlendableAction firstActiveAction = (BlendableAction) actions[firstActiveIndex];
|
||||
|
@ -63,6 +63,7 @@ public class ClipAction extends BlendableAction {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return clip.toString();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -73,10 +73,12 @@ public class AudioTrack implements ClonableTrack {
|
||||
//Animation listener to stop the sound when the animation ends or is changed
|
||||
private class OnEndListener implements AnimEventListener {
|
||||
|
||||
@Override
|
||||
public void onAnimCycleDone(AnimControl control, AnimChannel channel, String animName) {
|
||||
stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimChange(AnimControl control, AnimChannel channel, String animName) {
|
||||
}
|
||||
}
|
||||
@ -120,6 +122,7 @@ public class AudioTrack implements ClonableTrack {
|
||||
* @see Track#setTime(float, float, com.jme3.animation.AnimControl,
|
||||
* com.jme3.animation.AnimChannel, com.jme3.util.TempVars)
|
||||
*/
|
||||
@Override
|
||||
public void setTime(float time, float weight, AnimControl control, AnimChannel channel, TempVars vars) {
|
||||
|
||||
if (time >= length) {
|
||||
@ -146,6 +149,7 @@ public class AudioTrack implements ClonableTrack {
|
||||
*
|
||||
* @return length of the track
|
||||
*/
|
||||
@Override
|
||||
public float getLength() {
|
||||
return length;
|
||||
}
|
||||
@ -255,6 +259,7 @@ public class AudioTrack implements ClonableTrack {
|
||||
data.addTrack(audioTrack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanUp() {
|
||||
TrackInfo t = (TrackInfo) audio.getUserData("TrackInfo");
|
||||
t.getTracks().remove(this);
|
||||
@ -308,6 +313,7 @@ public class AudioTrack implements ClonableTrack {
|
||||
* @param ex exporter
|
||||
* @throws IOException exception
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule out = ex.getCapsule(this);
|
||||
out.write(audio, "audio", null);
|
||||
@ -321,6 +327,7 @@ public class AudioTrack implements ClonableTrack {
|
||||
* @param im importer
|
||||
* @throws IOException Exception
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule in = im.getCapsule(this);
|
||||
audio = (AudioNode) in.readSavable("audio", null);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -202,6 +202,7 @@ public final class BoneTrack implements JmeCloneable, Track {
|
||||
* @param channel
|
||||
* @param vars
|
||||
*/
|
||||
@Override
|
||||
public void setTime(float time, float weight, AnimControl control, AnimChannel channel, TempVars vars) {
|
||||
BitSet affectedBones = channel.getAffectedBones();
|
||||
if (affectedBones != null && !affectedBones.get(targetBoneIndex)) {
|
||||
@ -268,6 +269,7 @@ public final class BoneTrack implements JmeCloneable, Track {
|
||||
/**
|
||||
* @return the length of the track
|
||||
*/
|
||||
@Override
|
||||
public float getLength() {
|
||||
return times == null ? 0 : times[times.length - 1] - times[0];
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -117,6 +117,7 @@ public final class Pose implements Savable, Cloneable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter e) throws IOException {
|
||||
OutputCapsule out = e.getCapsule(this);
|
||||
out.write(name, "name", "");
|
||||
@ -125,6 +126,7 @@ public final class Pose implements Savable, Cloneable {
|
||||
out.write(indices, "indices", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter i) throws IOException {
|
||||
InputCapsule in = i.getCapsule(this);
|
||||
name = in.readString("name", "");
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -87,12 +87,14 @@ public final class PoseTrack implements Track {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter e) throws IOException {
|
||||
OutputCapsule out = e.getCapsule(this);
|
||||
out.write(poses, "poses", null);
|
||||
out.write(weights, "weights", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter i) throws IOException {
|
||||
InputCapsule in = i.getCapsule(this);
|
||||
weights = in.readFloatArray("weights", null);
|
||||
@ -132,6 +134,7 @@ public final class PoseTrack implements Track {
|
||||
pb.updateData(pb.getData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTime(float time, float weight, AnimControl control, AnimChannel channel, TempVars vars) {
|
||||
// TODO: When MeshControl is created, it will gather targets
|
||||
// list automatically which is then retrieved here.
|
||||
@ -161,6 +164,7 @@ public final class PoseTrack implements Track {
|
||||
/**
|
||||
* @return the length of the track
|
||||
*/
|
||||
@Override
|
||||
public float getLength() {
|
||||
return times == null ? 0 : times[times.length - 1] - times[0];
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2018 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -101,6 +101,7 @@ public class SpatialTrack implements JmeCloneable, Track {
|
||||
* @param time
|
||||
* the current time of the animation
|
||||
*/
|
||||
@Override
|
||||
public void setTime(float time, float weight, AnimControl control, AnimChannel channel, TempVars vars) {
|
||||
Spatial spatial = trackSpatial;
|
||||
if (spatial == null) {
|
||||
@ -242,6 +243,7 @@ public class SpatialTrack implements JmeCloneable, Track {
|
||||
/**
|
||||
* @return the length of the track
|
||||
*/
|
||||
@Override
|
||||
public float getLength() {
|
||||
return times == null ? 0 : times[times.length - 1] - times[0];
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -55,11 +55,13 @@ public class TrackInfo implements Savable, JmeCloneable {
|
||||
public TrackInfo() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule c = ex.getCapsule(this);
|
||||
c.writeSavableArrayList(tracks, "tracks", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule c = im.getCapsule(this);
|
||||
tracks = c.readSavableArrayList("tracks", null);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -66,6 +66,7 @@ public class AppTask<V> implements Future<V> {
|
||||
this.callable = callable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean cancel(boolean mayInterruptIfRunning) {
|
||||
stateLock.lock();
|
||||
try {
|
||||
@ -82,6 +83,7 @@ public class AppTask<V> implements Future<V> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public V get() throws InterruptedException, ExecutionException {
|
||||
stateLock.lock();
|
||||
try {
|
||||
@ -97,6 +99,7 @@ public class AppTask<V> implements Future<V> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
|
||||
stateLock.lock();
|
||||
try {
|
||||
@ -115,6 +118,7 @@ public class AppTask<V> implements Future<V> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
stateLock.lock();
|
||||
try {
|
||||
@ -124,6 +128,7 @@ public class AppTask<V> implements Future<V> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDone() {
|
||||
stateLock.lock();
|
||||
try {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -129,6 +129,7 @@ public class ChaseCameraAppState extends AbstractAppState implements ActionListe
|
||||
inputManager.setCursorVisible(dragToRotate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAction(String name, boolean keyPressed, float tpf) {
|
||||
if (isEnabled()) {
|
||||
if (dragToRotate) {
|
||||
@ -150,6 +151,7 @@ public class ChaseCameraAppState extends AbstractAppState implements ActionListe
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnalog(String name, float value, float tpf) {
|
||||
if (isEnabled()) {
|
||||
if (canRotate) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -94,6 +94,7 @@ public class DebugKeysAppState extends AbstractAppState {
|
||||
|
||||
private class DebugKeyListener implements ActionListener {
|
||||
|
||||
@Override
|
||||
public void onAction(String name, boolean value, float tpf) {
|
||||
if (!value) {
|
||||
return;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -126,6 +126,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @return The lost focus behavior of the application.
|
||||
*/
|
||||
@Override
|
||||
public LostFocusBehavior getLostFocusBehavior() {
|
||||
return lostFocusBehavior;
|
||||
}
|
||||
@ -142,6 +143,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @see LostFocusBehavior
|
||||
*/
|
||||
@Override
|
||||
public void setLostFocusBehavior(LostFocusBehavior lostFocusBehavior) {
|
||||
this.lostFocusBehavior = lostFocusBehavior;
|
||||
}
|
||||
@ -153,6 +155,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @see #getLostFocusBehavior()
|
||||
*/
|
||||
@Override
|
||||
public boolean isPauseOnLostFocus() {
|
||||
return getLostFocusBehavior() == LostFocusBehavior.PauseOnLostFocus;
|
||||
}
|
||||
@ -173,6 +176,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @see #setLostFocusBehavior(com.jme3.app.LostFocusBehavior)
|
||||
*/
|
||||
@Override
|
||||
public void setPauseOnLostFocus(boolean pauseOnLostFocus) {
|
||||
if (pauseOnLostFocus) {
|
||||
setLostFocusBehavior(LostFocusBehavior.PauseOnLostFocus);
|
||||
@ -227,6 +231,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @param settings The settings to set.
|
||||
*/
|
||||
@Override
|
||||
public void setSettings(AppSettings settings){
|
||||
this.settings = settings;
|
||||
if (context != null && settings.useInput() != inputEnabled){
|
||||
@ -248,6 +253,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
* frame times. By default, Application will use the Timer as returned
|
||||
* by the current JmeContext implementation.
|
||||
*/
|
||||
@Override
|
||||
public void setTimer(Timer timer){
|
||||
this.timer = timer;
|
||||
|
||||
@ -260,6 +266,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timer getTimer(){
|
||||
return timer;
|
||||
}
|
||||
@ -355,6 +362,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* @return The {@link AssetManager asset manager} for this application.
|
||||
*/
|
||||
@Override
|
||||
public AssetManager getAssetManager(){
|
||||
return assetManager;
|
||||
}
|
||||
@ -362,6 +370,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* @return the {@link InputManager input manager}.
|
||||
*/
|
||||
@Override
|
||||
public InputManager getInputManager(){
|
||||
return inputManager;
|
||||
}
|
||||
@ -369,6 +378,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* @return the {@link AppStateManager app state manager}
|
||||
*/
|
||||
@Override
|
||||
public AppStateManager getStateManager() {
|
||||
return stateManager;
|
||||
}
|
||||
@ -376,6 +386,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* @return the {@link RenderManager render manager}
|
||||
*/
|
||||
@Override
|
||||
public RenderManager getRenderManager() {
|
||||
return renderManager;
|
||||
}
|
||||
@ -383,6 +394,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* @return The {@link Renderer renderer} for the application
|
||||
*/
|
||||
@Override
|
||||
public Renderer getRenderer(){
|
||||
return renderer;
|
||||
}
|
||||
@ -390,6 +402,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* @return The {@link AudioRenderer audio renderer} for the application
|
||||
*/
|
||||
@Override
|
||||
public AudioRenderer getAudioRenderer() {
|
||||
return audioRenderer;
|
||||
}
|
||||
@ -397,6 +410,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* @return The {@link Listener listener} object for audio
|
||||
*/
|
||||
@Override
|
||||
public Listener getListener() {
|
||||
return listener;
|
||||
}
|
||||
@ -404,6 +418,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* @return The {@link JmeContext display context} for the application
|
||||
*/
|
||||
@Override
|
||||
public JmeContext getContext(){
|
||||
return context;
|
||||
}
|
||||
@ -411,6 +426,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* @return The {@link Camera camera} for the application
|
||||
*/
|
||||
@Override
|
||||
public Camera getCamera(){
|
||||
return cam;
|
||||
}
|
||||
@ -420,6 +436,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @see #start(com.jme3.system.JmeContext.Type)
|
||||
*/
|
||||
@Override
|
||||
public void start(){
|
||||
start(JmeContext.Type.Display, false);
|
||||
}
|
||||
@ -429,6 +446,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @see #start(com.jme3.system.JmeContext.Type)
|
||||
*/
|
||||
@Override
|
||||
public void start(boolean waitFor){
|
||||
start(JmeContext.Type.Display, waitFor);
|
||||
}
|
||||
@ -468,6 +486,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
* specific steps within a single update frame. Value defaults
|
||||
* to null.
|
||||
*/
|
||||
@Override
|
||||
public void setAppProfiler(AppProfiler prof) {
|
||||
this.prof = prof;
|
||||
if (renderManager != null) {
|
||||
@ -478,6 +497,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* Returns the current AppProfiler hook, or null if none is set.
|
||||
*/
|
||||
@Override
|
||||
public AppProfiler getAppProfiler() {
|
||||
return prof;
|
||||
}
|
||||
@ -538,6 +558,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* Internal use only.
|
||||
*/
|
||||
@Override
|
||||
public void reshape(int w, int h){
|
||||
if (renderManager != null) {
|
||||
renderManager.notifyReshape(w, h);
|
||||
@ -551,6 +572,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
* applied immediately; calling this method forces the context
|
||||
* to restart, applying the new settings.
|
||||
*/
|
||||
@Override
|
||||
public void restart(){
|
||||
context.setSettings(settings);
|
||||
context.restart();
|
||||
@ -564,6 +586,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @see #stop(boolean)
|
||||
*/
|
||||
@Override
|
||||
public void stop(){
|
||||
stop(false);
|
||||
}
|
||||
@ -573,6 +596,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
* and making necessary cleanup operations.
|
||||
* After the application has stopped, it cannot be used anymore.
|
||||
*/
|
||||
@Override
|
||||
public void stop(boolean waitFor){
|
||||
logger.log(Level.FINE, "Closing application: {0}", getClass().getName());
|
||||
context.destroy(waitFor);
|
||||
@ -588,6 +612,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
* perspective projection with 45° field of view, with near
|
||||
* and far values 1 and 1000 units respectively.
|
||||
*/
|
||||
@Override
|
||||
public void initialize(){
|
||||
if (assetManager == null){
|
||||
initAssetManager();
|
||||
@ -611,6 +636,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* Internal use only.
|
||||
*/
|
||||
@Override
|
||||
public void handleError(String errMsg, Throwable t){
|
||||
// Print error to log.
|
||||
logger.log(Level.SEVERE, errMsg, t);
|
||||
@ -630,6 +656,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* Internal use only.
|
||||
*/
|
||||
@Override
|
||||
public void gainFocus(){
|
||||
if (lostFocusBehavior != LostFocusBehavior.Disabled) {
|
||||
if (lostFocusBehavior == LostFocusBehavior.PauseOnLostFocus) {
|
||||
@ -645,6 +672,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* Internal use only.
|
||||
*/
|
||||
@Override
|
||||
public void loseFocus(){
|
||||
if (lostFocusBehavior != LostFocusBehavior.Disabled){
|
||||
if (lostFocusBehavior == LostFocusBehavior.PauseOnLostFocus) {
|
||||
@ -657,6 +685,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
/**
|
||||
* Internal use only.
|
||||
*/
|
||||
@Override
|
||||
public void requestClose(boolean esc){
|
||||
context.destroy(false);
|
||||
}
|
||||
@ -671,6 +700,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @param callable The callable to run in the main jME3 thread
|
||||
*/
|
||||
@Override
|
||||
public <V> Future<V> enqueue(Callable<V> callable) {
|
||||
AppTask<V> task = new AppTask<V>(callable);
|
||||
taskQueue.add(task);
|
||||
@ -687,6 +717,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
*
|
||||
* @param runnable The runnable to run in the main jME3 thread
|
||||
*/
|
||||
@Override
|
||||
public void enqueue(Runnable runnable){
|
||||
enqueue(new RunnableWrapper(runnable));
|
||||
}
|
||||
@ -707,6 +738,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
* Do not call manually.
|
||||
* Callback from ContextListener.
|
||||
*/
|
||||
@Override
|
||||
public void update(){
|
||||
// Make sure the audio renderer is available to callables
|
||||
AudioContext.setAudioRenderer(audioRenderer);
|
||||
@ -752,6 +784,7 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
* Do not call manually.
|
||||
* Callback from ContextListener.
|
||||
*/
|
||||
@Override
|
||||
public void destroy(){
|
||||
stateManager.cleanup();
|
||||
|
||||
@ -766,10 +799,12 @@ public class LegacyApplication implements Application, SystemListener {
|
||||
* @return The GUI viewport. Which is used for the on screen
|
||||
* statistics and FPS.
|
||||
*/
|
||||
@Override
|
||||
public ViewPort getGuiViewPort() {
|
||||
return guiViewPort;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ViewPort getViewPort() {
|
||||
return viewPort;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -82,6 +82,7 @@ public abstract class SimpleApplication extends LegacyApplication {
|
||||
|
||||
private class AppActionListener implements ActionListener {
|
||||
|
||||
@Override
|
||||
public void onAction(String name, boolean value, float tpf) {
|
||||
if (!value) {
|
||||
return;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2018 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -96,6 +96,7 @@ public class StatsView extends Node implements Control, JmeCloneable {
|
||||
return statText.getLineHeight() * statLabels.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
|
||||
if (!isEnabled())
|
||||
@ -133,6 +134,7 @@ public class StatsView extends Node implements Control, JmeCloneable {
|
||||
throw new UnsupportedOperationException("Not yet implemented.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial) {
|
||||
}
|
||||
|
||||
@ -145,6 +147,7 @@ public class StatsView extends Node implements Control, JmeCloneable {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(RenderManager rm, ViewPort vp) {
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2018 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -187,6 +187,7 @@ public class ScreenshotAppState extends AbstractAppState implements ActionListen
|
||||
super.initialize(stateManager, app);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAction(String name, boolean value, float tpf) {
|
||||
if (value){
|
||||
capture = true;
|
||||
@ -197,6 +198,7 @@ public class ScreenshotAppState extends AbstractAppState implements ActionListen
|
||||
capture = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(RenderManager rm, ViewPort vp) {
|
||||
renderer = rm.getRenderer();
|
||||
this.rm = rm;
|
||||
@ -208,18 +210,22 @@ public class ScreenshotAppState extends AbstractAppState implements ActionListen
|
||||
return super.isInitialized() && renderer != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reshape(ViewPort vp, int w, int h) {
|
||||
outBuf = BufferUtils.createByteBuffer(w * h * 4);
|
||||
width = w;
|
||||
height = h;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preFrame(float tpf) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postQueue(RenderQueue rq) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postFrame(FrameBuffer out) {
|
||||
if (capture){
|
||||
capture = false;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -191,11 +191,13 @@ public class AssetKey<T> implements Savable, Cloneable {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule oc = ex.getCapsule(this);
|
||||
oc.write(name, "name", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule ic = im.getCapsule(this);
|
||||
name = reducePath(ic.readString("name", null));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -39,10 +39,12 @@ package com.jme3.asset;
|
||||
*/
|
||||
public class CloneableAssetProcessor implements AssetProcessor {
|
||||
|
||||
@Override
|
||||
public Object postProcess(AssetKey key, Object obj) {
|
||||
return obj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object createClone(Object obj) {
|
||||
CloneableSmartAsset asset = (CloneableSmartAsset) obj;
|
||||
return asset.clone();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -99,26 +99,32 @@ public class DesktopAssetManager implements AssetManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addClassLoader(ClassLoader loader) {
|
||||
classLoaders.add(loader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeClassLoader(ClassLoader loader) {
|
||||
classLoaders.remove(loader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ClassLoader> getClassLoaders(){
|
||||
return Collections.unmodifiableList(classLoaders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addAssetEventListener(AssetEventListener listener) {
|
||||
eventListeners.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAssetEventListener(AssetEventListener listener) {
|
||||
eventListeners.remove(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearAssetEventListeners() {
|
||||
eventListeners.clear();
|
||||
}
|
||||
@ -128,6 +134,7 @@ public class DesktopAssetManager implements AssetManager {
|
||||
eventListeners.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerLoader(Class<? extends AssetLoader> loader, String ... extensions){
|
||||
handler.addLoader(loader, extensions);
|
||||
if (logger.isLoggable(Level.FINER)){
|
||||
@ -150,6 +157,7 @@ public class DesktopAssetManager implements AssetManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterLoader(Class<? extends AssetLoader> loaderClass) {
|
||||
handler.removeLoader(loaderClass);
|
||||
if (logger.isLoggable(Level.FINER)){
|
||||
@ -158,6 +166,7 @@ public class DesktopAssetManager implements AssetManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerLocator(String rootPath, Class<? extends AssetLocator> locatorClass){
|
||||
handler.addLocator(locatorClass, rootPath);
|
||||
if (logger.isLoggable(Level.FINER)){
|
||||
@ -180,6 +189,7 @@ public class DesktopAssetManager implements AssetManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterLocator(String rootPath, Class<? extends AssetLocator> clazz){
|
||||
handler.removeLocator(clazz, rootPath);
|
||||
if (logger.isLoggable(Level.FINER)){
|
||||
@ -188,6 +198,7 @@ public class DesktopAssetManager implements AssetManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AssetInfo locateAsset(AssetKey<?> key){
|
||||
AssetInfo info = handler.tryLocate(key);
|
||||
if (info == null){
|
||||
@ -383,48 +394,59 @@ public class DesktopAssetManager implements AssetManager {
|
||||
return clone;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object loadAsset(String name){
|
||||
return loadAsset(new AssetKey(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Texture loadTexture(TextureKey key){
|
||||
return (Texture) loadAsset(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Material loadMaterial(String name){
|
||||
return (Material) loadAsset(new MaterialKey(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Texture loadTexture(String name){
|
||||
TextureKey key = new TextureKey(name, true);
|
||||
key.setGenerateMips(true);
|
||||
return loadTexture(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AudioData loadAudio(AudioKey key){
|
||||
return (AudioData) loadAsset(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AudioData loadAudio(String name){
|
||||
return loadAudio(new AudioKey(name, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BitmapFont loadFont(String name){
|
||||
return (BitmapFont) loadAsset(new AssetKey(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Spatial loadModel(ModelKey key){
|
||||
return (Spatial) loadAsset(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Spatial loadModel(String name){
|
||||
return loadModel(new ModelKey(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public FilterPostProcessor loadFilter(FilterKey key){
|
||||
return (FilterPostProcessor) loadAsset(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FilterPostProcessor loadFilter(String name){
|
||||
return loadFilter(new FilterKey(name));
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -53,6 +53,7 @@ public class ThreadingManager {
|
||||
}
|
||||
|
||||
protected class LoadingThreadFactory implements ThreadFactory {
|
||||
@Override
|
||||
public Thread newThread(Runnable r) {
|
||||
Thread t = new Thread(r, "jME3-threadpool-" + (nextThreadId++));
|
||||
t.setDaemon(true);
|
||||
@ -69,6 +70,7 @@ public class ThreadingManager {
|
||||
this.assetKey = assetKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T call() throws Exception {
|
||||
return owner.loadAsset(assetKey);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -46,25 +46,31 @@ public class SimpleAssetCache implements AssetCache {
|
||||
|
||||
private final ConcurrentHashMap<AssetKey, Object> keyToAssetMap = new ConcurrentHashMap<AssetKey, Object>();
|
||||
|
||||
@Override
|
||||
public <T> void addToCache(AssetKey<T> key, T obj) {
|
||||
keyToAssetMap.put(key, obj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void registerAssetClone(AssetKey<T> key, T clone) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getFromCache(AssetKey<T> key) {
|
||||
return (T) keyToAssetMap.get(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteFromCache(AssetKey key) {
|
||||
return keyToAssetMap.remove(key) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearCache() {
|
||||
keyToAssetMap.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyNoAssetClone() {
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -84,6 +84,7 @@ public class WeakRefAssetCache implements AssetCache {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void addToCache(AssetKey<T> key, T obj) {
|
||||
removeCollectedAssets();
|
||||
|
||||
@ -93,6 +94,7 @@ public class WeakRefAssetCache implements AssetCache {
|
||||
assetCache.put(key, ref);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getFromCache(AssetKey<T> key) {
|
||||
AssetRef ref = assetCache.get(key);
|
||||
if (ref != null){
|
||||
@ -102,17 +104,21 @@ public class WeakRefAssetCache implements AssetCache {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteFromCache(AssetKey key) {
|
||||
return assetCache.remove(key) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearCache() {
|
||||
assetCache.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void registerAssetClone(AssetKey<T> key, T clone) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyNoAssetClone() {
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -119,6 +119,7 @@ public class WeakRefCloneAssetCache implements AssetCache {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void addToCache(AssetKey<T> originalKey, T obj) {
|
||||
// Make room for new asset
|
||||
removeCollectedAssets();
|
||||
@ -143,16 +144,19 @@ public class WeakRefCloneAssetCache implements AssetCache {
|
||||
loadStack.add(originalKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void registerAssetClone(AssetKey<T> key, T clone) {
|
||||
ArrayList<AssetKey> loadStack = assetLoadStack.get();
|
||||
((CloneableSmartAsset)clone).setKey(loadStack.remove(loadStack.size() - 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyNoAssetClone() {
|
||||
ArrayList<AssetKey> loadStack = assetLoadStack.get();
|
||||
loadStack.remove(loadStack.size() - 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getFromCache(AssetKey<T> key) {
|
||||
AssetRef smartInfo = smartCache.get(key);
|
||||
if (smartInfo == null) {
|
||||
@ -177,6 +181,7 @@ public class WeakRefCloneAssetCache implements AssetCache {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteFromCache(AssetKey key) {
|
||||
ArrayList<AssetKey> loadStack = assetLoadStack.get();
|
||||
|
||||
@ -188,6 +193,7 @@ public class WeakRefCloneAssetCache implements AssetCache {
|
||||
return smartCache.remove(key) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearCache() {
|
||||
ArrayList<AssetKey> loadStack = assetLoadStack.get();
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -59,6 +59,7 @@ public class AudioBuffer extends AudioData {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataType getDataType() {
|
||||
return DataType.Buffer;
|
||||
}
|
||||
@ -67,6 +68,7 @@ public class AudioBuffer extends AudioData {
|
||||
* @return The duration of the audio in seconds. It is expected
|
||||
* that audio is uncompressed.
|
||||
*/
|
||||
@Override
|
||||
public float getDuration(){
|
||||
int bytesPerSec = (bitsPerSample / 8) * channels * sampleRate;
|
||||
if (audioData != null)
|
||||
@ -98,6 +100,7 @@ public class AudioBuffer extends AudioData {
|
||||
return audioData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetObject() {
|
||||
id = -1;
|
||||
setUpdateNeeded();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012, 2016, 2018-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -252,6 +252,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
/**
|
||||
* Do not use.
|
||||
*/
|
||||
@Override
|
||||
public final void setChannel(int channel) {
|
||||
if (status != AudioSource.Status.Stopped) {
|
||||
throw new IllegalStateException("Can only set source id when stopped");
|
||||
@ -263,6 +264,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
/**
|
||||
* Do not use.
|
||||
*/
|
||||
@Override
|
||||
public int getChannel() {
|
||||
return channel;
|
||||
}
|
||||
@ -271,6 +273,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
* @return The {#link Filter dry filter} that is set.
|
||||
* @see AudioNode#setDryFilter(com.jme3.audio.Filter)
|
||||
*/
|
||||
@Override
|
||||
public Filter getDryFilter() {
|
||||
return dryFilter;
|
||||
}
|
||||
@ -315,6 +318,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
* {@link AudioNode#setAudioData(com.jme3.audio.AudioData, com.jme3.audio.AudioKey) }
|
||||
* or any of the constructors that initialize the audio data.
|
||||
*/
|
||||
@Override
|
||||
public AudioData getAudioData() {
|
||||
return data;
|
||||
}
|
||||
@ -324,6 +328,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
* The status will be changed when either the {@link AudioNode#play() }
|
||||
* or {@link AudioNode#stop() } methods are called.
|
||||
*/
|
||||
@Override
|
||||
public AudioSource.Status getStatus() {
|
||||
return status;
|
||||
}
|
||||
@ -331,6 +336,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
/**
|
||||
* Do not use.
|
||||
*/
|
||||
@Override
|
||||
public final void setStatus(AudioSource.Status status) {
|
||||
this.status = status;
|
||||
}
|
||||
@ -353,6 +359,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
* otherwise, false.
|
||||
* @see AudioNode#setLooping(boolean)
|
||||
*/
|
||||
@Override
|
||||
public boolean isLooping() {
|
||||
return loop;
|
||||
}
|
||||
@ -373,6 +380,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setPitch(float)
|
||||
*/
|
||||
@Override
|
||||
public float getPitch() {
|
||||
return pitch;
|
||||
}
|
||||
@ -399,6 +407,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setVolume(float)
|
||||
*/
|
||||
@Override
|
||||
public float getVolume() {
|
||||
return volume;
|
||||
}
|
||||
@ -424,6 +433,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
/**
|
||||
* @return the time offset in the sound sample when to start playing.
|
||||
*/
|
||||
@Override
|
||||
public float getTimeOffset() {
|
||||
return timeOffset;
|
||||
}
|
||||
@ -456,6 +466,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3f getPosition() {
|
||||
return getWorldTranslation();
|
||||
}
|
||||
@ -465,6 +476,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setVelocity(com.jme3.math.Vector3f)
|
||||
*/
|
||||
@Override
|
||||
public Vector3f getVelocity() {
|
||||
return velocity;
|
||||
}
|
||||
@ -487,6 +499,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setReverbEnabled(boolean)
|
||||
*/
|
||||
@Override
|
||||
public boolean isReverbEnabled() {
|
||||
return reverbEnabled;
|
||||
}
|
||||
@ -513,6 +526,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setReverbFilter(com.jme3.audio.Filter)
|
||||
*/
|
||||
@Override
|
||||
public Filter getReverbFilter() {
|
||||
return reverbFilter;
|
||||
}
|
||||
@ -538,6 +552,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setMaxDistance(float)
|
||||
*/
|
||||
@Override
|
||||
public float getMaxDistance() {
|
||||
return maxDistance;
|
||||
}
|
||||
@ -572,6 +587,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setRefDistance(float)
|
||||
*/
|
||||
@Override
|
||||
public float getRefDistance() {
|
||||
return refDistance;
|
||||
}
|
||||
@ -601,6 +617,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setDirectional(boolean)
|
||||
*/
|
||||
@Override
|
||||
public boolean isDirectional() {
|
||||
return directional;
|
||||
}
|
||||
@ -626,6 +643,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setDirection(com.jme3.math.Vector3f)
|
||||
*/
|
||||
@Override
|
||||
public Vector3f getDirection() {
|
||||
return direction;
|
||||
}
|
||||
@ -648,6 +666,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setInnerAngle(float)
|
||||
*/
|
||||
@Override
|
||||
public float getInnerAngle() {
|
||||
return innerAngle;
|
||||
}
|
||||
@ -669,6 +688,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setOuterAngle(float)
|
||||
*/
|
||||
@Override
|
||||
public float getOuterAngle() {
|
||||
return outerAngle;
|
||||
}
|
||||
@ -690,6 +710,7 @@ public class AudioNode extends Node implements AudioSource {
|
||||
*
|
||||
* @see AudioNode#setPositional(boolean)
|
||||
*/
|
||||
@Override
|
||||
public boolean isPositional() {
|
||||
return positional;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -115,6 +115,7 @@ public class AudioStream extends AudioData implements Closeable {
|
||||
return readSamples(buf, 0, buf.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getDuration() {
|
||||
return duration;
|
||||
}
|
||||
@ -181,6 +182,7 @@ public class AudioStream extends AudioData implements Closeable {
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
@Override
|
||||
public void close() {
|
||||
if (in != null && open) {
|
||||
try {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -47,10 +47,12 @@ public abstract class Filter extends NativeObject implements Savable {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
// nothing to save
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
// nothing to read
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -76,6 +76,7 @@ public class LowPassFilter extends Filter {
|
||||
this.updateNeeded = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException{
|
||||
super.write(ex);
|
||||
OutputCapsule oc = ex.getCapsule(this);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -216,6 +216,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
alc.destroyALC();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
if (decoderThread.isAlive()) {
|
||||
throw new IllegalStateException("Initialize already called");
|
||||
@ -237,6 +238,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
long updateRateNanos = (long) (UPDATE_RATE * 1000000000);
|
||||
mainloop:
|
||||
@ -267,6 +269,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanup() {
|
||||
// kill audio thread
|
||||
if (!decoderThread.isAlive()) {
|
||||
@ -359,6 +362,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateSourceParam(AudioSource src, AudioParam param) {
|
||||
checkDead();
|
||||
synchronized (threadLock) {
|
||||
@ -585,6 +589,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateListenerParam(Listener listener, ListenerParam param) {
|
||||
checkDead();
|
||||
synchronized (threadLock) {
|
||||
@ -651,6 +656,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEnvironment(Environment env) {
|
||||
checkDead();
|
||||
synchronized (threadLock) {
|
||||
@ -845,6 +851,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
synchronized (threadLock) {
|
||||
updateInRenderThread(tpf);
|
||||
@ -977,6 +984,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
objManager.deleteUnused(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setListener(Listener listener) {
|
||||
checkDead();
|
||||
synchronized (threadLock) {
|
||||
@ -996,6 +1004,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pauseAll() {
|
||||
if (!supportPauseDevice) {
|
||||
throw new UnsupportedOperationException("Pause device is NOT supported!");
|
||||
@ -1004,6 +1013,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
alc.alcDevicePauseSOFT();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resumeAll() {
|
||||
if (!supportPauseDevice) {
|
||||
throw new UnsupportedOperationException("Pause device is NOT supported!");
|
||||
@ -1012,6 +1022,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
alc.alcDeviceResumeSOFT();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playSourceInstance(AudioSource src) {
|
||||
checkDead();
|
||||
synchronized (threadLock) {
|
||||
@ -1049,6 +1060,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playSource(AudioSource src) {
|
||||
checkDead();
|
||||
synchronized (threadLock) {
|
||||
@ -1087,6 +1099,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pauseSource(AudioSource src) {
|
||||
checkDead();
|
||||
synchronized (threadLock) {
|
||||
@ -1103,6 +1116,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopSource(AudioSource src) {
|
||||
synchronized (threadLock) {
|
||||
if (audioDisabled) {
|
||||
@ -1196,6 +1210,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteFilter(Filter filter) {
|
||||
int id = filter.getId();
|
||||
if (id != -1) {
|
||||
@ -1206,6 +1221,7 @@ public class ALAudioRenderer implements AudioRenderer, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAudioData(AudioData ad) {
|
||||
synchronized (threadLock) {
|
||||
if (audioDisabled) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2013 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -106,6 +106,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
setMinMax(min, max);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType() {
|
||||
return Type.AABB;
|
||||
}
|
||||
@ -117,6 +118,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
* @param points
|
||||
* the points to contain.
|
||||
*/
|
||||
@Override
|
||||
public void computeFromPoints(FloatBuffer points) {
|
||||
containAABB(points);
|
||||
}
|
||||
@ -293,6 +295,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
* @param store
|
||||
* box to store result in
|
||||
*/
|
||||
@Override
|
||||
public BoundingVolume transform(Transform trans, BoundingVolume store) {
|
||||
|
||||
BoundingBox box;
|
||||
@ -326,6 +329,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
return box;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BoundingVolume transform(Matrix4f trans, BoundingVolume store) {
|
||||
BoundingBox box;
|
||||
if (store == null || store.getType() != Type.AABB) {
|
||||
@ -365,6 +369,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
* @param plane
|
||||
* the plane to check against.
|
||||
*/
|
||||
@Override
|
||||
public Plane.Side whichSide(Plane plane) {
|
||||
float radius = FastMath.abs(xExtent * plane.getNormal().getX())
|
||||
+ FastMath.abs(yExtent * plane.getNormal().getY())
|
||||
@ -392,6 +397,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
* @return this box (with its components modified) or null if the second
|
||||
* volume is of some type other than AABB or Sphere
|
||||
*/
|
||||
@Override
|
||||
public BoundingVolume merge(BoundingVolume volume) {
|
||||
return mergeLocal(volume);
|
||||
}
|
||||
@ -406,6 +412,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
* @return this box (with its components modified) or null if the second
|
||||
* volume is of some type other than AABB or Sphere
|
||||
*/
|
||||
@Override
|
||||
public BoundingVolume mergeLocal(BoundingVolume volume) {
|
||||
if (volume == null) {
|
||||
return this;
|
||||
@ -548,6 +555,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
* a new store is created.
|
||||
* @return the new BoundingBox
|
||||
*/
|
||||
@Override
|
||||
public BoundingVolume clone(BoundingVolume store) {
|
||||
if (store != null && store.getType() == Type.AABB) {
|
||||
BoundingBox rVal = (BoundingBox) store;
|
||||
@ -584,6 +592,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
*
|
||||
* @see BoundingVolume#intersects(com.jme3.bounding.BoundingVolume)
|
||||
*/
|
||||
@Override
|
||||
public boolean intersects(BoundingVolume bv) {
|
||||
return bv.intersectsBoundingBox(this);
|
||||
}
|
||||
@ -593,6 +602,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
*
|
||||
* @see BoundingVolume#intersectsSphere(com.jme3.bounding.BoundingSphere)
|
||||
*/
|
||||
@Override
|
||||
public boolean intersectsSphere(BoundingSphere bs) {
|
||||
return bs.intersectsBoundingBox(this);
|
||||
}
|
||||
@ -604,6 +614,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
*
|
||||
* @see BoundingVolume#intersectsBoundingBox(com.jme3.bounding.BoundingBox)
|
||||
*/
|
||||
@Override
|
||||
public boolean intersectsBoundingBox(BoundingBox bb) {
|
||||
assert Vector3f.isValidVector(center) && Vector3f.isValidVector(bb.center);
|
||||
|
||||
@ -636,6 +647,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
*
|
||||
* @see BoundingVolume#intersects(com.jme3.math.Ray)
|
||||
*/
|
||||
@Override
|
||||
public boolean intersects(Ray ray) {
|
||||
assert Vector3f.isValidVector(center);
|
||||
|
||||
@ -853,6 +865,7 @@ public class BoundingBox extends BoundingVolume {
|
||||
&& FastMath.abs(center.z - point.z) <= zExtent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float distanceToEdge(Vector3f point) {
|
||||
// compute coordinates of point in box coordinate system
|
||||
TempVars vars= TempVars.get();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -85,6 +85,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
this.radius = r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType() {
|
||||
return Type.Sphere;
|
||||
}
|
||||
@ -116,6 +117,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
* @param points
|
||||
* the points to contain.
|
||||
*/
|
||||
@Override
|
||||
public void computeFromPoints(FloatBuffer points) {
|
||||
calcWelzl(points);
|
||||
}
|
||||
@ -383,6 +385,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
* @return BoundingVolume
|
||||
* @return ref
|
||||
*/
|
||||
@Override
|
||||
public BoundingVolume transform(Transform trans, BoundingVolume store) {
|
||||
BoundingSphere sphere;
|
||||
if (store == null || store.getType() != BoundingVolume.Type.Sphere) {
|
||||
@ -398,6 +401,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
return sphere;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BoundingVolume transform(Matrix4f trans, BoundingVolume store) {
|
||||
BoundingSphere sphere;
|
||||
if (store == null || store.getType() != BoundingVolume.Type.Sphere) {
|
||||
@ -441,6 +445,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
* the plane to check against.
|
||||
* @return side
|
||||
*/
|
||||
@Override
|
||||
public Plane.Side whichSide(Plane plane) {
|
||||
float distance = plane.pseudoDistance(center);
|
||||
|
||||
@ -461,6 +466,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
* the sphere to combine with this sphere.
|
||||
* @return a new sphere
|
||||
*/
|
||||
@Override
|
||||
public BoundingVolume merge(BoundingVolume volume) {
|
||||
if (volume == null) {
|
||||
return this;
|
||||
@ -506,6 +512,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
* the sphere to combine with this sphere.
|
||||
* @return this
|
||||
*/
|
||||
@Override
|
||||
public BoundingVolume mergeLocal(BoundingVolume volume) {
|
||||
if (volume == null) {
|
||||
return this;
|
||||
@ -629,6 +636,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
* a new store is created.
|
||||
* @return the new BoundingSphere
|
||||
*/
|
||||
@Override
|
||||
public BoundingVolume clone(BoundingVolume store) {
|
||||
if (store != null && store.getType() == Type.Sphere) {
|
||||
BoundingSphere rVal = (BoundingSphere) store;
|
||||
@ -661,6 +669,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
*
|
||||
* @see com.jme.bounding.BoundingVolume#intersects(com.jme.bounding.BoundingVolume)
|
||||
*/
|
||||
@Override
|
||||
public boolean intersects(BoundingVolume bv) {
|
||||
return bv.intersectsSphere(this);
|
||||
}
|
||||
@ -670,6 +679,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
*
|
||||
* @see com.jme.bounding.BoundingVolume#intersectsSphere(com.jme.bounding.BoundingSphere)
|
||||
*/
|
||||
@Override
|
||||
public boolean intersectsSphere(BoundingSphere bs) {
|
||||
return Intersection.intersect(bs, center, radius);
|
||||
}
|
||||
@ -679,6 +689,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
*
|
||||
* @see com.jme.bounding.BoundingVolume#intersectsBoundingBox(com.jme.bounding.BoundingBox)
|
||||
*/
|
||||
@Override
|
||||
public boolean intersectsBoundingBox(BoundingBox bb) {
|
||||
return Intersection.intersect(bb, center, radius);
|
||||
}
|
||||
@ -697,6 +708,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
*
|
||||
* @see com.jme.bounding.BoundingVolume#intersects(com.jme.math.Ray)
|
||||
*/
|
||||
@Override
|
||||
public boolean intersects(Ray ray) {
|
||||
assert Vector3f.isValidVector(center);
|
||||
|
||||
@ -988,6 +1000,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int collideWith(Collidable other, CollisionResults results) {
|
||||
if (other instanceof Ray) {
|
||||
Ray ray = (Ray) other;
|
||||
@ -1034,6 +1047,7 @@ public class BoundingSphere extends BoundingVolume {
|
||||
return center.distanceSquared(point) <= (getRadius() * getRadius());
|
||||
}
|
||||
|
||||
@Override
|
||||
public float distanceToEdge(Vector3f point) {
|
||||
return center.distance(point) - radius;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -317,10 +317,12 @@ public abstract class BoundingVolume implements Savable, Cloneable, Collidable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter e) throws IOException {
|
||||
e.getCapsule(this).write(center, "center", Vector3f.ZERO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter e) throws IOException {
|
||||
center = (Vector3f) e.getCapsule(this).readSavable("center", Vector3f.ZERO.clone());
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -270,6 +270,7 @@ public class Cinematic extends AbstractCinematicEvent implements AppState {
|
||||
* @param stateManager the state manager
|
||||
* @param app the application
|
||||
*/
|
||||
@Override
|
||||
public void initialize(AppStateManager stateManager, Application app) {
|
||||
initEvent(app, this);
|
||||
for (CinematicEvent cinematicEvent : cinematicEvents) {
|
||||
@ -288,6 +289,7 @@ public class Cinematic extends AbstractCinematicEvent implements AppState {
|
||||
*
|
||||
* @return true if initialized, otherwise false
|
||||
*/
|
||||
@Override
|
||||
public boolean isInitialized() {
|
||||
return initialized;
|
||||
}
|
||||
@ -312,6 +314,7 @@ public class Cinematic extends AbstractCinematicEvent implements AppState {
|
||||
*
|
||||
* @param enabled true or false
|
||||
*/
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {
|
||||
if (enabled) {
|
||||
play();
|
||||
@ -324,6 +327,7 @@ public class Cinematic extends AbstractCinematicEvent implements AppState {
|
||||
*
|
||||
* @return true if enabled
|
||||
*/
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return playState == PlayState.Playing;
|
||||
}
|
||||
@ -333,6 +337,7 @@ public class Cinematic extends AbstractCinematicEvent implements AppState {
|
||||
*
|
||||
* @param stateManager the state manager
|
||||
*/
|
||||
@Override
|
||||
public void stateAttached(AppStateManager stateManager) {
|
||||
}
|
||||
|
||||
@ -341,6 +346,7 @@ public class Cinematic extends AbstractCinematicEvent implements AppState {
|
||||
*
|
||||
* @param stateManager the state manager
|
||||
*/
|
||||
@Override
|
||||
public void stateDetached(AppStateManager stateManager) {
|
||||
stop();
|
||||
}
|
||||
@ -508,6 +514,7 @@ public class Cinematic extends AbstractCinematicEvent implements AppState {
|
||||
*
|
||||
* @see AppState#render(com.jme3.renderer.RenderManager)
|
||||
*/
|
||||
@Override
|
||||
public void render(RenderManager rm) {
|
||||
}
|
||||
|
||||
@ -516,6 +523,7 @@ public class Cinematic extends AbstractCinematicEvent implements AppState {
|
||||
*
|
||||
* @see AppState#postRender()
|
||||
*/
|
||||
@Override
|
||||
public void postRender() {
|
||||
}
|
||||
|
||||
@ -524,6 +532,7 @@ public class Cinematic extends AbstractCinematicEvent implements AppState {
|
||||
*
|
||||
* @see AppState#cleanup()
|
||||
*/
|
||||
@Override
|
||||
public void cleanup() {
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -69,12 +69,14 @@ public class KeyFrame implements Savable {
|
||||
return cinematicEvents.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule oc = ex.getCapsule(this);
|
||||
oc.writeSavableArrayList((ArrayList) cinematicEvents, "cinematicEvents", null);
|
||||
oc.write(index, "index", 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule ic = im.getCapsule(this);
|
||||
cinematicEvents = ic.readSavableArrayList("cinematicEvents", null);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -104,6 +104,7 @@ public class TimeLine extends HashMap<Integer, KeyFrame> implements Savable {
|
||||
return lastKeyFrameIndex;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule oc = ex.getCapsule(this);
|
||||
ArrayList list = new ArrayList();
|
||||
@ -111,6 +112,7 @@ public class TimeLine extends HashMap<Integer, KeyFrame> implements Savable {
|
||||
oc.writeSavableArrayList(list, "keyFrames", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule ic = im.getCapsule(this);
|
||||
ArrayList list = ic.readSavableArrayList("keyFrames", null);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -104,6 +104,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* or when it was force-stopped during playback.
|
||||
* By default, this method just calls regular stop().
|
||||
*/
|
||||
@Override
|
||||
public void forceStop(){
|
||||
stop();
|
||||
}
|
||||
@ -111,6 +112,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
/**
|
||||
* Play this event.
|
||||
*/
|
||||
@Override
|
||||
public void play() {
|
||||
onPlay();
|
||||
playState = PlayState.Playing;
|
||||
@ -131,6 +133,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* Used internally only.
|
||||
* @param tpf time per frame.
|
||||
*/
|
||||
@Override
|
||||
public void internalUpdate(float tpf) {
|
||||
if (playState == PlayState.Playing) {
|
||||
time = time + (tpf * speed);
|
||||
@ -161,6 +164,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* Stops the animation.
|
||||
* Next time when play() is called, the animation starts from the beginning.
|
||||
*/
|
||||
@Override
|
||||
public void stop() {
|
||||
onStop();
|
||||
time = 0;
|
||||
@ -182,6 +186,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* Pause this event.
|
||||
* Next time when play() is called, the animation restarts from here.
|
||||
*/
|
||||
@Override
|
||||
public void pause() {
|
||||
onPause();
|
||||
playState = PlayState.Paused;
|
||||
@ -202,6 +207,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* Returns the actual duration of the animation (initialDuration/speed)
|
||||
* @return the duration (in seconds)
|
||||
*/
|
||||
@Override
|
||||
public float getDuration() {
|
||||
return initialDuration / speed;
|
||||
}
|
||||
@ -212,6 +218,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* At speed = 2, the animation will last initialDuration/2...
|
||||
* @param speed
|
||||
*/
|
||||
@Override
|
||||
public void setSpeed(float speed) {
|
||||
this.speed = speed;
|
||||
}
|
||||
@ -220,6 +227,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* Returns the speed of the animation.
|
||||
* @return the speed
|
||||
*/
|
||||
@Override
|
||||
public float getSpeed() {
|
||||
return speed;
|
||||
}
|
||||
@ -228,6 +236,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* Returns the current playstate of the animation (playing or paused or stopped).
|
||||
* @return the enum value
|
||||
*/
|
||||
@Override
|
||||
public PlayState getPlayState() {
|
||||
return playState;
|
||||
}
|
||||
@ -236,6 +245,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* Returns the initial duration of the animation at speed = 1 in seconds.
|
||||
* @return the duration in seconds
|
||||
*/
|
||||
@Override
|
||||
public float getInitialDuration() {
|
||||
return initialDuration;
|
||||
}
|
||||
@ -244,6 +254,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* Sets the duration of the animation at speed = 1 in seconds.
|
||||
* @param initialDuration
|
||||
*/
|
||||
@Override
|
||||
public void setInitialDuration(float initialDuration) {
|
||||
this.initialDuration = initialDuration;
|
||||
}
|
||||
@ -253,6 +264,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* @see LoopMode
|
||||
* @return the enum value
|
||||
*/
|
||||
@Override
|
||||
public LoopMode getLoopMode() {
|
||||
return loopMode;
|
||||
}
|
||||
@ -262,6 +274,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* @see LoopMode
|
||||
* @param loopMode
|
||||
*/
|
||||
@Override
|
||||
public void setLoopMode(LoopMode loopMode) {
|
||||
this.loopMode = loopMode;
|
||||
}
|
||||
@ -271,6 +284,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* @param ex exporter
|
||||
* @throws IOException
|
||||
*/
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule oc = ex.getCapsule(this);
|
||||
oc.write(playState, "playState", PlayState.Stopped);
|
||||
@ -284,6 +298,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* @param im importer
|
||||
* @throws IOException
|
||||
*/
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule ic = im.getCapsule(this);
|
||||
playState = ic.readEnum("playState", PlayState.class, PlayState.Stopped);
|
||||
@ -297,6 +312,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* @param app
|
||||
* @param cinematic
|
||||
*/
|
||||
@Override
|
||||
public void initEvent(Application app, Cinematic cinematic) {
|
||||
}
|
||||
|
||||
@ -331,6 +347,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
* Fast-forward the event to the given timestamp. Time=0 is the start of the event.
|
||||
* @param time the time to fast forward to.
|
||||
*/
|
||||
@Override
|
||||
public void setTime(float time) {
|
||||
this.time = time ;
|
||||
}
|
||||
@ -338,10 +355,12 @@ public abstract class AbstractCinematicEvent implements CinematicEvent {
|
||||
/**
|
||||
* Return the current timestamp of the event. Time=0 is the start of the event.
|
||||
*/
|
||||
@Override
|
||||
public float getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -159,6 +159,7 @@ public class MotionEvent extends AbstractCinematicEvent implements Control, JmeC
|
||||
this.loopMode = loopMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
if (isControl) {
|
||||
internalUpdate(tpf);
|
||||
@ -200,6 +201,7 @@ public class MotionEvent extends AbstractCinematicEvent implements Control, JmeC
|
||||
onUpdate(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(float tpf) {
|
||||
traveledDistance = path.interpolatePath(time, this, tpf);
|
||||
computeTargetDirection();
|
||||
@ -457,9 +459,11 @@ public class MotionEvent extends AbstractCinematicEvent implements Control, JmeC
|
||||
return playState != PlayState.Stopped;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(RenderManager rm, ViewPort vp) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial) {
|
||||
this.spatial = spatial;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -97,6 +97,7 @@ public class CollisionResult implements Comparable<CollisionResult> {
|
||||
return store;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(CollisionResult other) {
|
||||
return Float.compare(distance, other.distance);
|
||||
}
|
||||
@ -134,6 +135,7 @@ public class CollisionResult implements Comparable<CollisionResult> {
|
||||
return triangleIndex;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CollisionResult[geometry=" + geometry
|
||||
+ ", contactPoint=" + contactPoint
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -61,6 +61,7 @@ public class CollisionResults implements Iterable<CollisionResult> {
|
||||
*
|
||||
* @return the iterator
|
||||
*/
|
||||
@Override
|
||||
public Iterator<CollisionResult> iterator() {
|
||||
if (results == null) {
|
||||
List<CollisionResult> dumbCompiler = Collections.emptyList();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2018 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -412,6 +412,7 @@ class SweepSphere implements Collidable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int collideWith(Collidable other, CollisionResults results)
|
||||
throws UnsupportedCollisionException {
|
||||
if (other instanceof AbstractTriangle){
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -111,6 +111,7 @@ public final class BIHNode implements Savable {
|
||||
this.rightPlane = rightPlane;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule oc = ex.getCapsule(this);
|
||||
oc.write(leftIndex, "left_index", 0);
|
||||
@ -122,6 +123,7 @@ public final class BIHNode implements Savable {
|
||||
oc.write(right, "right_node", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule ic = im.getCapsule(this);
|
||||
leftIndex = ic.readInt("left_index", 0);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -461,6 +461,7 @@ public class BIHTree implements CollisionData {
|
||||
return root.intersectWhere(bv, bbox, worldMatrix, this, results);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int collideWith(Collidable other,
|
||||
Matrix4f worldMatrix,
|
||||
BoundingVolume worldBound,
|
||||
@ -477,6 +478,7 @@ public class BIHTree implements CollisionData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule oc = ex.getCapsule(this);
|
||||
oc.write(mesh, "mesh", null);
|
||||
@ -486,6 +488,7 @@ public class BIHTree implements CollisionData {
|
||||
oc.write(triIndices, "indices", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule ic = im.getCapsule(this);
|
||||
mesh = (Mesh) ic.readSavable("mesh", null);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -42,6 +42,7 @@ public class TriangleAxisComparator implements Comparator<BIHTriangle> {
|
||||
this.axis = axis;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compare(BIHTriangle o1, BIHTriangle o2) {
|
||||
float v1, v2;
|
||||
Vector3f c1 = o1.getCenter();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2019 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -141,6 +141,7 @@ public class ParticleEmitter extends Geometry {
|
||||
this.parentEmitter = cloner.clone(parentEmitter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial) {
|
||||
}
|
||||
|
||||
@ -152,17 +153,21 @@ public class ParticleEmitter extends Geometry {
|
||||
return parentEmitter.isEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
parentEmitter.updateFromControl(tpf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(RenderManager rm, ViewPort vp) {
|
||||
parentEmitter.renderFromControl(rm, vp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
}
|
||||
}
|
||||
@ -180,6 +185,7 @@ public class ParticleEmitter extends Geometry {
|
||||
/**
|
||||
* The old clone() method that did not use the new Cloner utility.
|
||||
*/
|
||||
@Override
|
||||
public ParticleEmitter oldClone(boolean cloneMaterial) {
|
||||
ParticleEmitter clone = (ParticleEmitter) super.clone(cloneMaterial);
|
||||
clone.shape = shape.deepClone();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* Copyright (c) 2009-2020 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -41,8 +41,10 @@ import java.io.IOException;
|
||||
* @author Kirill Vainer
|
||||
*/
|
||||
public class NullSavable implements Savable {
|
||||
@Override
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
}
|
||||
@Override
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user