Browse Source

* fixed a material bug in editor initialization
* changed terrain saving to use the cookie instead of the node, saving works well now
* updated to use new API changes

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7627 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

bre..ns 14 years ago
parent
commit
5a04d185aa

+ 8 - 3
jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainCameraController.java

@@ -46,6 +46,7 @@ import com.jme3.math.Ray;
 import com.jme3.math.Vector2f;
 import com.jme3.math.Vector2f;
 import com.jme3.math.Vector3f;
 import com.jme3.math.Vector3f;
 import com.jme3.renderer.Camera;
 import com.jme3.renderer.Camera;
+import java.util.logging.Logger;
 
 
 
 
 /**
 /**
@@ -63,8 +64,8 @@ public class TerrainCameraController extends AbstractCameraController {
 
 
     private boolean terrainEditToolActivated = false;
     private boolean terrainEditToolActivated = false;
     protected Application app;
     protected Application app;
-    private float toolModifyRate = 0.01f; // how frequently (in seconds) it should update
-    private long lastModifyTime;
+    private float toolModifyRate = 0.05f; // how frequently (in seconds) it should update to throttle down the tool effect
+    private float lastModifyTime; // last time the tool executed
 
 
     public TerrainCameraController(Camera cam) {
     public TerrainCameraController(Camera cam) {
         super(cam, SceneApplication.getApplication().getInputManager());
         super(cam, SceneApplication.getApplication().getInputManager());
@@ -193,7 +194,11 @@ public class TerrainCameraController extends AbstractCameraController {
     private void doTerrainUpdates(float dt) {
     private void doTerrainUpdates(float dt) {
 
 
         if (terrainEditToolActivated) {
         if (terrainEditToolActivated) {
-            if (app.getContext().getTimer().getTime() >= lastModifyTime + (toolModifyRate*1000)) {
+            lastModifyTime += dt;
+            
+            if (lastModifyTime >= toolModifyRate) {
+                
+                lastModifyTime = 0;
                 toolController.doTerrainEditToolActivated();
                 toolController.doTerrainEditToolActivated();
                 terrainEditToolActivated = false;
                 terrainEditToolActivated = false;
                 lastModifyTime = app.getContext().getTimer().getTime();
                 lastModifyTime = app.getContext().getTimer().getTime();

+ 26 - 126
jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainEditorController.java

@@ -35,10 +35,10 @@ package com.jme3.gde.terraineditor;
 import com.jme3.asset.AssetManager;
 import com.jme3.asset.AssetManager;
 import com.jme3.asset.TextureKey;
 import com.jme3.asset.TextureKey;
 import com.jme3.bounding.BoundingBox;
 import com.jme3.bounding.BoundingBox;
+import com.jme3.gde.core.assets.AssetDataObject;
 import com.jme3.gde.core.assets.ProjectAssetManager;
 import com.jme3.gde.core.assets.ProjectAssetManager;
 import com.jme3.gde.core.scene.SceneApplication;
 import com.jme3.gde.core.scene.SceneApplication;
 import com.jme3.gde.core.sceneexplorer.nodes.JmeSpatial;
 import com.jme3.gde.core.sceneexplorer.nodes.JmeSpatial;
-import com.jme3.gde.core.util.DataObjectSaveNode;
 import com.jme3.material.MatParam;
 import com.jme3.material.MatParam;
 import com.jme3.math.ColorRGBA;
 import com.jme3.math.ColorRGBA;
 import com.jme3.math.Vector2f;
 import com.jme3.math.Vector2f;
@@ -67,9 +67,7 @@ import javax.imageio.ImageIO;
 import jme3tools.converters.ImageToAwt;
 import jme3tools.converters.ImageToAwt;
 import org.openide.cookies.SaveCookie;
 import org.openide.cookies.SaveCookie;
 import org.openide.filesystems.FileObject;
 import org.openide.filesystems.FileObject;
-import org.openide.filesystems.FileUtil;
 import org.openide.loaders.DataObject;
 import org.openide.loaders.DataObject;
-import org.openide.loaders.DataObjectNotFoundException;
 import org.openide.util.Exceptions;
 import org.openide.util.Exceptions;
 
 
 /**
 /**
@@ -81,8 +79,7 @@ public class TerrainEditorController {
     private JmeSpatial jmeRootNode;
     private JmeSpatial jmeRootNode;
     private Node terrainNode;
     private Node terrainNode;
     private Node rootNode;
     private Node rootNode;
-    private DataObject currentFileObject;
-    private DataObjectSaveNode alphaDataObject;
+    private AssetDataObject currentFileObject;
 
 
     // texture settings
     // texture settings
     protected final String DEFAULT_TERRAIN_TEXTURE = "com/jme3/gde/terraineditor/dirt.jpg";
     protected final String DEFAULT_TERRAIN_TEXTURE = "com/jme3/gde/terraineditor/dirt.jpg";
@@ -91,90 +88,33 @@ public class TerrainEditorController {
     private final int BASE_TEXTURE_COUNT = NUM_ALPHA_TEXTURES; // add any others here, like a global specular map
     private final int BASE_TEXTURE_COUNT = NUM_ALPHA_TEXTURES; // add any others here, like a global specular map
     protected final int MAX_TEXTURE_LAYERS = 7-BASE_TEXTURE_COUNT; // 16 max, minus the ones we are reserving
     protected final int MAX_TEXTURE_LAYERS = 7-BASE_TEXTURE_COUNT; // 16 max, minus the ones we are reserving
 
 
-    public TerrainEditorController(JmeSpatial jmeRootNode, DataObject currentFileObject, TerrainEditorTopComponent topComponent) {
-        this.jmeRootNode = jmeRootNode;
-        rootNode = this.jmeRootNode.getLookup().lookup(Node.class);
-        this.currentFileObject = currentFileObject;
-        alphaDataObject = null;
-    }
 
 
-    public void setToolController(TerrainToolController toolController) {
-        
-    }
+    //private DataObjectSaveNode alphaDataObject;
+
+    protected SaveCookie terrainSaveCookie = new SaveCookie() {
+      public void save() throws IOException {
+            //TODO: On OpenGL thread? -- safest way.. with get()?
+            SceneApplication.getApplication().enqueue(new Callable() {
 
 
-    /**
-     * Saves the data object into the topComponent via
-     * TerrainEditorTopComponent.addDataObject()
-     */
-    public void getAlphaSaveDataObject(final TerrainEditorTopComponent topComponent) {
-        if (alphaDataObject != null)
-            topComponent.addDataObject(alphaDataObject);
-        else {
-            Terrain terrain = (Terrain) getTerrain(null);
-            if (terrain == null)
-                return;
-            SceneApplication.getApplication().enqueue(new Callable<Object>() {
                 public Object call() throws Exception {
                 public Object call() throws Exception {
-                    doCreateAlphaSaveDataObject();
-                    topComponent.addDataObject(alphaDataObject);
+                    currentFileObject.saveAsset();
+                    doSaveAlphaImages((Terrain)getTerrain(null));
                     return null;
                     return null;
                 }
                 }
             });
             });
         }
         }
+    };
 
 
+    
+    public TerrainEditorController(JmeSpatial jmeRootNode, AssetDataObject currentFileObject, TerrainEditorTopComponent topComponent) {
+        this.jmeRootNode = jmeRootNode;
+        rootNode = this.jmeRootNode.getLookup().lookup(Node.class);
+        this.currentFileObject = currentFileObject;
+        this.currentFileObject.setSaveCookie(terrainSaveCookie);
     }
     }
 
 
-    public void doGetAlphaSaveDataObject(final TerrainEditorTopComponent topComponent) {
-        if (alphaDataObject != null)
-            topComponent.addDataObject(alphaDataObject);
-        else {
-            Terrain terrain = (Terrain) getTerrain(null);
-            if (terrain == null)
-                return;
-            doCreateAlphaSaveDataObject();
-            topComponent.addDataObject(alphaDataObject);
-        }
-
-    }
-
-    /*public void createAlphaSaveDataObject() throws DataObjectNotFoundException {
-
-        if (alphaDataObject != null)
-            return;
-        try {
-            SceneApplication.getApplication().enqueue(new Callable<Object>() {
-
-                public Object call() throws Exception {
-                    doCreateAlphaSaveDataObject();
-                    return null;
-                }
-            }).get();
-        } catch (InterruptedException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (ExecutionException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-    }*/
-
-    private void doCreateAlphaSaveDataObject() {
-        if (alphaDataObject != null)
-            return;
-        Terrain terrain = (Terrain) getTerrain(null);
-        if (terrain == null)
-            return;
-        String assetFolder = "";
-        AssetManager manager = SceneApplication.getApplication().getAssetManager();
-        if (manager != null && manager instanceof ProjectAssetManager)
-            assetFolder = ((ProjectAssetManager)manager).getAssetFolderName();
-        Texture alpha0 = doGetAlphaTexture(terrain, 0);
-        String path = alpha0.getKey().getName();
-        Logger.getLogger(TerrainEditorController.class.getName()).info("Creating AlphaSaveDataObject, path: "+assetFolder+path);
-        FileObject fb = FileUtil.toFileObject(new File(assetFolder+path));
-        try {
-            alphaDataObject = new DataObjectSaveNode(DataObject.find(fb));
-        } catch (DataObjectNotFoundException ex) {
-            Exceptions.printStackTrace(ex);
-        }
+    public void setToolController(TerrainToolController toolController) {
+        
     }
     }
 
 
     public FileObject getCurrentFileObject() {
     public FileObject getCurrentFileObject() {
@@ -187,49 +127,6 @@ public class TerrainEditorController {
 
 
     public void setNeedsSave(boolean state) {
     public void setNeedsSave(boolean state) {
         currentFileObject.setModified(state);
         currentFileObject.setModified(state);
-        setNeedsSaveAlpha(state);
-    }
-
-    private void setNeedsSaveAlpha(boolean state) {
-        if (alphaDataObject == null)
-            doCreateAlphaSaveDataObject();
-        
-        Terrain terrain = (Terrain)getTerrain(null);
-        AlphaTextureSaveCookie cookie = new AlphaTextureSaveCookie(terrain);
-        if(!alphaDataObject.getDataObject().isModified()){
-            alphaDataObject.setSaveCookie(cookie);
-        }
-    }
-
-    class AlphaTextureSaveCookie implements SaveCookie {
-
-        private Terrain terrain;
-
-        AlphaTextureSaveCookie(Terrain terrain) {
-            this.terrain = terrain;
-        }
-
-        public String getId() {
-            return terrain.getSpatial().getName();
-        }
-
-        public void save() throws IOException {
-            saveAlphaImages(terrain);
-            alphaDataObject.removeSaveCookie();
-        }
-
-    }
-
-    public boolean isNeedSave() {
-        return currentFileObject.isModified();
-    }
-
-    public void saveScene() {
-        try {
-            currentFileObject.getLookup().lookup(SaveCookie.class).save();
-        } catch (IOException ex) {
-            Exceptions.printStackTrace(ex);
-        }
     }
     }
 
 
     protected Node getTerrain(Spatial root) {
     protected Node getTerrain(Spatial root) {
@@ -336,7 +233,7 @@ public class TerrainEditorController {
         final Node node = jmeRootNode.getLookup().lookup(Node.class);
         final Node node = jmeRootNode.getLookup().lookup(Node.class);
         terrainNode = null;
         terrainNode = null;
         rootNode = null;
         rootNode = null;
-        alphaDataObject = null;
+//        alphaDataObject = null;
     }
     }
 
 
     /**
     /**
@@ -559,6 +456,8 @@ public class TerrainEditorController {
         else
         else
             terrain.getMaterial().setTexture("DiffuseMap_"+layer, tex);
             terrain.getMaterial().setTexture("DiffuseMap_"+layer, tex);
 
 
+        doSetTextureScale(layer, DEFAULT_TEXTURE_SCALE);
+        
         setNeedsSave(true);
         setNeedsSave(true);
     }
     }
     
     
@@ -861,7 +760,7 @@ public class TerrainEditorController {
 
 
         parent.attachChild(terrain);
         parent.attachChild(terrain);
 
 
-        doCreateAlphaSaveDataObject();
+//        doCreateAlphaSaveDataObject();
 
 
         setNeedsSave(true);
         setNeedsSave(true);
 
 
@@ -1025,7 +924,7 @@ public class TerrainEditorController {
             return;
             return;
 
 
         
         
-        setNeedsSaveAlpha(true);
+        setNeedsSave(true);
         
         
         Texture tex = doGetAlphaTextureFromDiffuse(terrain, selectedTextureIndex);
         Texture tex = doGetAlphaTextureFromDiffuse(terrain, selectedTextureIndex);
         Image image = tex.getImage();
         Image image = tex.getImage();
@@ -1063,7 +962,7 @@ public class TerrainEditorController {
 	 * @param erase true if the tool should remove the paint instead of add it
 	 * @param erase true if the tool should remove the paint instead of add it
 	 * @param fadeFalloff the percentage of the radius when the paint begins to start fading
 	 * @param fadeFalloff the percentage of the radius when the paint begins to start fading
 	 */
 	 */
-	protected void doPaintAction(int texIndex, Image image, Vector2f uv, boolean dragged, float radius, boolean erase, float fadeFalloff){
+    protected void doPaintAction(int texIndex, Image image, Vector2f uv, boolean dragged, float radius, boolean erase, float fadeFalloff){
         Vector2f texuv = new Vector2f();
         Vector2f texuv = new Vector2f();
         ColorRGBA color = ColorRGBA.Black;
         ColorRGBA color = ColorRGBA.Black;
         
         
@@ -1075,6 +974,7 @@ public class TerrainEditorController {
         int miny = (int) (uv.y*height - radius*height);
         int miny = (int) (uv.y*height - radius*height);
         int maxy = (int) (uv.y*height + radius*height);
         int maxy = (int) (uv.y*height + radius*height);
 
 
+        Logger.getLogger(TerrainEditorTopComponent.class.getName()).info("Paint "+uv );
         float radiusSquared = radius*radius;
         float radiusSquared = radius*radius;
         float radiusFalloff = radius*fadeFalloff;
         float radiusFalloff = radius*fadeFalloff;
         // go through each pixel, in the radius of the tool, in the image
         // go through each pixel, in the radius of the tool, in the image

+ 4 - 34
jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainEditorTopComponent.java

@@ -55,13 +55,9 @@ import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.ActionListener;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeListenerProxy;
 import java.io.File;
 import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collection;
-import java.util.Vector;
 import java.util.logging.Logger;
 import java.util.logging.Logger;
 import javax.swing.AbstractCellEditor;
 import javax.swing.AbstractCellEditor;
 import javax.swing.DefaultListSelectionModel;
 import javax.swing.DefaultListSelectionModel;
@@ -70,7 +66,6 @@ import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JButton;
 import javax.swing.JTable;
 import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
 import javax.swing.ListSelectionModel;
-import javax.swing.SwingUtilities;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.filechooser.FileFilter;
 import javax.swing.filechooser.FileFilter;
@@ -81,7 +76,6 @@ import javax.swing.table.TableCellRenderer;
 import jme3tools.converters.ImageToAwt;
 import jme3tools.converters.ImageToAwt;
 import org.netbeans.api.progress.ProgressHandle;
 import org.netbeans.api.progress.ProgressHandle;
 import org.netbeans.api.progress.ProgressHandleFactory;
 import org.netbeans.api.progress.ProgressHandleFactory;
-import org.openide.loaders.DataObjectNotFoundException;
 import org.openide.nodes.NodeEvent;
 import org.openide.nodes.NodeEvent;
 import org.openide.nodes.NodeMemberEvent;
 import org.openide.nodes.NodeMemberEvent;
 import org.openide.nodes.NodeReorderEvent;
 import org.openide.nodes.NodeReorderEvent;
@@ -94,8 +88,6 @@ import org.openide.DialogDisplayer;
 import org.openide.NotifyDescriptor;
 import org.openide.NotifyDescriptor;
 import org.openide.NotifyDescriptor.Confirmation;
 import org.openide.NotifyDescriptor.Confirmation;
 import org.openide.WizardDescriptor;
 import org.openide.WizardDescriptor;
-import org.openide.cookies.SaveCookie;
-import org.openide.loaders.DataObject;
 import org.openide.nodes.NodeListener;
 import org.openide.nodes.NodeListener;
 import org.openide.util.Exceptions;
 import org.openide.util.Exceptions;
 import org.openide.util.HelpCtx;
 import org.openide.util.HelpCtx;
@@ -126,6 +118,7 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
     private SkyboxWizardAction skyboxWizard;
     private SkyboxWizardAction skyboxWizard;
     private JmeSpatial selectedSpat;
     private JmeSpatial selectedSpat;
     private TerrainNodeListener terrainDeletedNodeListener;
     private TerrainNodeListener terrainDeletedNodeListener;
+    
 
 
     public enum TerrainEditButton {none, raiseTerrain, lowerTerrain, smoothTerrain, levelTerrain, paintTerrain, eraseTerrain};
     public enum TerrainEditButton {none, raiseTerrain, lowerTerrain, smoothTerrain, levelTerrain, paintTerrain, eraseTerrain};
 
 
@@ -760,7 +753,7 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
 
 
         addSaveNode(selectedSpat);
         addSaveNode(selectedSpat);
         
         
-        editorController.getAlphaSaveDataObject(this);
+ //       editorController.getAlphaSaveDataObject(this);
         
         
         editorController.setNeedsSave(true);
         editorController.setNeedsSave(true);
 
 
@@ -971,7 +964,7 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
             
             
             setSceneInfo(currentRequest.getJmeNode(), true);
             setSceneInfo(currentRequest.getJmeNode(), true);
 
 
-            editorController.doGetAlphaSaveDataObject(this);
+            //editorController.doGetAlphaSaveDataObject(this);
 
 
             // if the opened scene has terrain, add it to a save node
             // if the opened scene has terrain, add it to a save node
             Terrain terrain = (Terrain)editorController.getTerrain(null);
             Terrain terrain = (Terrain)editorController.getTerrain(null);
@@ -1029,11 +1022,7 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
     }
     }
 
 
     protected void addSaveNode(org.openide.nodes.Node node) {
     protected void addSaveNode(org.openide.nodes.Node node) {
-        org.openide.nodes.Node[] nodes = getActivatedNodes();
-        org.openide.nodes.Node[] newNodes = new org.openide.nodes.Node[nodes.length+1];
-        System.arraycopy(nodes, 0, newNodes, 0, nodes.length);
-        newNodes[newNodes.length-1] = node;
-        setActivatedNodes(newNodes);
+        setActivatedNodes(new org.openide.nodes.Node[]{node});
     }
     }
 
 
     private void setSceneInfo(final JmeNode jmeNode, final boolean active) {
     private void setSceneInfo(final JmeNode jmeNode, final boolean active) {
@@ -1058,25 +1047,6 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
         });
         });
     }
     }
 
 
-    /*private boolean checkSaved() {
-        if (editorController != null && editorController.isNeedSave()) {
-                Confirmation msg = new NotifyDescriptor.Confirmation("Your Scene is not saved, do you want to save?", 
-                        NotifyDescriptor.YES_NO_CANCEL_OPTION, 
-                        NotifyDescriptor.WARNING_MESSAGE);
-                Object res = DialogDisplayer.getDefault().notify(msg);
-                if (NotifyDescriptor.CANCEL_OPTION.equals(res)) {
-                    return false;
-                } else if (NotifyDescriptor.YES_OPTION.equals(res)) {
-                    editorController.saveScene();
-                    return true;
-                } else if (NotifyDescriptor.NO_OPTION.equals(res)) {
-                    return true;
-                }
-                return true;
-        }
-        return true;
-    }*/
-
     public boolean sceneClose(SceneRequest request) {
     public boolean sceneClose(SceneRequest request) {
         if (request.equals(currentRequest)) {
         if (request.equals(currentRequest)) {
 //            if (checkSaved()) {
 //            if (checkSaved()) {

+ 9 - 1
jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainToolController.java

@@ -48,6 +48,7 @@ import com.jme3.scene.VertexBuffer;
 import com.jme3.scene.shape.Sphere;
 import com.jme3.scene.shape.Sphere;
 import com.jme3.util.IntMap.Entry;
 import com.jme3.util.IntMap.Entry;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Callable;
+import java.util.logging.Logger;
 
 
 /**
 /**
  * The controller for the terrain modification tools. It will in turn interact
  * The controller for the terrain modification tools. It will in turn interact
@@ -104,7 +105,8 @@ public class TerrainToolController extends SceneToolController {
         marker = new Geometry("edit marker");
         marker = new Geometry("edit marker");
         Mesh m = new Sphere(8, 8, 3);
         Mesh m = new Sphere(8, 8, 3);
         marker.setMesh(m);
         marker.setMesh(m);
-        Material mat = new Material(manager, "Common/MatDefs/Misc/WireColor.j3md");
+        Material mat = new Material(manager, "Common/MatDefs/Misc/Unshaded.j3md");
+        mat.getAdditionalRenderState().setWireframe(true);
         mat.setColor("Color", ColorRGBA.Green);
         mat.setColor("Color", ColorRGBA.Green);
         marker.setMaterial(mat);
         marker.setMaterial(mat);
         marker.setLocalTranslation(0,0,0);
         marker.setLocalTranslation(0,0,0);
@@ -125,8 +127,10 @@ public class TerrainToolController extends SceneToolController {
             hideEditTool();
             hideEditTool();
         } else if (state == TerrainEditButton.raiseTerrain || state == TerrainEditButton.lowerTerrain) {
         } else if (state == TerrainEditButton.raiseTerrain || state == TerrainEditButton.lowerTerrain) {
             showEditTool(state);
             showEditTool(state);
+            Logger.getLogger(TerrainEditorTopComponent.class.getName()).info("TERRAIN HEIGHT state");
         } else if (state == TerrainEditButton.paintTerrain || state == TerrainEditButton.eraseTerrain) {
         } else if (state == TerrainEditButton.paintTerrain || state == TerrainEditButton.eraseTerrain) {
             showEditTool(state);
             showEditTool(state);
+            Logger.getLogger(TerrainEditorTopComponent.class.getName()).info("PAINT TERRAIN state");
         }
         }
     }
     }
 
 
@@ -205,15 +209,19 @@ public class TerrainToolController extends SceneToolController {
 
 
         if (TerrainEditButton.raiseTerrain == getCurrentEditButtonState() ) {
         if (TerrainEditButton.raiseTerrain == getCurrentEditButtonState() ) {
             editorController.doModifyTerrainHeight(getMarkerLocation(), heightToolRadius, heightAmount);
             editorController.doModifyTerrainHeight(getMarkerLocation(), heightToolRadius, heightAmount);
+            Logger.getLogger(TerrainEditorTopComponent.class.getName()).info("terrain raise height");
         }
         }
         else if (TerrainEditButton.lowerTerrain == getCurrentEditButtonState() ) {
         else if (TerrainEditButton.lowerTerrain == getCurrentEditButtonState() ) {
             editorController.doModifyTerrainHeight(getMarkerLocation(), heightToolRadius, -heightAmount);
             editorController.doModifyTerrainHeight(getMarkerLocation(), heightToolRadius, -heightAmount);
+            Logger.getLogger(TerrainEditorTopComponent.class.getName()).info("terrain lower height");
         }
         }
         else if(TerrainEditButton.paintTerrain == getCurrentEditButtonState()) {
         else if(TerrainEditButton.paintTerrain == getCurrentEditButtonState()) {
             editorController.doPaintTexture(selectedTextureIndex, getMarkerLocation(), heightToolRadius, paintAmount);
             editorController.doPaintTexture(selectedTextureIndex, getMarkerLocation(), heightToolRadius, paintAmount);
+            Logger.getLogger(TerrainEditorTopComponent.class.getName()).info("terrain paint");
         }
         }
         else if (TerrainEditButton.eraseTerrain == getCurrentEditButtonState() ) {
         else if (TerrainEditButton.eraseTerrain == getCurrentEditButtonState() ) {
             editorController.doPaintTexture(selectedTextureIndex, getMarkerLocation(), heightToolRadius, -paintAmount);
             editorController.doPaintTexture(selectedTextureIndex, getMarkerLocation(), heightToolRadius, -paintAmount);
+            Logger.getLogger(TerrainEditorTopComponent.class.getName()).info("terrain erase");
         }
         }
     }
     }
 }
 }