Преглед на файлове

Minor bug changed with selected object rotating and scaling.

Gilian Joosen преди 10 години
родител
ревизия
3a19457917
променени са 2 файла, в които са добавени 21 реда и са изтрити 2 реда
  1. 5 1
      src/gui/simulator/Draw.java
  2. 16 1
      src/gui/simulator/Terrain.java

+ 5 - 1
src/gui/simulator/Draw.java

@@ -26,7 +26,7 @@ public abstract class Draw {
         this.scale = scale;
     }
 
-    private AffineTransform getAffineTransform(){
+    public AffineTransform getAffineTransform(){
         AffineTransform transform = new AffineTransform();
         transform.translate(this.x, this.y);
         transform.scale(this.scale, this.scale);
@@ -78,4 +78,8 @@ public abstract class Draw {
     public int getHeight(){
         return this.image.getHeight(null);
     }
+
+    public double getRotation() {
+        return rotation;
+    }
 }

+ 16 - 1
src/gui/simulator/Terrain.java

@@ -8,6 +8,7 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseWheelEvent;
+import java.awt.geom.AffineTransform;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
 import java.util.List;
@@ -31,19 +32,25 @@ public class Terrain extends JPanel {
         addMouseListener(new MouseAdapter() {
             @Override
             public void mousePressed(MouseEvent e) {
+                boolean newObject = false;
                 for(Draw drawObject: entities){
                     if(drawObject.contains(e.getPoint())){
                         dragObject = drawObject;
                         offset = new Point2D.Double(e.getX() - drawObject.getX(), e.getY() - drawObject.getY());
                         selectedObject = dragObject;
+                        newObject = true;
                     }
                 }
+                if(!newObject){
+                    selectedObject = null;
+                }
+                repaint();
             }
 
             @Override
             public void mouseReleased(MouseEvent e) {
                 dragObject = null;
-                selectedObject = null;
+//                selectedObject = null;
             }
         });
 
@@ -93,8 +100,16 @@ public class Terrain extends JPanel {
 
         if(this.selectedObject != null){
             Shape shape = new Rectangle2D.Double(this.selectedObject.getX(), this.selectedObject.getY() , this.selectedObject.getWidth() * this.selectedObject.getScale(), this.selectedObject.getHeight() * this.selectedObject.getScale());
+
+
+            AffineTransform backup = g2.getTransform();
+            AffineTransform trans = new AffineTransform();
+            trans.rotate(Math.toRadians(this.selectedObject.getRotation()), (this.selectedObject.getX() + (this.selectedObject.getWidth() / 2 * this.selectedObject.getScale())),(this.selectedObject.getY() +  (this.selectedObject.getHeight() /2 * this.selectedObject.getScale())));
+
+            g2.transform(trans);
             g2.setColor(Color.RED);
             g2.draw(shape);
+            g2.transform(backup);
         }
     }
 }