Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
fdb53cb4
Commit
fdb53cb4
authored
Jun 15, 2020
by
DonLakeFlyer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
parent
ed9e7e27
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
88 additions
and
71 deletions
+88
-71
TerrainProfile.cc
src/QmlControls/TerrainProfile.cc
+78
-63
TerrainProfile.h
src/QmlControls/TerrainProfile.h
+10
-8
No files found.
src/QmlControls/TerrainProfile.cc
View file @
fdb53cb4
...
...
@@ -57,12 +57,12 @@ void TerrainProfile::_newVisualItems(void)
emit
_updateSignal
();
}
void
TerrainProfile
::
_createGeometry
(
QSGGeometryNode
*&
geometryNode
,
QSGGeometry
*&
geometry
,
int
vertices
,
QSGGeometry
::
DrawingMode
drawingMode
,
const
QColor
&
color
)
void
TerrainProfile
::
_createGeometry
(
QSGGeometryNode
*&
geometryNode
,
QSGGeometry
*&
geometry
,
QSGGeometry
::
DrawingMode
drawingMode
,
const
QColor
&
color
)
{
QSGFlatColorMaterial
*
terrainMaterial
=
new
QSGFlatColorMaterial
;
terrainMaterial
->
setColor
(
color
);
geometry
=
new
QSGGeometry
(
QSGGeometry
::
defaultAttributes_Point2D
(),
vertices
);
geometry
=
new
QSGGeometry
(
QSGGeometry
::
defaultAttributes_Point2D
(),
0
);
geometry
->
setDrawingMode
(
drawingMode
);
geometry
->
setLineWidth
(
2
);
...
...
@@ -74,12 +74,16 @@ void TerrainProfile::_createGeometry(QSGGeometryNode*& geometryNode, QSGGeometry
geometryNode
->
setGeometry
(
geometry
);
}
void
TerrainProfile
::
_updateSegmentCounts
(
FlightPathSegment
*
segment
,
int
&
c
Terrain
Points
,
int
&
cMissingTerrainSegments
,
int
&
cTerrainCollisionSegments
,
double
&
maxTerrainHeight
)
void
TerrainProfile
::
_updateSegmentCounts
(
FlightPathSegment
*
segment
,
int
&
c
FlightProfileSegments
,
int
&
cTerrainProfile
Points
,
int
&
cMissingTerrainSegments
,
int
&
cTerrainCollisionSegments
,
double
&
maxTerrainHeight
)
{
if
(
segment
->
amslTerrainHeights
().
count
()
==
0
||
qIsNaN
(
segment
->
coord1AMSLAlt
())
||
qIsNaN
(
segment
->
coord2AMSLAlt
()))
{
if
(
_shouldAddFlightProfileSegment
(
segment
))
{
cFlightProfileSegments
++
;
}
if
(
_shouldAddMissingTerrainSegment
(
segment
))
{
cMissingTerrainSegments
+=
1
;
}
else
{
cTerrainPoints
+=
segment
->
amslTerrainHeights
().
count
();
cTerrainP
rofileP
oints
+=
segment
->
amslTerrainHeights
().
count
();
for
(
int
i
=
0
;
i
<
segment
->
amslTerrainHeights
().
count
();
i
++
)
{
maxTerrainHeight
=
qMax
(
maxTerrainHeight
,
segment
->
amslTerrainHeights
()[
i
].
value
<
double
>
());
}
...
...
@@ -89,7 +93,7 @@ void TerrainProfile::_updateSegmentCounts(FlightPathSegment* segment, int& cTerr
}
}
void
TerrainProfile
::
_addTerrainProfileSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
double
amslAltRange
,
QSGGeometry
::
Point2D
*
terrainVertices
,
int
&
terrainVertexIndex
)
void
TerrainProfile
::
_addTerrainProfileSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
double
amslAltRange
,
QSGGeometry
::
Point2D
*
terrainVertices
,
int
&
terrain
Profile
VertexIndex
)
{
double
terrainDistance
=
0
;
for
(
int
heightIndex
=
0
;
heightIndex
<
segment
->
amslTerrainHeights
().
count
();
heightIndex
++
)
{
...
...
@@ -110,17 +114,17 @@ void TerrainProfile::_addTerrainProfileSegment(FlightPathSegment* segment, doubl
float
x
=
(
currentDistance
+
terrainDistance
)
*
_pixelsPerMeter
;
float
y
=
_availableHeight
()
-
(
terrainHeightPercent
*
_availableHeight
());
_setVertex
(
terrainVertices
[
terrainVertexIndex
++
],
x
,
y
);
_setVertex
(
terrainVertices
[
terrain
Profile
VertexIndex
++
],
x
,
y
);
}
}
void
TerrainProfile
::
_addMissingTerrainSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
QSGGeometry
::
Point2D
*
missingTerrainVertices
,
int
&
missing
Terrain
VertexIndex
)
void
TerrainProfile
::
_addMissingTerrainSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
QSGGeometry
::
Point2D
*
missingTerrainVertices
,
int
&
missing
terrainProfile
VertexIndex
)
{
if
(
segment
->
amslTerrainHeights
().
count
()
==
0
)
{
if
(
_shouldAddMissingTerrainSegment
(
segment
)
)
{
float
x
=
currentDistance
*
_pixelsPerMeter
;
float
y
=
_availableHeight
();
_setVertex
(
missingTerrainVertices
[
missing
Terrain
VertexIndex
++
],
x
,
y
);
_setVertex
(
missingTerrainVertices
[
missing
Terrain
VertexIndex
++
],
x
+
(
segment
->
totalDistance
()
*
_pixelsPerMeter
),
y
);
_setVertex
(
missingTerrainVertices
[
missing
terrainProfile
VertexIndex
++
],
x
,
y
);
_setVertex
(
missingTerrainVertices
[
missing
terrainProfile
VertexIndex
++
],
x
+
(
segment
->
totalDistance
()
*
_pixelsPerMeter
),
y
);
}
}
...
...
@@ -146,15 +150,15 @@ void TerrainProfile::_addTerrainCollisionSegment(FlightPathSegment* segment, dou
void
TerrainProfile
::
_addFlightProfileSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
double
amslAltRange
,
QSGGeometry
::
Point2D
*
flightProfileVertices
,
int
&
flightProfileVertexIndex
)
{
if
(
!
_shouldAddFlightProfileSegment
(
segment
))
{
return
;
}
double
amslCoord1Height
=
segment
->
coord1AMSLAlt
();
double
amslCoord2Height
=
segment
->
coord2AMSLAlt
();
double
coord1HeightPercent
=
qMax
(((
amslCoord1Height
-
_missionController
->
minAMSLAltitude
())
/
amslAltRange
),
0.0
);
double
coord2HeightPercent
=
qMax
(((
amslCoord2Height
-
_missionController
->
minAMSLAltitude
())
/
amslAltRange
),
0.0
);
if
(
qIsNaN
(
amslCoord1Height
)
||
qIsNaN
(
amslCoord2Height
))
{
return
;
}
float
x
=
currentDistance
*
_pixelsPerMeter
;
float
y
=
_availableHeight
()
-
(
coord1HeightPercent
*
_availableHeight
());
...
...
@@ -173,16 +177,16 @@ QSGNode* TerrainProfile::updatePaintNode(QSGNode* oldNode, QQuickItem::UpdatePai
QSGGeometry
*
missingTerrainGeometry
=
nullptr
;
QSGGeometry
*
flightProfileGeometry
=
nullptr
;
QSGGeometry
*
terrainCollisionGeometry
=
nullptr
;
int
cTerrainP
oints
=
0
;
int
cTerrainP
rofilePoints
=
0
;
int
cMissingTerrainSegments
=
0
;
int
cFlightP
athSegments
=
0
;
int
cFlightP
rofileSegments
=
0
;
int
cTerrainCollisionSegments
=
0
;
double
maxTerrainHeight
=
0
;
// First we need to determine:
// - how many terrain vertices we need
// - how many terrain
profile
vertices we need
// - how many missing terrain segments there are
// - how many flight p
ath
segments we need
// - how many flight p
rofile
segments we need
// - how many terrain collision segments there are
// - what is the total distance so we can calculate pixels per meter
...
...
@@ -191,16 +195,14 @@ QSGNode* TerrainProfile::updatePaintNode(QSGNode* oldNode, QQuickItem::UpdatePai
ComplexMissionItem
*
complexItem
=
_visualItems
->
value
<
ComplexMissionItem
*>
(
viIndex
);
if
(
visualItem
->
simpleFlightPathSegment
())
{
cFlightPathSegments
++
;
FlightPathSegment
*
segment
=
visualItem
->
simpleFlightPathSegment
();
_updateSegmentCounts
(
segment
,
c
Terrain
Points
,
cMissingTerrainSegments
,
cTerrainCollisionSegments
,
maxTerrainHeight
);
_updateSegmentCounts
(
segment
,
c
FlightProfileSegments
,
cTerrainProfile
Points
,
cMissingTerrainSegments
,
cTerrainCollisionSegments
,
maxTerrainHeight
);
}
if
(
complexItem
)
{
for
(
int
segmentIndex
=
0
;
segmentIndex
<
complexItem
->
flightPathSegments
()
->
count
();
segmentIndex
++
)
{
cFlightPathSegments
++
;
FlightPathSegment
*
segment
=
complexItem
->
flightPathSegments
()
->
value
<
FlightPathSegment
*>
(
segmentIndex
);
_updateSegmentCounts
(
segment
,
c
Terrain
Points
,
cMissingTerrainSegments
,
cTerrainCollisionSegments
,
maxTerrainHeight
);
_updateSegmentCounts
(
segment
,
c
FlightProfileSegments
,
cTerrainProfile
Points
,
cMissingTerrainSegments
,
cTerrainCollisionSegments
,
maxTerrainHeight
);
}
}
}
...
...
@@ -209,12 +211,12 @@ QSGNode* TerrainProfile::updatePaintNode(QSGNode* oldNode, QQuickItem::UpdatePai
#if 0
static int counter = 0;
qDebug() << "updatePaintNode" << counter++ << cFlightP
athSegments << cTerrain
Points << cMissingTerrainSegments << cTerrainCollisionSegments;
qDebug() << "updatePaintNode" << counter++ << cFlightP
rofileSegments << cTerrainProfile
Points << cMissingTerrainSegments << cTerrainCollisionSegments;
#endif
_pixelsPerMeter
=
(
_visibleWidth
-
(
_horizontalMargin
*
2
))
/
_missionController
->
missionDistance
();
// Instantiate nodes
if
(
!
rootNode
)
{
rootNode
=
new
QSGNode
;
...
...
@@ -223,47 +225,50 @@ QSGNode* TerrainProfile::updatePaintNode(QSGNode* oldNode, QQuickItem::UpdatePai
QSGGeometryNode
*
flightProfileNode
=
nullptr
;
QSGGeometryNode
*
terrainCollisionNode
=
nullptr
;
_createGeometry
(
terrainProfileNode
,
terrainProfileGeometry
,
cTerrainPoints
,
QSGGeometry
::
DrawLineStrip
,
"green"
);
_createGeometry
(
missingTerrainNode
,
missingTerrainGeometry
,
cMissingTerrainSegments
*
2
,
QSGGeometry
::
DrawLines
,
"yellow"
);
_createGeometry
(
flightProfileNode
,
flightProfileGeometry
,
cFlightPathSegments
*
2
,
QSGGeometry
::
DrawLines
,
"orange"
);
_createGeometry
(
terrainCollisionNode
,
terrainCollisionGeometry
,
cTerrainCollisionSegments
*
2
,
QSGGeometry
::
DrawLines
,
"red"
);
_createGeometry
(
terrainProfileNode
,
terrainProfileGeometry
,
QSGGeometry
::
DrawLineStrip
,
"green"
);
_createGeometry
(
missingTerrainNode
,
missingTerrainGeometry
,
QSGGeometry
::
DrawLines
,
"yellow"
);
_createGeometry
(
flightProfileNode
,
flightProfileGeometry
,
QSGGeometry
::
DrawLines
,
"orange"
);
_createGeometry
(
terrainCollisionNode
,
terrainCollisionGeometry
,
QSGGeometry
::
DrawLines
,
"red"
);
rootNode
->
appendChildNode
(
terrainProfileNode
);
rootNode
->
appendChildNode
(
missingTerrainNode
);
rootNode
->
appendChildNode
(
flightProfileNode
);
rootNode
->
appendChildNode
(
terrainCollisionNode
);
}
else
{
QSGNode
*
node
=
rootNode
->
childAtIndex
(
0
);
terrainProfileGeometry
=
static_cast
<
QSGGeometryNode
*>
(
node
)
->
geometry
();
terrainProfileGeometry
->
allocate
(
cTerrainPoints
);
node
->
markDirty
(
QSGNode
::
DirtyGeometry
);
node
=
rootNode
->
childAtIndex
(
1
);
missingTerrainGeometry
=
static_cast
<
QSGGeometryNode
*>
(
node
)
->
geometry
();
missingTerrainGeometry
->
allocate
(
cMissingTerrainSegments
*
2
);
node
->
markDirty
(
QSGNode
::
DirtyGeometry
);
node
=
rootNode
->
childAtIndex
(
2
);
flightProfileGeometry
=
static_cast
<
QSGGeometryNode
*>
(
node
)
->
geometry
();
flightProfileGeometry
->
allocate
(
cFlightPathSegments
*
2
);
node
->
markDirty
(
QSGNode
::
DirtyGeometry
);
node
=
rootNode
->
childAtIndex
(
3
);
terrainCollisionGeometry
=
static_cast
<
QSGGeometryNode
*>
(
node
)
->
geometry
();
terrainCollisionGeometry
->
allocate
(
cTerrainCollisionSegments
*
2
);
node
->
markDirty
(
QSGNode
::
DirtyGeometry
);
}
int
flightProfileVertexIndex
=
0
;
int
terrainVertexIndex
=
0
;
int
missingTerrainVertexIndex
=
0
;
int
terrainCollisionVertexIndex
=
0
;
double
currentDistance
=
0
;
QSGGeometry
::
Point2D
*
flightProfileVertices
=
flightProfileGeometry
->
vertexDataAsPoint2D
();
QSGGeometry
::
Point2D
*
terrainVertices
=
terrainProfileGeometry
->
vertexDataAsPoint2D
();
QSGGeometry
::
Point2D
*
missingTerrainVertices
=
missingTerrainGeometry
->
vertexDataAsPoint2D
();
QSGGeometry
::
Point2D
*
terrainCollisionVertices
=
terrainCollisionGeometry
->
vertexDataAsPoint2D
();
// Allocate space for the vertices
QSGNode
*
node
=
rootNode
->
childAtIndex
(
0
);
terrainProfileGeometry
=
static_cast
<
QSGGeometryNode
*>
(
node
)
->
geometry
();
terrainProfileGeometry
->
allocate
(
cTerrainProfilePoints
);
node
->
markDirty
(
QSGNode
::
DirtyGeometry
);
node
=
rootNode
->
childAtIndex
(
1
);
missingTerrainGeometry
=
static_cast
<
QSGGeometryNode
*>
(
node
)
->
geometry
();
missingTerrainGeometry
->
allocate
(
cMissingTerrainSegments
*
2
);
node
->
markDirty
(
QSGNode
::
DirtyGeometry
);
node
=
rootNode
->
childAtIndex
(
2
);
flightProfileGeometry
=
static_cast
<
QSGGeometryNode
*>
(
node
)
->
geometry
();
flightProfileGeometry
->
allocate
(
cFlightProfileSegments
*
2
);
node
->
markDirty
(
QSGNode
::
DirtyGeometry
);
node
=
rootNode
->
childAtIndex
(
3
);
terrainCollisionGeometry
=
static_cast
<
QSGGeometryNode
*>
(
node
)
->
geometry
();
terrainCollisionGeometry
->
allocate
(
cTerrainCollisionSegments
*
2
);
node
->
markDirty
(
QSGNode
::
DirtyGeometry
);
int
flightProfileVertexIndex
=
0
;
int
terrainProfileVertexIndex
=
0
;
int
missingterrainProfileVertexIndex
=
0
;
int
terrainCollisionVertexIndex
=
0
;
double
currentDistance
=
0
;
QSGGeometry
::
Point2D
*
flightProfileVertices
=
flightProfileGeometry
->
vertexDataAsPoint2D
();
QSGGeometry
::
Point2D
*
terrainProfileVertices
=
terrainProfileGeometry
->
vertexDataAsPoint2D
();
QSGGeometry
::
Point2D
*
missingTerrainVertices
=
missingTerrainGeometry
->
vertexDataAsPoint2D
();
QSGGeometry
::
Point2D
*
terrainCollisionVertices
=
terrainCollisionGeometry
->
vertexDataAsPoint2D
();
// This step places the vertices for display into the nodes
for
(
int
viIndex
=
0
;
viIndex
<
_visualItems
->
count
();
viIndex
++
)
{
VisualMissionItem
*
visualItem
=
_visualItems
->
value
<
VisualMissionItem
*>
(
viIndex
);
ComplexMissionItem
*
complexItem
=
_visualItems
->
value
<
ComplexMissionItem
*>
(
viIndex
);
...
...
@@ -276,8 +281,8 @@ QSGNode* TerrainProfile::updatePaintNode(QSGNode* oldNode, QQuickItem::UpdatePai
FlightPathSegment
*
segment
=
complexItem
->
flightPathSegments
()
->
value
<
FlightPathSegment
*>
(
segmentIndex
);
_addFlightProfileSegment
(
segment
,
currentDistance
,
amslAltRange
,
flightProfileVertices
,
flightProfileVertexIndex
);
_addTerrainProfileSegment
(
segment
,
currentDistance
,
amslAltRange
,
terrain
Vertices
,
terrain
VertexIndex
);
_addMissingTerrainSegment
(
segment
,
currentDistance
,
missingTerrainVertices
,
missing
Terrain
VertexIndex
);
_addTerrainProfileSegment
(
segment
,
currentDistance
,
amslAltRange
,
terrain
ProfileVertices
,
terrainProfile
VertexIndex
);
_addMissingTerrainSegment
(
segment
,
currentDistance
,
missingTerrainVertices
,
missing
terrainProfile
VertexIndex
);
_addTerrainCollisionSegment
(
segment
,
currentDistance
,
amslAltRange
,
terrainCollisionVertices
,
terrainCollisionVertexIndex
);
currentDistance
+=
segment
->
totalDistance
();
...
...
@@ -289,8 +294,8 @@ QSGNode* TerrainProfile::updatePaintNode(QSGNode* oldNode, QQuickItem::UpdatePai
FlightPathSegment
*
segment
=
visualItem
->
simpleFlightPathSegment
();
_addFlightProfileSegment
(
segment
,
currentDistance
,
amslAltRange
,
flightProfileVertices
,
flightProfileVertexIndex
);
_addTerrainProfileSegment
(
segment
,
currentDistance
,
amslAltRange
,
terrain
Vertices
,
terrain
VertexIndex
);
_addMissingTerrainSegment
(
segment
,
currentDistance
,
missingTerrainVertices
,
missing
Terrain
VertexIndex
);
_addTerrainProfileSegment
(
segment
,
currentDistance
,
amslAltRange
,
terrain
ProfileVertices
,
terrainProfile
VertexIndex
);
_addMissingTerrainSegment
(
segment
,
currentDistance
,
missingTerrainVertices
,
missing
terrainProfile
VertexIndex
);
_addTerrainCollisionSegment
(
segment
,
currentDistance
,
amslAltRange
,
terrainCollisionVertices
,
terrainCollisionVertexIndex
);
currentDistance
+=
segment
->
totalDistance
();
...
...
@@ -326,3 +331,13 @@ void TerrainProfile::_setVertex(QSGGeometry::Point2D& vertex, double x, double y
{
vertex
.
set
(
x
+
_horizontalMargin
,
y
+
_verticalMargin
);
}
bool
TerrainProfile
::
_shouldAddFlightProfileSegment
(
FlightPathSegment
*
segment
)
{
return
!
qIsNaN
(
segment
->
coord1AMSLAlt
())
&&
!
qIsNaN
(
segment
->
coord2AMSLAlt
());
}
bool
TerrainProfile
::
_shouldAddMissingTerrainSegment
(
FlightPathSegment
*
segment
)
{
return
segment
->
amslTerrainHeights
().
count
()
==
0
;
}
src/QmlControls/TerrainProfile.h
View file @
fdb53cb4
...
...
@@ -57,14 +57,16 @@ private slots:
void
_newVisualItems
(
void
);
private:
void
_createGeometry
(
QSGGeometryNode
*&
geometryNode
,
QSGGeometry
*&
geometry
,
int
vertices
,
QSGGeometry
::
DrawingMode
drawingMode
,
const
QColor
&
color
);
void
_updateSegmentCounts
(
FlightPathSegment
*
segment
,
int
&
cTerrainPoints
,
int
&
cMissingTerrainSegments
,
int
&
cTerrainCollisionSegments
,
double
&
maxTerrainHeight
);
void
_addTerrainProfileSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
double
amslAltRange
,
QSGGeometry
::
Point2D
*
terrainVertices
,
int
&
terrainVertexIndex
);
void
_addMissingTerrainSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
QSGGeometry
::
Point2D
*
missingTerrainVertices
,
int
&
missingTerrainVertexIndex
);
void
_addTerrainCollisionSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
double
amslAltRange
,
QSGGeometry
::
Point2D
*
terrainCollisionVertices
,
int
&
terrainCollisionVertexIndex
);
void
_addFlightProfileSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
double
amslAltRange
,
QSGGeometry
::
Point2D
*
flightProfileVertices
,
int
&
flightProfileVertexIndex
);
double
_availableHeight
(
void
)
const
;
void
_setVertex
(
QSGGeometry
::
Point2D
&
vertex
,
double
x
,
double
y
);
void
_createGeometry
(
QSGGeometryNode
*&
geometryNode
,
QSGGeometry
*&
geometry
,
QSGGeometry
::
DrawingMode
drawingMode
,
const
QColor
&
color
);
void
_updateSegmentCounts
(
FlightPathSegment
*
segment
,
int
&
cFlightProfileSegments
,
int
&
cTerrainPoints
,
int
&
cMissingTerrainSegments
,
int
&
cTerrainCollisionSegments
,
double
&
maxTerrainHeight
);
void
_addTerrainProfileSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
double
amslAltRange
,
QSGGeometry
::
Point2D
*
terrainProfileVertices
,
int
&
terrainVertexIndex
);
void
_addMissingTerrainSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
QSGGeometry
::
Point2D
*
missingTerrainVertices
,
int
&
missingTerrainVertexIndex
);
void
_addTerrainCollisionSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
double
amslAltRange
,
QSGGeometry
::
Point2D
*
terrainCollisionVertices
,
int
&
terrainCollisionVertexIndex
);
void
_addFlightProfileSegment
(
FlightPathSegment
*
segment
,
double
currentDistance
,
double
amslAltRange
,
QSGGeometry
::
Point2D
*
flightProfileVertices
,
int
&
flightProfileVertexIndex
);
double
_availableHeight
(
void
)
const
;
void
_setVertex
(
QSGGeometry
::
Point2D
&
vertex
,
double
x
,
double
y
);
bool
_shouldAddFlightProfileSegment
(
FlightPathSegment
*
segment
);
bool
_shouldAddMissingTerrainSegment
(
FlightPathSegment
*
segment
);
MissionController
*
_missionController
=
nullptr
;
QmlObjectListModel
*
_visualItems
=
nullptr
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment