@ -16,6 +16,7 @@
@@ -16,6 +16,7 @@
# include "QGCMapPolyline.h"
# include "QGCMapPolygon.h"
# include "CameraCalc.h"
# include "TerrainQuery.h"
Q_DECLARE_LOGGING_CATEGORY ( TransectStyleComplexItemLog )
@ -26,34 +27,45 @@ class TransectStyleComplexItem : public ComplexMissionItem
@@ -26,34 +27,45 @@ class TransectStyleComplexItem : public ComplexMissionItem
public :
TransectStyleComplexItem ( Vehicle * vehicle , QString settignsGroup , QObject * parent = NULL ) ;
Q_PROPERTY ( QGCMapPolygon * surveyAreaPolygon READ surveyAreaPolygon CONSTANT )
Q_PROPERTY ( CameraCalc * cameraCalc READ cameraCalc CONSTANT )
Q_PROPERTY ( Fact * turnAroundDistance READ turnAroundDistance CONSTANT )
Q_PROPERTY ( Fact * cameraTriggerInTurnAround READ cameraTriggerInTurnAround CONSTANT )
Q_PROPERTY ( Fact * hoverAndCapture READ hoverAndCapture CONSTANT )
Q_PROPERTY ( Fact * refly90Degrees READ refly90Degrees CONSTANT )
Q_PROPERTY ( int cameraShots READ cameraShots NOTIFY cameraShotsChanged )
Q_PROPERTY ( double timeBetweenShots READ timeBetweenShots NOTIFY timeBetweenShotsChanged )
Q_PROPERTY ( double coveredArea READ coveredArea NOTIFY coveredAreaChanged )
Q_PROPERTY ( double cameraMinTriggerInterval READ cameraMinTriggerInterval NOTIFY cameraMinTriggerIntervalChanged )
Q_PROPERTY ( bool hoverAndCaptureAllowed READ hoverAndCaptureAllowed CONSTANT )
Q_PROPERTY ( QVariantList transectPoints READ transectPoints NOTIFY transectPointsChanged )
Q_PROPERTY ( QGCMapPolygon * surveyAreaPolygon READ surveyAreaPolygon CONSTANT )
Q_PROPERTY ( CameraCalc * cameraCalc READ cameraCalc CONSTANT )
Q_PROPERTY ( Fact * turnAroundDistance READ turnAroundDistance CONSTANT )
Q_PROPERTY ( Fact * cameraTriggerInTurnAround READ cameraTriggerInTurnAround CONSTANT )
Q_PROPERTY ( Fact * hoverAndCapture READ hoverAndCapture CONSTANT )
Q_PROPERTY ( Fact * refly90Degrees READ refly90Degrees CONSTANT )
Q_PROPERTY ( int cameraShots READ cameraShots NOTIFY cameraShotsChanged )
Q_PROPERTY ( double timeBetweenShots READ timeBetweenShots NOTIFY timeBetweenShotsChanged )
Q_PROPERTY ( double coveredArea READ coveredArea NOTIFY coveredAreaChanged )
Q_PROPERTY ( double cameraMinTriggerInterval READ cameraMinTriggerInterval NOTIFY cameraMinTriggerIntervalChanged )
Q_PROPERTY ( bool hoverAndCaptureAllowed READ hoverAndCaptureAllowed CONSTANT )
Q_PROPERTY ( QVariantList transectPoints READ transectPoints NOTIFY transectPointsChanged )
Q_PROPERTY ( bool followTerrain READ followTerrain WRITE setFollowTerrain NOTIFY followTerrainChanged )
Q_PROPERTY ( Fact * terrainAdjustTolerance READ terrainAdjustTolerance CONSTANT )
Q_PROPERTY ( Fact * terrainAdjustMaxDescentRate READ terrainAdjustMaxDescentRate CONSTANT )
Q_PROPERTY ( Fact * terrainAdjustMaxClimbRate READ terrainAdjustMaxClimbRate CONSTANT )
QGCMapPolygon * surveyAreaPolygon ( void ) { return & _surveyAreaPolygon ; }
CameraCalc * cameraCalc ( void ) { return & _cameraCalc ; }
QVariantList transectPoints ( void ) { return _transectPoints ; }
Fact * turnAroundDistance ( void ) { return & _turnAroundDistanceFact ; }
Fact * cameraTriggerInTurnAround ( void ) { return & _cameraTriggerInTurnAroundFact ; }
Fact * hoverAndCapture ( void ) { return & _hoverAndCaptureFact ; }
Fact * refly90Degrees ( void ) { return & _refly90DegreesFact ; }
Fact * turnAroundDistance ( void ) { return & _turnAroundDistanceFact ; }
Fact * cameraTriggerInTurnAround ( void ) { return & _cameraTriggerInTurnAroundFact ; }
Fact * hoverAndCapture ( void ) { return & _hoverAndCaptureFact ; }
Fact * refly90Degrees ( void ) { return & _refly90DegreesFact ; }
Fact * terrainAdjustTolerance ( void ) { return & _terrainAdjustToleranceFact ; }
Fact * terrainAdjustMaxDescentRate ( void ) { return & _terrainAdjustMaxClimbRateFact ; }
Fact * terrainAdjustMaxClimbRate ( void ) { return & _terrainAdjustMaxDescentRateFact ; }
int cameraShots ( void ) const { return _cameraShots ; }
double timeBetweenShots ( void ) ;
double coveredArea ( void ) const ;
double cameraMinTriggerInterval ( void ) const { return _cameraMinTriggerInterval ; }
bool hoverAndCaptureAllowed ( void ) const ;
bool followTerrain ( void ) const { return _followTerrain ; }
void setFollowTerrain ( bool followTerrain ) ;
// Overrides from ComplexMissionItem
@ -85,6 +97,7 @@ public:
@@ -85,6 +97,7 @@ public:
double specifiedGimbalYaw ( void ) final { return std : : numeric_limits < double > : : quiet_NaN ( ) ; }
double specifiedGimbalPitch ( void ) final { return std : : numeric_limits < double > : : quiet_NaN ( ) ; }
void setMissionFlightStatus ( MissionController : : MissionFlightStatus_t & missionFlightStatus ) final ;
bool readyForSave ( void ) const override ;
bool coordinateHasRelativeAltitude ( void ) const final { return true /*_altitudeRelative*/ ; }
bool exitCoordinateHasRelativeAltitude ( void ) const final { return true /*_altitudeRelative*/ ; }
@ -99,6 +112,9 @@ public:
@@ -99,6 +112,9 @@ public:
static const char * cameraTriggerInTurnAroundName ;
static const char * hoverAndCaptureName ;
static const char * refly90DegreesName ;
static const char * terrainAdjustToleranceName ;
static const char * terrainAdjustMaxClimbRateName ;
static const char * terrainAdjustMaxDescentRateName ;
signals :
void cameraShotsChanged ( void ) ;
@ -106,6 +122,7 @@ signals:
@@ -106,6 +122,7 @@ signals:
void cameraMinTriggerIntervalChanged ( double cameraMinTriggerInterval ) ;
void transectPointsChanged ( void ) ;
void coveredAreaChanged ( void ) ;
void followTerrainChanged ( bool followTerrain ) ;
protected slots :
virtual void _rebuildTransectsPhase1 ( void ) = 0 ;
@ -115,24 +132,31 @@ protected slots:
@@ -115,24 +132,31 @@ protected slots:
void _setIfDirty ( bool dirty ) ;
void _updateCoordinateAltitudes ( void ) ;
void _signalLastSequenceNumberChanged ( void ) ;
void _polyPathTerrainData ( bool success , const QList < TerrainPathQuery : : PathHeightInfo_t > & rgPathHeightInfo ) ;
protected :
void _save ( QJsonObject & saveObject ) ;
bool _load ( const QJsonObject & complexObject , QString & errorString ) ;
void _setExitCoordinate ( const QGeoCoordinate & coordinate ) ;
void _setCameraShots ( int cameraShots ) ;
double _triggerDistance ( void ) const ;
bool _hasTurnaround ( void ) const ;
double _turnaroundDistance ( void ) const ;
void _save ( QJsonObject & saveObject ) ;
bool _load ( const QJsonObject & complexObject , QString & errorString ) ;
void _setExitCoordinate ( const QGeoCoordinate & coordinate ) ;
void _setCameraShots ( int cameraShots ) ;
double _triggerDistance ( void ) const ;
bool _hasTurnaround ( void ) const ;
double _turnaroundDistance ( void ) const ;
void _queryTransectsPathHeightInfo ( void ) ;
void _adjustTransectPointsForTerrain ( void ) ;
QString _settingsGroup ;
int _sequenceNumber ;
bool _dirty ;
QGeoCoordinate _coordinate ;
QGeoCoordinate _exitCoordinate ;
QVariantList _transectPoints ;
QGCMapPolygon _surveyAreaPolygon ;
QVariantList _transectPoints ;
QList < TerrainPathQuery : : PathHeightInfo_t > _transectsPathHeightInfo ;
TerrainPolyPathQuery * _terrainPolyPathQuery ;
QTimer _terrainQueryTimer ;
bool _ignoreRecalc ;
double _complexDistance ;
int _cameraShots ;
@ -140,6 +164,7 @@ protected:
@@ -140,6 +164,7 @@ protected:
double _cameraMinTriggerInterval ;
double _cruiseSpeed ;
CameraCalc _cameraCalc ;
bool _followTerrain ;
QObject * _loadedMissionItemsParent ; ///< Parent for all items in _loadedMissionItems for simpler delete
QList < MissionItem * > _loadedMissionItems ; ///< Mission items loaded from plan file
@ -150,12 +175,20 @@ protected:
@@ -150,12 +175,20 @@ protected:
SettingsFact _cameraTriggerInTurnAroundFact ;
SettingsFact _hoverAndCaptureFact ;
SettingsFact _refly90DegreesFact ;
SettingsFact _terrainAdjustToleranceFact ;
SettingsFact _terrainAdjustMaxClimbRateFact ;
SettingsFact _terrainAdjustMaxDescentRateFact ;
static const char * _jsonCameraCalcKey ;
static const char * _jsonTransectStyleComplexItemKey ;
static const char * _jsonTransectPointsKey ;
static const char * _jsonItemsKey ;
static const int _terrainQueryTimeoutMsecs ;
static const double _surveyEdgeIndicator ; ///< Altitude value in _transectPoints which indicates survey entry
private slots :
void _rebuildTransects ( void ) ;
void _rebuildTransects ( void ) ;
void _reallyQueryTransectsPathHeightInfo ( void ) ;
} ;