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);
|
||||
}
|
||||
|
||||
public void showMaterial(final Material m,final String techniqueName) {
|
||||
public void showMaterial(final Material m, final String techniqueName) {
|
||||
if (!init) {
|
||||
init();
|
||||
}
|
||||
SceneApplication.getApplication().enqueue(new Callable<Material>() {
|
||||
|
||||
public Material call() throws Exception {
|
||||
if(techniqueName!= null){
|
||||
if (techniqueName != null) {
|
||||
try {
|
||||
m.selectTechnique(techniqueName, SceneApplication.getApplication().getRenderManager());
|
||||
} catch (Exception e) {
|
||||
@ -142,9 +142,10 @@ public class MaterialPreviewRenderer implements SceneListener {
|
||||
}
|
||||
|
||||
private int lastErrorHash = 0;
|
||||
private void smartLog(String expText, String message){
|
||||
|
||||
private void smartLog(String expText, String message) {
|
||||
int hash = message.hashCode();
|
||||
if(hash != lastErrorHash){
|
||||
if (hash != lastErrorHash) {
|
||||
Logger.getLogger(MaterialPreviewRenderer.class.getName()).log(Level.SEVERE, expText, message);
|
||||
lastErrorHash = hash;
|
||||
}
|
||||
@ -152,7 +153,7 @@ public class MaterialPreviewRenderer implements SceneListener {
|
||||
|
||||
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
|
||||
Material dummy = new Material(mat.getMaterialDef());
|
||||
@ -160,7 +161,9 @@ public class MaterialPreviewRenderer implements SceneListener {
|
||||
for (MatParam matParam : mat.getParams()) {
|
||||
dummy.setParam(matParam.getName(), matParam.getVarType(), matParam.getValue());
|
||||
}
|
||||
dummy.selectTechnique(mat.getActiveTechnique().getDef().getName(), SceneApplication.getApplication().getRenderManager());
|
||||
if (mat.getActiveTechnique() != null) {
|
||||
dummy.selectTechnique(mat.getActiveTechnique().getDef().getName(), SceneApplication.getApplication().getRenderManager());
|
||||
}
|
||||
dummy.getAdditionalRenderState().set(mat.getAdditionalRenderState());
|
||||
|
||||
//creating a dummy geom and assigning the dummy material to it
|
||||
@ -168,7 +171,7 @@ public class MaterialPreviewRenderer implements SceneListener {
|
||||
dummyGeom.setMaterial(dummy);
|
||||
|
||||
//preloading the dummyGeom, this call will compile the shader again
|
||||
SceneApplication.getApplication().getRenderManager().preloadScene(dummyGeom);
|
||||
SceneApplication.getApplication().getRenderManager().preloadScene(dummyGeom);
|
||||
} catch (RendererException e) {
|
||||
//compilation error, the shader code will be output to the console
|
||||
//the following code will output the error
|
||||
@ -181,8 +184,10 @@ public class MaterialPreviewRenderer implements SceneListener {
|
||||
}
|
||||
});
|
||||
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.
|
||||
//the printStackTrace is intended, it will show up in debug mode, but won't be displayed in standzrd mode
|
||||
npe.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -191,7 +196,6 @@ public class MaterialPreviewRenderer implements SceneListener {
|
||||
return dummy;
|
||||
}
|
||||
|
||||
|
||||
public void switchDisplay(DisplayType type) {
|
||||
switch (type) {
|
||||
case Box:
|
||||
|
@ -10,29 +10,9 @@
|
||||
*/
|
||||
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.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.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