parent
20ec2f0797
commit
e438ad0928
@ -0,0 +1,99 @@ |
|||||||
|
package com.jme3.gde.core.sceneexplorer.nodes; |
||||||
|
|
||||||
|
import com.jme3.environment.EnvironmentCamera; |
||||||
|
import com.jme3.environment.LightProbeFactory; |
||||||
|
import com.jme3.environment.generation.JobProgressAdapter; |
||||||
|
import com.jme3.gde.core.scene.SceneApplication; |
||||||
|
import com.jme3.gde.core.scene.controller.SceneToolController; |
||||||
|
import com.jme3.gde.core.util.ButtonInplaceEditor; |
||||||
|
import com.jme3.light.LightProbe; |
||||||
|
import com.jme3.math.Vector3f; |
||||||
|
import com.jme3.scene.Node; |
||||||
|
import java.awt.Graphics; |
||||||
|
import java.awt.Rectangle; |
||||||
|
import java.awt.event.ActionEvent; |
||||||
|
import java.awt.event.ActionListener; |
||||||
|
import java.beans.PropertyEditorSupport; |
||||||
|
import java.util.concurrent.Callable; |
||||||
|
import org.netbeans.api.progress.ProgressHandle; |
||||||
|
import org.netbeans.api.progress.ProgressHandleFactory; |
||||||
|
import org.openide.explorer.propertysheet.ExPropertyEditor; |
||||||
|
import org.openide.explorer.propertysheet.InplaceEditor; |
||||||
|
import org.openide.explorer.propertysheet.PropertyEnv; |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* @author Nehon |
||||||
|
*/ |
||||||
|
public class JmeLightProbeButtonProperty extends PropertyEditorSupport implements ExPropertyEditor, InplaceEditor.Factory { |
||||||
|
|
||||||
|
JmeLightProbe probe; |
||||||
|
Node node; |
||||||
|
|
||||||
|
public JmeLightProbeButtonProperty(JmeLightProbe pe, Node node) { |
||||||
|
super(); |
||||||
|
this.node = node; |
||||||
|
this.probe = pe; |
||||||
|
} |
||||||
|
PropertyEnv env; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void attachEnv(PropertyEnv env) { |
||||||
|
this.env = env; |
||||||
|
env.registerInplaceEditorFactory(this); |
||||||
|
} |
||||||
|
private ButtonInplaceEditor ed = null; |
||||||
|
|
||||||
|
@Override |
||||||
|
public InplaceEditor getInplaceEditor() { |
||||||
|
if (ed == null) { |
||||||
|
ed = new ButtonInplaceEditor("Refresh"); |
||||||
|
ed.addActionListener(new ActionListener() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void actionPerformed(ActionEvent e) { |
||||||
|
|
||||||
|
SceneApplication.getApplication().enqueue(new Callable<Object>() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object call() throws Exception { |
||||||
|
|
||||||
|
EnvironmentCamera envCam = SceneApplication.getApplication().getStateManager().getState(EnvironmentCamera.class); |
||||||
|
SceneToolController toolController = SceneApplication.getApplication().getStateManager().getState(SceneToolController.class); |
||||||
|
if (toolController != null) { |
||||||
|
envCam.setPosition(toolController.getCursorLocation()); |
||||||
|
} else { |
||||||
|
envCam.setPosition(new Vector3f(0, 0, 0)); |
||||||
|
} |
||||||
|
LightProbeFactory.updateProbe(probe.getLightProbe(), envCam, node, new JmeLightProbeProgressHandler()); |
||||||
|
|
||||||
|
probe.setModified(); |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
return ed; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isPaintable() { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void paintValue(Graphics gfx, Rectangle box) { |
||||||
|
if (ed == null) { |
||||||
|
getInplaceEditor(); |
||||||
|
} |
||||||
|
ed.setSize(box.width, box.height); |
||||||
|
ed.doLayout(); |
||||||
|
Graphics g = gfx.create(box.x, box.y, box.width, box.height); |
||||||
|
ed.setOpaque(false); |
||||||
|
ed.paint(g); |
||||||
|
g.dispose(); |
||||||
|
probe.refresh(false); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
|
||||||
|
package com.jme3.gde.core.sceneexplorer.nodes; |
||||||
|
|
||||||
|
import com.jme3.environment.generation.JobProgressAdapter; |
||||||
|
import com.jme3.light.LightProbe; |
||||||
|
import org.netbeans.api.progress.ProgressHandle; |
||||||
|
import org.netbeans.api.progress.ProgressHandleFactory; |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* @author Nehon |
||||||
|
*/ |
||||||
|
|
||||||
|
|
||||||
|
public class JmeLightProbeProgressHandler extends JobProgressAdapter<LightProbe> { |
||||||
|
|
||||||
|
int lastProgress; |
||||||
|
|
||||||
|
ProgressHandle handle = ProgressHandleFactory.createHandle("Generating environment maps"); |
||||||
|
|
||||||
|
@Override |
||||||
|
public void start() { |
||||||
|
handle.start(100); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void progress(double value) { |
||||||
|
lastProgress = (int) (value * 100); |
||||||
|
handle.progress(lastProgress); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void step(String message) { |
||||||
|
handle.progress(message, lastProgress); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void done(LightProbe t) { |
||||||
|
handle.finish(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue