Merge branch 'v3.1' of https://github.com/saloisio/jmonkeyengine into v3.1
This commit is contained in:
commit
d0175a77b6
@ -35,7 +35,7 @@ import com.jme3.asset.AssetKey;
|
|||||||
import com.jme3.asset.AssetManager;
|
import com.jme3.asset.AssetManager;
|
||||||
import com.jme3.asset.CloneableSmartAsset;
|
import com.jme3.asset.CloneableSmartAsset;
|
||||||
import com.jme3.export.*;
|
import com.jme3.export.*;
|
||||||
import com.jme3.light.*;
|
import com.jme3.light.LightList;
|
||||||
import com.jme3.material.RenderState.BlendMode;
|
import com.jme3.material.RenderState.BlendMode;
|
||||||
import com.jme3.material.RenderState.FaceCullMode;
|
import com.jme3.material.RenderState.FaceCullMode;
|
||||||
import com.jme3.material.TechniqueDef.LightMode;
|
import com.jme3.material.TechniqueDef.LightMode;
|
||||||
@ -54,6 +54,8 @@ import com.jme3.texture.Image;
|
|||||||
import com.jme3.texture.Texture;
|
import com.jme3.texture.Texture;
|
||||||
import com.jme3.texture.image.ColorSpace;
|
import com.jme3.texture.image.ColorSpace;
|
||||||
import com.jme3.util.ListMap;
|
import com.jme3.util.ListMap;
|
||||||
|
import com.jme3.util.SafeArrayList;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@ -749,8 +751,8 @@ public class Material implements CloneableSmartAsset, Cloneable, Savable {
|
|||||||
sortingId = -1;
|
sortingId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int applyOverrides(Renderer renderer, Shader shader, List<MatParamOverride> overrides, int unit) {
|
private int applyOverrides(Renderer renderer, Shader shader, SafeArrayList<MatParamOverride> overrides, int unit) {
|
||||||
for (MatParamOverride override : overrides) {
|
for (MatParamOverride override : overrides.getArray()) {
|
||||||
VarType type = override.getVarType();
|
VarType type = override.getVarType();
|
||||||
|
|
||||||
MatParam paramDef = def.getMaterialParam(override.getName());
|
MatParam paramDef = def.getMaterialParam(override.getName());
|
||||||
@ -777,7 +779,7 @@ public class Material implements CloneableSmartAsset, Cloneable, Savable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateShaderMaterialParameters(Renderer renderer, Shader shader,
|
private void updateShaderMaterialParameters(Renderer renderer, Shader shader,
|
||||||
List<MatParamOverride> worldOverrides, List<MatParamOverride> forcedOverrides) {
|
SafeArrayList<MatParamOverride> worldOverrides, SafeArrayList<MatParamOverride> forcedOverrides) {
|
||||||
|
|
||||||
int unit = 0;
|
int unit = 0;
|
||||||
if (worldOverrides != null) {
|
if (worldOverrides != null) {
|
||||||
@ -945,7 +947,7 @@ public class Material implements CloneableSmartAsset, Cloneable, Savable {
|
|||||||
updateRenderState(renderManager, renderer, techniqueDef);
|
updateRenderState(renderManager, renderer, techniqueDef);
|
||||||
|
|
||||||
// Get world overrides
|
// Get world overrides
|
||||||
List<MatParamOverride> overrides = geometry.getWorldMatParamOverrides();
|
SafeArrayList<MatParamOverride> overrides = geometry.getWorldMatParamOverrides();
|
||||||
|
|
||||||
// Select shader to use
|
// Select shader to use
|
||||||
Shader shader = technique.makeCurrent(renderManager, overrides, renderManager.getForcedMatParams(), lights, rendererCaps);
|
Shader shader = technique.makeCurrent(renderManager, overrides, renderManager.getForcedMatParams(), lights, rendererCaps);
|
||||||
|
@ -31,10 +31,10 @@
|
|||||||
*/
|
*/
|
||||||
package com.jme3.material;
|
package com.jme3.material;
|
||||||
|
|
||||||
import com.jme3.material.logic.TechniqueDefLogic;
|
|
||||||
import com.jme3.asset.AssetManager;
|
import com.jme3.asset.AssetManager;
|
||||||
import com.jme3.light.LightList;
|
import com.jme3.light.LightList;
|
||||||
import com.jme3.material.TechniqueDef.LightMode;
|
import com.jme3.material.TechniqueDef.LightMode;
|
||||||
|
import com.jme3.material.logic.TechniqueDefLogic;
|
||||||
import com.jme3.renderer.Caps;
|
import com.jme3.renderer.Caps;
|
||||||
import com.jme3.renderer.RenderManager;
|
import com.jme3.renderer.RenderManager;
|
||||||
import com.jme3.scene.Geometry;
|
import com.jme3.scene.Geometry;
|
||||||
@ -42,9 +42,8 @@ import com.jme3.shader.DefineList;
|
|||||||
import com.jme3.shader.Shader;
|
import com.jme3.shader.Shader;
|
||||||
import com.jme3.shader.VarType;
|
import com.jme3.shader.VarType;
|
||||||
import com.jme3.util.ListMap;
|
import com.jme3.util.ListMap;
|
||||||
import java.util.ArrayList;
|
import com.jme3.util.SafeArrayList;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a technique instance.
|
* Represents a technique instance.
|
||||||
@ -110,8 +109,8 @@ public final class Technique {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyOverrides(DefineList defineList, List<MatParamOverride> overrides) {
|
private void applyOverrides(DefineList defineList, SafeArrayList<MatParamOverride> overrides) {
|
||||||
for (MatParamOverride override : overrides) {
|
for (MatParamOverride override : overrides.getArray()) {
|
||||||
if (!override.isEnabled()) {
|
if (!override.isEnabled()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -134,8 +133,8 @@ public final class Technique {
|
|||||||
* @param rendererCaps The renderer capabilities which the shader should support.
|
* @param rendererCaps The renderer capabilities which the shader should support.
|
||||||
* @return A compatible shader.
|
* @return A compatible shader.
|
||||||
*/
|
*/
|
||||||
Shader makeCurrent(RenderManager renderManager, List<MatParamOverride> worldOverrides,
|
Shader makeCurrent(RenderManager renderManager, SafeArrayList<MatParamOverride> worldOverrides,
|
||||||
List<MatParamOverride> forcedOverrides,
|
SafeArrayList<MatParamOverride> forcedOverrides,
|
||||||
LightList lights, EnumSet<Caps> rendererCaps) {
|
LightList lights, EnumSet<Caps> rendererCaps) {
|
||||||
TechniqueDefLogic logic = def.getLogic();
|
TechniqueDefLogic logic = def.getLogic();
|
||||||
AssetManager assetManager = owner.getMaterialDef().getAssetManager();
|
AssetManager assetManager = owner.getMaterialDef().getAssetManager();
|
||||||
|
@ -83,7 +83,7 @@ public class RenderManager {
|
|||||||
private Material forcedMaterial = null;
|
private Material forcedMaterial = null;
|
||||||
private String forcedTechnique = null;
|
private String forcedTechnique = null;
|
||||||
private RenderState forcedRenderState = null;
|
private RenderState forcedRenderState = null;
|
||||||
private final List<MatParamOverride> forcedOverrides = new ArrayList<>();
|
private final SafeArrayList<MatParamOverride> forcedOverrides = new SafeArrayList<>(MatParamOverride.class);
|
||||||
private int viewX, viewY, viewWidth, viewHeight;
|
private int viewX, viewY, viewWidth, viewHeight;
|
||||||
private final Matrix4f orthoMatrix = new Matrix4f();
|
private final Matrix4f orthoMatrix = new Matrix4f();
|
||||||
private final LightList filteredLightList = new LightList(null);
|
private final LightList filteredLightList = new LightList(null);
|
||||||
@ -462,7 +462,7 @@ public class RenderManager {
|
|||||||
*
|
*
|
||||||
* @return The forced material parameters.
|
* @return The forced material parameters.
|
||||||
*/
|
*/
|
||||||
public List<MatParamOverride> getForcedMatParams() {
|
public SafeArrayList<MatParamOverride> getForcedMatParams() {
|
||||||
return forcedOverrides;
|
return forcedOverrides;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,8 +138,8 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab
|
|||||||
protected LightList localLights;
|
protected LightList localLights;
|
||||||
protected transient LightList worldLights;
|
protected transient LightList worldLights;
|
||||||
|
|
||||||
protected ArrayList<MatParamOverride> localOverrides;
|
protected SafeArrayList<MatParamOverride> localOverrides;
|
||||||
protected ArrayList<MatParamOverride> worldOverrides;
|
protected SafeArrayList<MatParamOverride> worldOverrides;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This spatial's name.
|
* This spatial's name.
|
||||||
@ -207,8 +207,8 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab
|
|||||||
localLights = new LightList(this);
|
localLights = new LightList(this);
|
||||||
worldLights = new LightList(this);
|
worldLights = new LightList(this);
|
||||||
|
|
||||||
localOverrides = new ArrayList<>();
|
localOverrides = new SafeArrayList<>(MatParamOverride.class);
|
||||||
worldOverrides = new ArrayList<>();
|
worldOverrides = new SafeArrayList<>(MatParamOverride.class);
|
||||||
refreshFlags |= RF_BOUND;
|
refreshFlags |= RF_BOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -432,7 +432,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab
|
|||||||
*
|
*
|
||||||
* @return The list of local material parameter overrides.
|
* @return The list of local material parameter overrides.
|
||||||
*/
|
*/
|
||||||
public List<MatParamOverride> getLocalMatParamOverrides() {
|
public SafeArrayList<MatParamOverride> getLocalMatParamOverrides() {
|
||||||
return localOverrides;
|
return localOverrides;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -446,7 +446,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab
|
|||||||
*
|
*
|
||||||
* @return The list of world material parameter overrides.
|
* @return The list of world material parameter overrides.
|
||||||
*/
|
*/
|
||||||
public List<MatParamOverride> getWorldMatParamOverrides() {
|
public SafeArrayList<MatParamOverride> getWorldMatParamOverrides() {
|
||||||
return worldOverrides;
|
return worldOverrides;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1384,8 +1384,8 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab
|
|||||||
clone.localLights.setOwner(clone);
|
clone.localLights.setOwner(clone);
|
||||||
clone.worldLights.setOwner(clone);
|
clone.worldLights.setOwner(clone);
|
||||||
|
|
||||||
clone.worldOverrides = new ArrayList<MatParamOverride>();
|
clone.worldOverrides = new SafeArrayList<>(MatParamOverride.class);
|
||||||
clone.localOverrides = new ArrayList<MatParamOverride>();
|
clone.localOverrides = new SafeArrayList<>(MatParamOverride.class);
|
||||||
|
|
||||||
for (MatParamOverride override : localOverrides) {
|
for (MatParamOverride override : localOverrides) {
|
||||||
clone.localOverrides.add((MatParamOverride) override.clone());
|
clone.localOverrides.add((MatParamOverride) override.clone());
|
||||||
@ -1598,7 +1598,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab
|
|||||||
capsule.write(shadowMode, "shadow_mode", ShadowMode.Inherit);
|
capsule.write(shadowMode, "shadow_mode", ShadowMode.Inherit);
|
||||||
capsule.write(localTransform, "transform", Transform.IDENTITY);
|
capsule.write(localTransform, "transform", Transform.IDENTITY);
|
||||||
capsule.write(localLights, "lights", null);
|
capsule.write(localLights, "lights", null);
|
||||||
capsule.writeSavableArrayList(localOverrides, "overrides", null);
|
capsule.writeSavableArrayList(new ArrayList(localOverrides), "overrides", null);
|
||||||
|
|
||||||
// Shallow clone the controls array to convert its type.
|
// Shallow clone the controls array to convert its type.
|
||||||
capsule.writeSavableArrayList(new ArrayList(controls), "controlsList", null);
|
capsule.writeSavableArrayList(new ArrayList(controls), "controlsList", null);
|
||||||
@ -1622,11 +1622,13 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab
|
|||||||
localLights = (LightList) ic.readSavable("lights", null);
|
localLights = (LightList) ic.readSavable("lights", null);
|
||||||
localLights.setOwner(this);
|
localLights.setOwner(this);
|
||||||
|
|
||||||
localOverrides = ic.readSavableArrayList("overrides", null);
|
ArrayList<MatParamOverride> localOverridesList = ic.readSavableArrayList("overrides", null);
|
||||||
if (localOverrides == null) {
|
if (localOverridesList == null) {
|
||||||
localOverrides = new ArrayList<>();
|
localOverrides = new SafeArrayList<>(MatParamOverride.class);
|
||||||
|
} else {
|
||||||
|
localOverrides = new SafeArrayList(MatParamOverride.class, localOverridesList);
|
||||||
}
|
}
|
||||||
worldOverrides = new ArrayList<>();
|
worldOverrides = new SafeArrayList<>(MatParamOverride.class);
|
||||||
|
|
||||||
//changed for backward compatibility with j3o files generated before the AnimControl/SkeletonControl split
|
//changed for backward compatibility with j3o files generated before the AnimControl/SkeletonControl split
|
||||||
//the AnimControl creates the SkeletonControl for old files and add it to the spatial.
|
//the AnimControl creates the SkeletonControl for old files and add it to the spatial.
|
||||||
|
@ -258,7 +258,7 @@ public class SafeArrayList<E> implements List<E>, Cloneable {
|
|||||||
if( o1 == null || !o1.equals(o2) )
|
if( o1 == null || !o1.equals(o2) )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return !(i1.hasNext() || !i2.hasNext());
|
return !(i1.hasNext() || i2.hasNext());
|
||||||
}
|
}
|
||||||
|
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
|
@ -2,17 +2,11 @@ if (!hasProperty('mainClass')) {
|
|||||||
ext.mainClass = ''
|
ext.mainClass = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven{
|
|
||||||
url 'http://nifty-gui.sourceforge.net/nifty-maven-repo'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(':jme3-core')
|
compile project(':jme3-core')
|
||||||
compile 'lessvoid:nifty:1.4.1'
|
compile 'com.github.nifty-gui:nifty:1.4.2'
|
||||||
compile 'lessvoid:nifty-default-controls:1.4.1'
|
compile 'com.github.nifty-gui:nifty-default-controls:1.4.2'
|
||||||
compile 'lessvoid:nifty-style-black:1.4.1'
|
compile 'com.github.nifty-gui:nifty-style-black:1.4.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
ext.pomConfig = {
|
ext.pomConfig = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user