SDK:
- Make SceneEditor Controller good example of the async AWT/GL therading model of the SDK git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9355 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
77fc3e3eee
commit
352ee2083b
@ -54,7 +54,8 @@ import org.openide.util.Exceptions;
|
|||||||
import org.openide.util.Lookup;
|
import org.openide.util.Lookup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Example of a class that edits the scene, logic happens on the AWT side,
|
||||||
|
* do.. methods do not use global variables.
|
||||||
* @author normenhansen
|
* @author normenhansen
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -210,11 +211,10 @@ public class SceneEditorController implements PropertyChangeListener, NodeListen
|
|||||||
}
|
}
|
||||||
Vector3f after = new Vector3f(localTranslation);
|
Vector3f after = new Vector3f(localTranslation);
|
||||||
selected.setLocalTranslation(localTranslation);
|
selected.setLocalTranslation(localTranslation);
|
||||||
AbstractSceneExplorerNode selectedSpat = this.selectedSpat;
|
moveUndo(selected, before, after);
|
||||||
moveUndo(selected, before, after, selectedSpat);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void moveUndo(final Spatial spatial, final Vector3f before, final Vector3f after, final AbstractSceneExplorerNode parentNode) {
|
private void moveUndo(final Spatial spatial, final Vector3f before, final Vector3f after) {
|
||||||
if (spatial != null && before != null) {
|
if (spatial != null && before != null) {
|
||||||
Lookup.getDefault().lookup(SceneUndoRedoManager.class).addEdit(this, new AbstractUndoableSceneEdit() {
|
Lookup.getDefault().lookup(SceneUndoRedoManager.class).addEdit(this, new AbstractUndoableSceneEdit() {
|
||||||
|
|
||||||
@ -261,10 +261,10 @@ public class SceneEditorController implements PropertyChangeListener, NodeListen
|
|||||||
Vector3f before = new Vector3f(selected.getLocalTranslation());
|
Vector3f before = new Vector3f(selected.getLocalTranslation());
|
||||||
selected.setLocalTranslation(before.add(translation));
|
selected.setLocalTranslation(before.add(translation));
|
||||||
Vector3f after = new Vector3f(selected.getLocalTranslation());
|
Vector3f after = new Vector3f(selected.getLocalTranslation());
|
||||||
nudgeUndo(selected, before, after, selectedSpat);
|
nudgeUndo(selected, before, after);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void nudgeUndo(final Spatial spatial, final Vector3f before, final Vector3f after, final AbstractSceneExplorerNode parentNode) {
|
private void nudgeUndo(final Spatial spatial, final Vector3f before, final Vector3f after) {
|
||||||
if (spatial != null && before != null) {
|
if (spatial != null && before != null) {
|
||||||
Lookup.getDefault().lookup(SceneUndoRedoManager.class).addEdit(this, new AbstractUndoableSceneEdit() {
|
Lookup.getDefault().lookup(SceneUndoRedoManager.class).addEdit(this, new AbstractUndoableSceneEdit() {
|
||||||
|
|
||||||
@ -311,10 +311,10 @@ public class SceneEditorController implements PropertyChangeListener, NodeListen
|
|||||||
Quaternion before = new Quaternion(selected.getLocalRotation());
|
Quaternion before = new Quaternion(selected.getLocalRotation());
|
||||||
selected.rotate(rotation);
|
selected.rotate(rotation);
|
||||||
Quaternion after = new Quaternion(selected.getLocalRotation());
|
Quaternion after = new Quaternion(selected.getLocalRotation());
|
||||||
rotateUndo(selected, before, after, selectedSpat);
|
rotateUndo(selected, before, after);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rotateUndo(final Spatial spatial, final Quaternion before, final Quaternion after, final AbstractSceneExplorerNode parentNode) {
|
private void rotateUndo(final Spatial spatial, final Quaternion before, final Quaternion after) {
|
||||||
if (spatial != null && before != null) {
|
if (spatial != null && before != null) {
|
||||||
Lookup.getDefault().lookup(SceneUndoRedoManager.class).addEdit(this, new AbstractUndoableSceneEdit() {
|
Lookup.getDefault().lookup(SceneUndoRedoManager.class).addEdit(this, new AbstractUndoableSceneEdit() {
|
||||||
|
|
||||||
@ -422,8 +422,7 @@ public class SceneEditorController implements PropertyChangeListener, NodeListen
|
|||||||
parent.attachChild(selected);
|
parent.attachChild(selected);
|
||||||
}
|
}
|
||||||
refreshSelected();
|
refreshSelected();
|
||||||
AbstractSceneExplorerNode selectedSpat = this.selectedSpat;
|
addControlUndo(parent, control, jmeRootNode);
|
||||||
addControlUndo(parent, control, selectedSpat);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createDynamicPhysicsMeshForSelectedSpatial(final float weight) {
|
public void createDynamicPhysicsMeshForSelectedSpatial(final float weight) {
|
||||||
@ -463,8 +462,7 @@ public class SceneEditorController implements PropertyChangeListener, NodeListen
|
|||||||
parent.attachChild(selected);
|
parent.attachChild(selected);
|
||||||
}
|
}
|
||||||
refreshSelected();
|
refreshSelected();
|
||||||
AbstractSceneExplorerNode selectedSpat = this.selectedSpat;
|
addControlUndo(parent, control, jmeRootNode);
|
||||||
addControlUndo(parent, control, selectedSpat);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createCharacterControlForSelectedSpatial(final boolean auto, final float radius, final float height) {
|
public void createCharacterControlForSelectedSpatial(final boolean auto, final float radius, final float height) {
|
||||||
@ -509,8 +507,7 @@ public class SceneEditorController implements PropertyChangeListener, NodeListen
|
|||||||
parent.attachChild(selected);
|
parent.attachChild(selected);
|
||||||
}
|
}
|
||||||
refreshSelected();
|
refreshSelected();
|
||||||
AbstractSceneExplorerNode selectedSpat = this.selectedSpat;
|
addControlUndo(parent, control, jmeRootNode);
|
||||||
addControlUndo(parent, control, selectedSpat);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addControlUndo(final Node undoParent, final Control undoControl, final AbstractSceneExplorerNode parentNode) {
|
private void addControlUndo(final Node undoParent, final Control undoControl, final AbstractSceneExplorerNode parentNode) {
|
||||||
@ -583,7 +580,7 @@ public class SceneEditorController implements PropertyChangeListener, NodeListen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
refreshSelected();
|
refreshSelected();
|
||||||
addSpatialUndo(selected, linkNode, null, selectedSpat);
|
addSpatialUndo(selected, linkNode, null, jmeRootNode);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Confirmation msg = new NotifyDescriptor.Confirmation(
|
Confirmation msg = new NotifyDescriptor.Confirmation(
|
||||||
"Error importing " + file.getName() + "\n" + ex.toString(),
|
"Error importing " + file.getName() + "\n" + ex.toString(),
|
||||||
@ -632,7 +629,7 @@ public class SceneEditorController implements PropertyChangeListener, NodeListen
|
|||||||
selected.worldToLocal(location, localVec);
|
selected.worldToLocal(location, localVec);
|
||||||
linkNode.setLocalTranslation(localVec);
|
linkNode.setLocalTranslation(localVec);
|
||||||
}
|
}
|
||||||
addSpatialUndo(selected, linkNode, null, selectedSpat);
|
addSpatialUndo(selected, linkNode, null, jmeRootNode);
|
||||||
}
|
}
|
||||||
refreshSelected();
|
refreshSelected();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@ -682,7 +679,7 @@ public class SceneEditorController implements PropertyChangeListener, NodeListen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
refreshSelected();
|
refreshSelected();
|
||||||
addSpatialUndo(selected, file, null, selectedSpat);
|
addSpatialUndo(selected, file, null, jmeRootNode);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Confirmation msg = new NotifyDescriptor.Confirmation(
|
Confirmation msg = new NotifyDescriptor.Confirmation(
|
||||||
"Error importing " + file.getName() + "\n" + ex.toString(),
|
"Error importing " + file.getName() + "\n" + ex.toString(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user