Fixed an issue that prevented the preview to be displayed properly in the material editor
This commit is contained in:
parent
55195bd996
commit
0e1619c01b
@ -97,14 +97,14 @@ public class MaterialPreviewRenderer implements SceneListener {
|
|||||||
showMaterial(m, null);
|
showMaterial(m, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showMaterial(final Material m,final String techniqueName) {
|
public void showMaterial(final Material m, final String techniqueName) {
|
||||||
if (!init) {
|
if (!init) {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
SceneApplication.getApplication().enqueue(new Callable<Material>() {
|
SceneApplication.getApplication().enqueue(new Callable<Material>() {
|
||||||
|
|
||||||
public Material call() throws Exception {
|
public Material call() throws Exception {
|
||||||
if(techniqueName!= null){
|
if (techniqueName != null) {
|
||||||
try {
|
try {
|
||||||
m.selectTechnique(techniqueName, SceneApplication.getApplication().getRenderManager());
|
m.selectTechnique(techniqueName, SceneApplication.getApplication().getRenderManager());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -142,9 +142,10 @@ public class MaterialPreviewRenderer implements SceneListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int lastErrorHash = 0;
|
private int lastErrorHash = 0;
|
||||||
private void smartLog(String expText, String message){
|
|
||||||
|
private void smartLog(String expText, String message) {
|
||||||
int hash = message.hashCode();
|
int hash = message.hashCode();
|
||||||
if(hash != lastErrorHash){
|
if (hash != lastErrorHash) {
|
||||||
Logger.getLogger(MaterialPreviewRenderer.class.getName()).log(Level.SEVERE, expText, message);
|
Logger.getLogger(MaterialPreviewRenderer.class.getName()).log(Level.SEVERE, expText, message);
|
||||||
lastErrorHash = hash;
|
lastErrorHash = hash;
|
||||||
}
|
}
|
||||||
@ -152,7 +153,7 @@ public class MaterialPreviewRenderer implements SceneListener {
|
|||||||
|
|
||||||
public Material reloadMaterial(Material mat) {
|
public Material reloadMaterial(Material mat) {
|
||||||
|
|
||||||
((ProjectAssetManager)mat.getMaterialDef().getAssetManager()).clearCache();
|
((ProjectAssetManager) mat.getMaterialDef().getAssetManager()).clearCache();
|
||||||
|
|
||||||
//creating a dummy mat with the mat def of the mat to reload
|
//creating a dummy mat with the mat def of the mat to reload
|
||||||
Material dummy = new Material(mat.getMaterialDef());
|
Material dummy = new Material(mat.getMaterialDef());
|
||||||
@ -160,7 +161,9 @@ public class MaterialPreviewRenderer implements SceneListener {
|
|||||||
for (MatParam matParam : mat.getParams()) {
|
for (MatParam matParam : mat.getParams()) {
|
||||||
dummy.setParam(matParam.getName(), matParam.getVarType(), matParam.getValue());
|
dummy.setParam(matParam.getName(), matParam.getVarType(), matParam.getValue());
|
||||||
}
|
}
|
||||||
|
if (mat.getActiveTechnique() != null) {
|
||||||
dummy.selectTechnique(mat.getActiveTechnique().getDef().getName(), SceneApplication.getApplication().getRenderManager());
|
dummy.selectTechnique(mat.getActiveTechnique().getDef().getName(), SceneApplication.getApplication().getRenderManager());
|
||||||
|
}
|
||||||
dummy.getAdditionalRenderState().set(mat.getAdditionalRenderState());
|
dummy.getAdditionalRenderState().set(mat.getAdditionalRenderState());
|
||||||
|
|
||||||
//creating a dummy geom and assigning the dummy material to it
|
//creating a dummy geom and assigning the dummy material to it
|
||||||
@ -181,8 +184,10 @@ public class MaterialPreviewRenderer implements SceneListener {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
return null;
|
return null;
|
||||||
} catch (NullPointerException npe){
|
} catch (NullPointerException npe) {
|
||||||
//utterly bad, but for some reason I get random NPE here and can't figure out why so to avoid bigger issues, I just catch it.
|
//utterly bad, but for some reason I get random NPE here and can't figure out why so to avoid bigger issues, I just catch it.
|
||||||
|
//the printStackTrace is intended, it will show up in debug mode, but won't be displayed in standzrd mode
|
||||||
|
npe.printStackTrace();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,7 +196,6 @@ public class MaterialPreviewRenderer implements SceneListener {
|
|||||||
return dummy;
|
return dummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void switchDisplay(DisplayType type) {
|
public void switchDisplay(DisplayType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case Box:
|
case Box:
|
||||||
|
@ -10,29 +10,9 @@
|
|||||||
*/
|
*/
|
||||||
package com.jme3.gde.materials.multiview.widgets;
|
package com.jme3.gde.materials.multiview.widgets;
|
||||||
|
|
||||||
import com.jme3.asset.DesktopAssetManager;
|
|
||||||
import com.jme3.asset.MaterialKey;
|
|
||||||
import com.jme3.gde.core.assets.ProjectAssetManager;
|
import com.jme3.gde.core.assets.ProjectAssetManager;
|
||||||
import com.jme3.gde.core.scene.PreviewRequest;
|
|
||||||
import com.jme3.gde.core.scene.SceneApplication;
|
|
||||||
import com.jme3.gde.core.scene.SceneListener;
|
|
||||||
import com.jme3.gde.core.scene.SceneRequest;
|
import com.jme3.gde.core.scene.SceneRequest;
|
||||||
import com.jme3.gde.materials.MaterialPreviewRenderer;
|
import com.jme3.gde.materials.MaterialPreviewRenderer;
|
||||||
import com.jme3.material.MatParam;
|
|
||||||
import com.jme3.material.Material;
|
|
||||||
import com.jme3.math.FastMath;
|
|
||||||
import com.jme3.math.Quaternion;
|
|
||||||
import com.jme3.math.Vector3f;
|
|
||||||
import com.jme3.renderer.RendererException;
|
|
||||||
import com.jme3.scene.Geometry;
|
|
||||||
import com.jme3.scene.shape.Box;
|
|
||||||
import com.jme3.scene.shape.Quad;
|
|
||||||
import com.jme3.scene.shape.Sphere;
|
|
||||||
import com.jme3.util.MaterialDebugAppState;
|
|
||||||
import com.jme3.util.TangentBinormalGenerator;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
import javax.swing.ImageIcon;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user