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