trackeditor: add left and right start tangents to segment editor

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@9309 30fe4595-0a0c-4342-8851-515496e4dcbd
This commit is contained in:
iobyte 2024-02-05 17:19:48 +00:00
parent 5246880ad9
commit d54d18c6ec
2 changed files with 89 additions and 19 deletions

View File

@ -80,6 +80,8 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
private SegmentSlider gradeSlider = null; private SegmentSlider gradeSlider = null;
private SegmentSlider startTangentSlider = null; private SegmentSlider startTangentSlider = null;
private SegmentSlider startTangentLeftSlider = null;
private SegmentSlider startTangentRightSlider = null;
private SegmentSlider endTangentSlider = null; private SegmentSlider endTangentSlider = null;
private SegmentSlider endTangentLeftSlider = null; private SegmentSlider endTangentLeftSlider = null;
private SegmentSlider endTangentRightSlider = null; private SegmentSlider endTangentRightSlider = null;
@ -232,7 +234,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
*/ */
private void initialize() private void initialize()
{ {
this.setSize(1070, 536); this.setSize(1180, 536);
Point p = editorFrame.getLocation(); Point p = editorFrame.getLocation();
p.x = editorFrame.getProject().getSegmentEditorX(); p.x = editorFrame.getProject().getSegmentEditorX();
p.y = editorFrame.getProject().getSegmentEditorY(); p.y = editorFrame.getProject().getSegmentEditorY();
@ -311,6 +313,8 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
centerPanel.add(getLengthSlider(), null); centerPanel.add(getLengthSlider(), null);
centerPanel.add(getGradeSlider(), null); centerPanel.add(getGradeSlider(), null);
centerPanel.add(getStartTangentSlider(), null); centerPanel.add(getStartTangentSlider(), null);
centerPanel.add(getStartTangentLeftSlider(), null);
centerPanel.add(getStartTangentRightSlider(), null);
centerPanel.add(getBankingStartSlider(), null); centerPanel.add(getBankingStartSlider(), null);
centerPanel.add(getBankingEndSlider(), null); centerPanel.add(getBankingEndSlider(), null);
centerPanel.add(getEndTangentSlider(), null); centerPanel.add(getEndTangentSlider(), null);
@ -437,6 +441,36 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
} }
return startTangentSlider; return startTangentSlider;
} }
/**
* This method initializes startTangentLeftSlider
*
* @return gui.SegmentSlider
*/
private SegmentSlider getStartTangentLeftSlider()
{
if (startTangentLeftSlider == null)
{
startTangentLeftSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getProfilStartTangentLeft(), "L Tan", "Start", "ProfilStartTangentLeft", true, false);
startTangentLeftSlider.setBounds(335, 64, 50, 390);
startTangentLeftSlider.addSliderListener(this);
}
return startTangentLeftSlider;
}
/**
* This method initializes startTangentRightSlider
*
* @return gui.SegmentSlider
*/
private SegmentSlider getStartTangentRightSlider()
{
if (startTangentRightSlider == null)
{
startTangentRightSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getProfilStartTangentRight(), "R Tan", "Start", "ProfilStartTangentRight", true, false);
startTangentRightSlider.setBounds(390, 64, 50, 390);
startTangentRightSlider.addSliderListener(this);
}
return startTangentRightSlider;
}
/** /**
* This method initializes endTangentSlider * This method initializes endTangentSlider
* *
@ -447,7 +481,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (endTangentSlider == null) if (endTangentSlider == null)
{ {
endTangentSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getProfilEndTangent(), "Tangent", "End", "ProfilEndTangent", true, false); endTangentSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getProfilEndTangent(), "Tangent", "End", "ProfilEndTangent", true, false);
endTangentSlider.setBounds(335, 64, 50, 390); endTangentSlider.setBounds(445, 64, 50, 390);
endTangentSlider.addSliderListener(this); endTangentSlider.addSliderListener(this);
} }
return endTangentSlider; return endTangentSlider;
@ -461,8 +495,8 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
{ {
if (endTangentLeftSlider == null) if (endTangentLeftSlider == null)
{ {
endTangentLeftSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getProfilEndTangentLeft(), "L Tangent", "End", "ProfilEndTangentLeft", true, false); endTangentLeftSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getProfilEndTangentLeft(), "L Tan", "End", "ProfilEndTangentLeft", true, false);
endTangentLeftSlider.setBounds(390, 64, 50, 390); endTangentLeftSlider.setBounds(500, 64, 50, 390);
endTangentLeftSlider.addSliderListener(this); endTangentLeftSlider.addSliderListener(this);
} }
return endTangentLeftSlider; return endTangentLeftSlider;
@ -476,8 +510,8 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
{ {
if (endTangentRightSlider == null) if (endTangentRightSlider == null)
{ {
endTangentRightSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getProfilEndTangentRight(), "R Tangent", "End", "ProfilEndTangentRight", true, false); endTangentRightSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getProfilEndTangentRight(), "R Tan", "End", "ProfilEndTangentRight", true, false);
endTangentRightSlider.setBounds(445, 64, 50, 390); endTangentRightSlider.setBounds(555, 64, 50, 390);
endTangentRightSlider.addSliderListener(this); endTangentRightSlider.addSliderListener(this);
} }
return endTangentRightSlider; return endTangentRightSlider;
@ -495,7 +529,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (!shape.getType().equals("str")) if (!shape.getType().equals("str"))
minSteps = 2; minSteps = 2;
profilStepsSlider = new SegmentSlider(minSteps, 100, 1, 1, shape.getProfilSteps(), "Steps", "", "ProfilSteps", true, true); profilStepsSlider = new SegmentSlider(minSteps, 100, 1, 1, shape.getProfilSteps(), "Steps", "", "ProfilSteps", true, true);
profilStepsSlider.setBounds(500, 64, 50, 390); profilStepsSlider.setBounds(610, 64, 50, 390);
profilStepsSlider.addSliderListener(this); profilStepsSlider.addSliderListener(this);
} }
return profilStepsSlider; return profilStepsSlider;
@ -510,7 +544,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (profilStepsLengthSlider == null) if (profilStepsLengthSlider == null)
{ {
profilStepsLengthSlider = new SegmentSlider(0, 100, 0, 0.001, shape.getProfilStepsLength(), "Steps", "Len", "ProfilStepsLength", true, false); profilStepsLengthSlider = new SegmentSlider(0, 100, 0, 0.001, shape.getProfilStepsLength(), "Steps", "Len", "ProfilStepsLength", true, false);
profilStepsLengthSlider.setBounds(555, 64, 50, 390); profilStepsLengthSlider.setBounds(665, 64, 50, 390);
profilStepsLengthSlider.addSliderListener(this); profilStepsLengthSlider.addSliderListener(this);
} }
return profilStepsLengthSlider; return profilStepsLengthSlider;
@ -525,7 +559,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (bankingStartSlider == null) if (bankingStartSlider == null)
{ {
bankingStartSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getBankingStart(), "Banking", "Start", "BankingStart", true, false); bankingStartSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getBankingStart(), "Banking", "Start", "BankingStart", true, false);
bankingStartSlider.setBounds(610, 64, 50, 390); bankingStartSlider.setBounds(720, 64, 50, 390);
bankingStartSlider.addSliderListener(this); bankingStartSlider.addSliderListener(this);
} }
return bankingStartSlider; return bankingStartSlider;
@ -540,7 +574,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (bankingEndSlider == null) if (bankingEndSlider == null)
{ {
bankingEndSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getBankingEnd(), "Banking", "End", "BankingEnd", true, false); bankingEndSlider = new SegmentSlider(-45, 45, 0, 0.001, shape.getBankingEnd(), "Banking", "End", "BankingEnd", true, false);
bankingEndSlider.setBounds(665, 64, 50, 390); bankingEndSlider.setBounds(775, 64, 50, 390);
bankingEndSlider.addSliderListener(this); bankingEndSlider.addSliderListener(this);
} }
return bankingEndSlider; return bankingEndSlider;
@ -555,7 +589,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (heightStartSlider == null) if (heightStartSlider == null)
{ {
heightStartSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightStart(), "Height", "Start", "HeightStart", true, false); heightStartSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightStart(), "Height", "Start", "HeightStart", true, false);
heightStartSlider.setBounds(720, 64, 50, 390); heightStartSlider.setBounds(830, 64, 50, 390);
heightStartSlider.addSliderListener(this); heightStartSlider.addSliderListener(this);
} }
return heightStartSlider; return heightStartSlider;
@ -570,7 +604,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (heightStartLeftSlider == null) if (heightStartLeftSlider == null)
{ {
heightStartLeftSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightStartLeft(), "L Height", "Start", "HeightStartLeft", true, false); heightStartLeftSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightStartLeft(), "L Height", "Start", "HeightStartLeft", true, false);
heightStartLeftSlider.setBounds(775, 64, 50, 390); heightStartLeftSlider.setBounds(885, 64, 50, 390);
heightStartLeftSlider.addSliderListener(this); heightStartLeftSlider.addSliderListener(this);
} }
return heightStartLeftSlider; return heightStartLeftSlider;
@ -585,7 +619,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (heightStartRightSlider == null) if (heightStartRightSlider == null)
{ {
heightStartRightSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightStartRight(), "R Height", "Start", "HeightStartRight", true, false); heightStartRightSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightStartRight(), "R Height", "Start", "HeightStartRight", true, false);
heightStartRightSlider.setBounds(830, 64, 50, 390); heightStartRightSlider.setBounds(940, 64, 50, 390);
heightStartRightSlider.addSliderListener(this); heightStartRightSlider.addSliderListener(this);
} }
return heightStartRightSlider; return heightStartRightSlider;
@ -600,7 +634,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (heightEndSlider == null) if (heightEndSlider == null)
{ {
heightEndSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightEnd(), "Height", "End", "HeightEnd", true, false); heightEndSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightEnd(), "Height", "End", "HeightEnd", true, false);
heightEndSlider.setBounds(885, 64, 50, 390); heightEndSlider.setBounds(995, 64, 50, 390);
heightEndSlider.addSliderListener(this); heightEndSlider.addSliderListener(this);
} }
return heightEndSlider; return heightEndSlider;
@ -615,7 +649,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (heightEndLeftSlider == null) if (heightEndLeftSlider == null)
{ {
heightEndLeftSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightEndLeft(), "L Height", "End", "HeightEndLeft", true, false); heightEndLeftSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightEndLeft(), "L Height", "End", "HeightEndLeft", true, false);
heightEndLeftSlider.setBounds(940, 64, 50, 390); heightEndLeftSlider.setBounds(1050, 64, 50, 390);
heightEndLeftSlider.addSliderListener(this); heightEndLeftSlider.addSliderListener(this);
} }
return heightEndLeftSlider; return heightEndLeftSlider;
@ -630,7 +664,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (heightEndRightSlider == null) if (heightEndRightSlider == null)
{ {
heightEndRightSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightEndRight(), "R Height", "End", "HeightEndRight", true, false); heightEndRightSlider = new SegmentSlider(-200, 650, 0, 0.001, shape.getHeightEndRight(), "R Height", "End", "HeightEndRight", true, false);
heightEndRightSlider.setBounds(995, 64, 50, 390); heightEndRightSlider.setBounds(1105, 64, 50, 390);
heightEndRightSlider.addSliderListener(this); heightEndRightSlider.addSliderListener(this);
} }
return heightEndRightSlider; return heightEndRightSlider;
@ -820,6 +854,8 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
this.getGradeSlider().setValue(shape.getGrade()); this.getGradeSlider().setValue(shape.getGrade());
this.getStartTangentSlider().setValue(shape.getProfilStartTangent()); this.getStartTangentSlider().setValue(shape.getProfilStartTangent());
this.getStartTangentLeftSlider().setValue(shape.getProfilStartTangentLeft());
this.getStartTangentRightSlider().setValue(shape.getProfilStartTangentRight());
this.getEndTangentSlider().setValue(shape.getProfilEndTangent()); this.getEndTangentSlider().setValue(shape.getProfilEndTangent());
this.getEndTangentLeftSlider().setValue(shape.getProfilEndTangentLeft()); this.getEndTangentLeftSlider().setValue(shape.getProfilEndTangentLeft());
this.getEndTangentRightSlider().setValue(shape.getProfilEndTangentRight()); this.getEndTangentRightSlider().setValue(shape.getProfilEndTangentRight());
@ -844,6 +880,8 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
if (shape.getValidProfil(editorFrame).equals("linear")) if (shape.getValidProfil(editorFrame).equals("linear"))
{ {
this.getStartTangentSlider().setEnabled(false); this.getStartTangentSlider().setEnabled(false);
this.getStartTangentLeftSlider().setEnabled(false);
this.getStartTangentRightSlider().setEnabled(false);
this.getEndTangentSlider().setEnabled(false); this.getEndTangentSlider().setEnabled(false);
this.getEndTangentLeftSlider().setEnabled(false); this.getEndTangentLeftSlider().setEnabled(false);
this.getEndTangentRightSlider().setEnabled(false); this.getEndTangentRightSlider().setEnabled(false);
@ -964,6 +1002,8 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
shape.setProfilEndTangentLeft(Double.NaN); shape.setProfilEndTangentLeft(Double.NaN);
shape.setProfilEndTangentRight(Double.NaN); shape.setProfilEndTangentRight(Double.NaN);
this.getStartTangentSlider().setEnabled(false); this.getStartTangentSlider().setEnabled(false);
this.getStartTangentLeftSlider().setEnabled(false);
this.getStartTangentRightSlider().setEnabled(false);
this.getEndTangentSlider().setEnabled(false); this.getEndTangentSlider().setEnabled(false);
this.getEndTangentLeftSlider().setEnabled(false); this.getEndTangentLeftSlider().setEnabled(false);
this.getEndTangentRightSlider().setEnabled(false); this.getEndTangentRightSlider().setEnabled(false);
@ -971,6 +1011,8 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
else else
{ {
this.getStartTangentSlider().setEnabled(true); this.getStartTangentSlider().setEnabled(true);
this.getStartTangentLeftSlider().setEnabled(true);
this.getStartTangentRightSlider().setEnabled(true);
this.getEndTangentSlider().setEnabled(true); this.getEndTangentSlider().setEnabled(true);
this.getEndTangentLeftSlider().setEnabled(true); this.getEndTangentLeftSlider().setEnabled(true);
this.getEndTangentRightSlider().setEnabled(true); this.getEndTangentRightSlider().setEnabled(true);
@ -1139,6 +1181,34 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
{ {
shape.setProfilStartTangent(shape.getCalculatedStartTangent()); shape.setProfilStartTangent(shape.getCalculatedStartTangent());
slider.setValue(shape.getProfilStartTangent()); slider.setValue(shape.getProfilStartTangent());
shape.setProfilStartTangentLeft(Double.NaN);
startTangentLeftSlider.setValue(shape.getProfilStartTangentLeft());
shape.setProfilStartTangentRight(Double.NaN);
startTangentRightSlider.setValue(shape.getProfilStartTangentRight());
}
}
else if (slider.getSection().equals("L Tan") && slider.getAttr().equals("Start"))
{
if (slider.isCheckBoxSelected())
{
shape.setProfilStartTangentLeft(shape.getCalculatedStartTangentLeft());
slider.setValue(shape.getProfilStartTangentLeft());
shape.setProfilStartTangent(Double.NaN);
startTangentSlider.setValue(shape.getProfilStartTangent());
}
}
else if (slider.getSection().equals("R Tan") && slider.getAttr().equals("Start"))
{
if (slider.isCheckBoxSelected())
{
shape.setProfilStartTangentRight(shape.getCalculatedStartTangentRight());
slider.setValue(shape.getProfilStartTangentRight());
shape.setProfilStartTangent(Double.NaN);
startTangentSlider.setValue(shape.getProfilStartTangent());
} }
} }
else if (slider.getSection().equals("Tangent") && slider.getAttr().equals("End")) else if (slider.getSection().equals("Tangent") && slider.getAttr().equals("End"))
@ -1155,7 +1225,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
endTangentRightSlider.setValue(shape.getProfilEndTangentRight()); endTangentRightSlider.setValue(shape.getProfilEndTangentRight());
} }
} }
else if (slider.getSection().equals("L Tangent") && slider.getAttr().equals("End")) else if (slider.getSection().equals("L Tan") && slider.getAttr().equals("End"))
{ {
if (slider.isCheckBoxSelected()) if (slider.isCheckBoxSelected())
{ {
@ -1166,7 +1236,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
endTangentSlider.setValue(shape.getProfilEndTangent()); endTangentSlider.setValue(shape.getProfilEndTangent());
} }
} }
else if (slider.getSection().equals("R Tangent") && slider.getAttr().equals("End")) else if (slider.getSection().equals("R Tan") && slider.getAttr().equals("End"))
{ {
if (slider.isCheckBoxSelected()) if (slider.isCheckBoxSelected())
{ {

View File

@ -34,7 +34,7 @@ public class Properties
private static Properties instance = new Properties(); private static Properties instance = new Properties();
private Vector<ActionListener> propertiesListeners = new Vector<ActionListener>(); private Vector<ActionListener> propertiesListeners = new Vector<ActionListener>();
public final String title = "sd2-trackeditor"; public final String title = "sd2-trackeditor";
public final String version = "1.4.34"; public final String version = "1.4.35";
private String path; private String path;
private double imageScale = 1; private double imageScale = 1;