12#ifndef WSFORBITALMISSIONEVENTSEQUENCE_HPP
13#define WSFORBITALMISSIONEVENTSEQUENCE_HPP
15#include "wsf_space_export.h"
20#include "UtCloneablePtr.hpp"
21class UtOrbitalPropagatorBase;
48 UtCalendar ComputeContraintEpoch(
const UtCalendar& aEpoch,
const UtOrbitalPropagatorBase& aPropagator,
bool& aSuccess)
const;
55 void AddMissionEvent(std::unique_ptr<WsfOrbitalEvent>&& aMissionEventPtr);
57 double GetRequiredDeltaV(
const UtOrbitalPropagatorBase& aPropagator)
const override;
69 bool ProcessInputWithIgnore(UtInput& aInput,
bool aIgnoreSomeExceptions);
80 template<
typename Callable>
83 bool retval = aOperation(
this);
84 auto iter = mMissionEvents.begin();
85 while (retval && iter != mMissionEvents.end())
87 if ((*iter)->IsSequence())
92 retval = sequencePtr->PreOrderTraversal(aOperation);
97 retval = aOperation(*iter);
104 bool IsEmpty()
const;
113 bool EvaluateCompletion(
const UtCalendar& aEpoch,
const UtOrbitalPropagatorBase& aPropagator)
override;
116 const UtCalendar& aEpoch,
120 MissionEvents mMissionEvents;
121 MissionEvents::iterator mNextMissionEventIter;
122 MissionEvents::iterator mMissionEventIter;
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
WsfStringId GetTypeId() const
Get the string ID of the 'type' of the object.
Definition WsfObject.hpp:78
Definition WsfOrbitalEventVisitor.hpp:41
Definition WsfOrbitalEvent.hpp:50
virtual double GetDeltaV() const
Get the delta V expended to execute this event; the default is to return 0.0.
Definition WsfOrbitalEvent.hpp:167
virtual bool ExecuteEvent(const UtCalendar &aCurrentTime, wsf::space::OrbitalMissionContext &aContext)=0
virtual bool EvaluateCompletion(const UtCalendar &aEpoch, const UtOrbitalPropagatorBase &aPropagator)
Definition WsfOrbitalEvent.cpp:351
virtual void Accept(WsfOrbitalEventVisitor *aVisitorPtr)=0
bool ProcessInput(UtInput &aInput) override
Definition WsfOrbitalEvent.cpp:29
WsfOrbitalEvent(const WsfOrbitalEvent &aSrc)
Definition WsfOrbitalEvent.cpp:361
virtual const WsfOrbitalEvent * GetCurrentMissionEvent() const
Definition WsfOrbitalEvent.hpp:141
virtual bool Initialize(const UtCalendar &aEpoch, const wsf::space::OrbitalMissionContext &aContext)
Definition WsfOrbitalEvent.cpp:202
virtual double GetRequiredDeltaV(const UtOrbitalPropagatorBase &aPropagator) const
Return the minimum required delta-v needed to complete this event; the default is to return 0....
Definition WsfOrbitalEvent.hpp:164
virtual WsfOrbitalEvent * AdvanceMissionEvent(const UtCalendar &aEpoch, const wsf::space::OrbitalMissionContext &aContext)
Definition WsfOrbitalEvent.cpp:181
const char * GetScriptClassName() const override
Definition WsfOrbitalMissionSequence.hpp:62
const WsfScenario & GetScenario() const
Definition WsfOrbitalMissionSequence.hpp:109
~WsfOrbitalMissionSequence() override=default
WsfOrbitalMissionSequence & operator=(const WsfOrbitalMissionSequence &)=delete
WsfOrbitalMissionSequence * Clone() const override
Make a copy of this object.
Definition WsfOrbitalMissionSequence.hpp:41
WsfOrbitalMissionSequence(const WsfScenario &aScenario)
Definition WsfOrbitalMissionSequence.cpp:28
bool IsSequence() const override
Is this MissionEvent a MissionEvent sequence (WsfMissionEventSequence)?
Definition WsfOrbitalMissionSequence.hpp:61
bool PreOrderTraversal(Callable aOperation)
Definition WsfOrbitalMissionSequence.hpp:81
const MissionEvents & GetSequence() const
Return the actual sequence (std::list) of maneuvers (WsfOrbitalEvent).
Definition WsfOrbitalMissionSequence.hpp:53
MissionEvents & GetSequence()
Return the actual sequence (std::list) of maneuvers (WsfOrbitalEvent).
Definition WsfOrbitalMissionSequence.hpp:65
std::list< ut::CloneablePtr< WsfOrbitalEvent > > MissionEvents
Definition WsfOrbitalMissionSequence.hpp:50
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfSpaceOrbitalMissionContext.hpp:38