Refactor pod/booster shapes
This commit is contained in:
parent
16f7e6ab54
commit
b1e173d54e
@ -0,0 +1,56 @@
|
|||||||
|
package net.sf.openrocket.gui.rocketfigure;
|
||||||
|
|
||||||
|
import net.sf.openrocket.rocketcomponent.ParallelStage;
|
||||||
|
import net.sf.openrocket.rocketcomponent.PodSet;
|
||||||
|
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||||
|
import net.sf.openrocket.util.Color;
|
||||||
|
import net.sf.openrocket.util.Transformation;
|
||||||
|
|
||||||
|
import java.awt.Shape;
|
||||||
|
|
||||||
|
public class ComponentAssemblyShapes extends RocketComponentShape {
|
||||||
|
|
||||||
|
public static RocketComponentShape[] getShapesSide(final RocketComponent component, final Transformation transformation) {
|
||||||
|
double radius = getDisplayRadius(component);
|
||||||
|
|
||||||
|
Shape[] s = EmptyShapes.getShapesSideWithSelectionSquare(transformation, radius);
|
||||||
|
RocketComponentShape[] shapes = RocketComponentShape.toArray(s, component);
|
||||||
|
|
||||||
|
// Set the color of the shapes
|
||||||
|
Color color = getColor(component);
|
||||||
|
for (int i = 0; i < shapes.length - 1; i++) {
|
||||||
|
shapes[i].setColor(color);
|
||||||
|
}
|
||||||
|
|
||||||
|
return shapes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static RocketComponentShape[] getShapesBack(final RocketComponent component, final Transformation transformation) {
|
||||||
|
double radius = getDisplayRadius(component);
|
||||||
|
|
||||||
|
Shape[] s = EmptyShapes.getShapesBackWithSelectionSquare(transformation, radius);
|
||||||
|
RocketComponentShape[] shapes = RocketComponentShape.toArray(s, component);
|
||||||
|
|
||||||
|
// Set the color of the shapes
|
||||||
|
Color color = getColor(component);
|
||||||
|
for (int i = 0; i < shapes.length - 1; i++) {
|
||||||
|
shapes[i].setColor(color);
|
||||||
|
}
|
||||||
|
|
||||||
|
return shapes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double getDisplayRadius(RocketComponent component) {
|
||||||
|
return component.getRocket().getBoundingRadius() * 0.03;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Color getColor(RocketComponent component) {
|
||||||
|
if (component instanceof PodSet) {
|
||||||
|
return new Color(160,160,215);
|
||||||
|
} else if (component instanceof ParallelStage) {
|
||||||
|
return new Color(198,163,184);
|
||||||
|
} else {
|
||||||
|
return new Color(160, 160, 160);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,48 +1,5 @@
|
|||||||
package net.sf.openrocket.gui.rocketfigure;
|
package net.sf.openrocket.gui.rocketfigure;
|
||||||
|
|
||||||
import net.sf.openrocket.rocketcomponent.ParallelStage;
|
public class ParallelStageShapes extends ComponentAssemblyShapes {
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
// Everything is implemented in ComponentAssemblyShapes.java
|
||||||
import net.sf.openrocket.util.Color;
|
|
||||||
import net.sf.openrocket.util.Transformation;
|
|
||||||
|
|
||||||
import java.awt.Shape;
|
|
||||||
|
|
||||||
public class ParallelStageShapes extends RocketComponentShape {
|
|
||||||
public static final Color boosterColor = new Color(198,163,184);
|
|
||||||
|
|
||||||
public static RocketComponentShape[] getShapesSide(final RocketComponent component, final Transformation transformation) {
|
|
||||||
ParallelStage booster = (ParallelStage)component;
|
|
||||||
double radius = getDisplayRadius(booster);
|
|
||||||
|
|
||||||
Shape[] s = EmptyShapes.getShapesSideWithSelectionSquare(transformation, radius);
|
|
||||||
RocketComponentShape[] shapes = RocketComponentShape.toArray(s, component);
|
|
||||||
|
|
||||||
// Set the color of the shapes
|
|
||||||
for (int i = 0; i < shapes.length - 1; i++) {
|
|
||||||
shapes[i].setColor(boosterColor);
|
|
||||||
}
|
|
||||||
shapes[shapes.length - 1].setColor(Color.INVISIBLE);
|
|
||||||
|
|
||||||
return shapes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static RocketComponentShape[] getShapesBack(final RocketComponent component, final Transformation transformation) {
|
|
||||||
ParallelStage booster = (ParallelStage)component;
|
|
||||||
double radius = getDisplayRadius(booster);
|
|
||||||
|
|
||||||
Shape[] s = EmptyShapes.getShapesBackWithSelectionSquare(transformation, radius);
|
|
||||||
RocketComponentShape[] shapes = RocketComponentShape.toArray(s, component);
|
|
||||||
|
|
||||||
// Set the color of the shapes
|
|
||||||
for (int i = 0; i < shapes.length - 1; i++) {
|
|
||||||
shapes[i].setColor(boosterColor);
|
|
||||||
}
|
|
||||||
shapes[shapes.length - 1].setColor(Color.INVISIBLE);
|
|
||||||
|
|
||||||
return shapes;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static double getDisplayRadius(ParallelStage booster) {
|
|
||||||
return booster.getRocket().getBoundingRadius() * 0.03;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,48 +1,5 @@
|
|||||||
package net.sf.openrocket.gui.rocketfigure;
|
package net.sf.openrocket.gui.rocketfigure;
|
||||||
|
|
||||||
import net.sf.openrocket.rocketcomponent.PodSet;
|
public class PodSetShapes extends ComponentAssemblyShapes {
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
// Everything is implemented in ComponentAssemblyShapes.java
|
||||||
import net.sf.openrocket.util.Color;
|
|
||||||
import net.sf.openrocket.util.Transformation;
|
|
||||||
|
|
||||||
import java.awt.Shape;
|
|
||||||
|
|
||||||
public class PodSetShapes extends RocketComponentShape {
|
|
||||||
public static final Color podsetColor = new Color(160,160,215);
|
|
||||||
|
|
||||||
public static RocketComponentShape[] getShapesSide(final RocketComponent component, final Transformation transformation) {
|
|
||||||
PodSet podset = (PodSet)component;
|
|
||||||
double radius = getDisplayRadius(podset);
|
|
||||||
|
|
||||||
Shape[] s = EmptyShapes.getShapesSideWithSelectionSquare(transformation, radius);
|
|
||||||
RocketComponentShape[] shapes = RocketComponentShape.toArray(s, component);
|
|
||||||
|
|
||||||
// Set the color of the shapes
|
|
||||||
for (int i = 0; i < shapes.length - 1; i++) {
|
|
||||||
shapes[i].setColor(podsetColor);
|
|
||||||
}
|
|
||||||
shapes[shapes.length - 1].setColor(Color.INVISIBLE);
|
|
||||||
|
|
||||||
return shapes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static RocketComponentShape[] getShapesBack(final RocketComponent component, final Transformation transformation) {
|
|
||||||
PodSet podset = (PodSet)component;
|
|
||||||
double radius = getDisplayRadius(podset);
|
|
||||||
|
|
||||||
Shape[] s = EmptyShapes.getShapesBackWithSelectionSquare(transformation, radius);
|
|
||||||
RocketComponentShape[] shapes = RocketComponentShape.toArray(s, component);
|
|
||||||
|
|
||||||
// Set the color of the shapes
|
|
||||||
for (int i = 0; i < shapes.length - 1; i++) {
|
|
||||||
shapes[i].setColor(podsetColor);
|
|
||||||
}
|
|
||||||
shapes[shapes.length - 1].setColor(Color.INVISIBLE);
|
|
||||||
|
|
||||||
return shapes;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static double getDisplayRadius(PodSet podset) {
|
|
||||||
return podset.getRocket().getBoundingRadius() * 0.03;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -387,8 +387,8 @@ public class RocketFigure extends AbstractScaleFigure {
|
|||||||
for (Entry<RocketComponent, ArrayList<InstanceContext>> entry : config.getActiveInstances().entrySet()) {
|
for (Entry<RocketComponent, ArrayList<InstanceContext>> entry : config.getActiveInstances().entrySet()) {
|
||||||
final RocketComponent comp = entry.getKey();
|
final RocketComponent comp = entry.getKey();
|
||||||
|
|
||||||
// Only draw podsets when they are selected
|
// Only draw pod sets and boosters when they are selected
|
||||||
if ((comp instanceof PodSet || comp instanceof ParallelStage) && preferences.isShowMarkers()) {
|
if (preferences.isShowMarkers() && (comp instanceof PodSet || comp instanceof ParallelStage)) {
|
||||||
boolean selected = false;
|
boolean selected = false;
|
||||||
|
|
||||||
// Check if component is in the selection
|
// Check if component is in the selection
|
||||||
|
Loading…
x
Reference in New Issue
Block a user