WSF
P6DofSequencer.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef P6DOFSEQUENCER_H
13#define P6DOFSEQUENCER_H
14
15#include <cinttypes>
16#include <set>
17#include <string>
18#include <vector>
19
20#include "P6DofObject.hpp"
21#include "UtVec3dX.hpp"
22
23class P6DofScenario;
24class P6DofVehicle;
25class UtInput;
26
28{
29public:
30 explicit P6DofSequencer(P6DofScenario* aScenario);
31 ~P6DofSequencer() override;
32
33 P6DofSequencer& operator=(const P6DofSequencer& other) = delete;
34
35 P6DofSequencer* Clone() const;
36
37 void SetParentVehicle(P6DofVehicle* aParentVehicle) override;
38
39 bool ProcessInput(UtInput& aInput);
40 bool Initialize(int64_t aSimTime_nanosec);
41
42 // Update should be called every frame
43 void Update(int64_t aSimTime_nanosec);
44
45 // This adds the prefix to all object names to this
46 // sequencer and all of its subobjects
47 void AdjustNaming(const std::string& aNamePrefix);
48
49 // This should be called when a sequencer is first started
50 void StartUp(int64_t aSimTime_nanosec);
51
52 // This returns true if there are time-based actions pending.
53 // aTimeOfEvents_nanosec contains the sim time of the all pending time-based actions
54 bool PendingTimeEvents(int64_t aSimTime_nanosec, std::set<int64_t>& aTimeOfEvents_nanosec);
55
56 // This returns true if there if the sequencer was newly activated.
57 // It returns false if the sequencer was already activated.
58 bool ActivateExternally();
59
60protected:
61 P6DofSequencer(const P6DofSequencer& aSrc);
62
63 // Events (can be daisy-chained or triggered in parallel)
64 // Events include things such as elapsed flight time, reaching an
65 // altitude, dynamic pressure falling below a set level, reaching
66 // a downrange distance, sensing a g-level (such as decaying
67 // thrust), etc.
93
103
104 // Actions (can be daisy-chained or triggered in parallel)
105 // Actions include things like jettisoning a stage/object, firing
106 // retro thrusters on the separated stage during separation,
107 // firing the engine on the current stage, and changing to a new
108 // aero mode (typically by name) to represent the new aero mode
109 // without the previous stage.
128
137
138 // This is used by TestForActivation to set
139 // the various counts/flags used for working
140 // with the 'all events' setting
141 void SetAllEventCounts();
142
143 // This is used by TestForActivation to determine
144 // if activation should occur, based on the
145 // 'all events' setting
147
148 // This will test the sequencer and activate it
149 // and perform action(s) if appropriate. It returns
150 // the time (sim_time) of activation
151 int64_t TestForActivation(int64_t aSimTime_nanosec);
152
153 int64_t GetTimerTime() const;
154
157
158 std::vector<SequencerEvent*> mEventList;
159 std::vector<SequencerAction*> mActionList;
160 std::vector<P6DofSequencer*> mSubSequencerList;
161
164
167
169};
170#endif
P6DofObject(P6DofScenario *aScenario)
Definition P6DofObject.cpp:17
Definition P6DofScenario.hpp:25
std::vector< SequencerEvent * > mEventList
Definition P6DofSequencer.hpp:158
std::vector< SequencerAction * > mActionList
Definition P6DofSequencer.hpp:159
size_t mAllEventNeededCount
Definition P6DofSequencer.hpp:165
bool ProcessInput(UtInput &aInput)
Definition P6DofSequencer.cpp:686
size_t mAllEventCurrentCount
Definition P6DofSequencer.hpp:166
bool PendingTimeEvents(int64_t aSimTime_nanosec, std::set< int64_t > &aTimeOfEvents_nanosec)
Definition P6DofSequencer.cpp:124
int64_t TestForActivation(int64_t aSimTime_nanosec)
Definition P6DofSequencer.cpp:236
int64_t mLastSimTime_nanosec
Definition P6DofSequencer.hpp:155
P6DofSequencer(P6DofScenario *aScenario)
Definition P6DofSequencer.cpp:31
void SetAllEventCounts()
Definition P6DofSequencer.cpp:1265
bool ActivateExternally()
Definition P6DofSequencer.cpp:1291
SequencerEventType
Definition P6DofSequencer.hpp:69
@ NyBelow_g
Definition P6DofSequencer.hpp:83
@ ManualInputButton
Definition P6DofSequencer.hpp:88
@ NyAbove_g
Definition P6DofSequencer.hpp:82
@ DynamicPressureBelow_psf
Definition P6DofSequencer.hpp:75
@ StaticPressureAbove_psf
Definition P6DofSequencer.hpp:76
@ LifeTime
Definition P6DofSequencer.hpp:71
@ AboveAlt_ft
Definition P6DofSequencer.hpp:72
@ NzBelow_g
Definition P6DofSequencer.hpp:85
@ NoEvent
Definition P6DofSequencer.hpp:91
@ NzAbove_g
Definition P6DofSequencer.hpp:84
@ FuelPercentBelow
Definition P6DofSequencer.hpp:78
@ Timer
Definition P6DofSequencer.hpp:70
@ StaticPressureBelow_psf
Definition P6DofSequencer.hpp:77
@ NxBelow_g
Definition P6DofSequencer.hpp:81
@ DynamicPressureAbove_psf
Definition P6DofSequencer.hpp:74
@ ReleasedFromParent
Definition P6DofSequencer.hpp:86
@ ManualInputButtonReleased
Definition P6DofSequencer.hpp:89
@ NxAbove_g
Definition P6DofSequencer.hpp:80
@ BooleanInput
Definition P6DofSequencer.hpp:90
@ ManualInputTrigger
Definition P6DofSequencer.hpp:87
@ BelowAlt_ft
Definition P6DofSequencer.hpp:73
@ GroundDistance_m
Definition P6DofSequencer.hpp:79
void Update(int64_t aSimTime_nanosec)
Definition P6DofSequencer.cpp:190
P6DofSequencer * Clone() const
Definition P6DofSequencer.cpp:74
SequencerActionType
Definition P6DofSequencer.hpp:111
@ EnableSizeFactor
Definition P6DofSequencer.hpp:122
@ IgniteSelfObject
Definition P6DofSequencer.hpp:117
@ IgniteEngine
Definition P6DofSequencer.hpp:115
@ JettisonObject
Definition P6DofSequencer.hpp:113
@ JettisonSelf
Definition P6DofSequencer.hpp:114
@ ActivateSubobjectSequencer
Definition P6DofSequencer.hpp:124
@ TerminateThrust
Definition P6DofSequencer.hpp:120
@ ShutdownSubObject
Definition P6DofSequencer.hpp:118
@ ChangeAeroMode
Definition P6DofSequencer.hpp:121
@ EnableControls
Definition P6DofSequencer.hpp:125
@ NoAction
Definition P6DofSequencer.hpp:112
@ ShutdownEngine
Definition P6DofSequencer.hpp:119
@ IgniteSubObject
Definition P6DofSequencer.hpp:116
@ DisableControls
Definition P6DofSequencer.hpp:126
@ SetGraphicalModel
Definition P6DofSequencer.hpp:123
P6DofSequencer & operator=(const P6DofSequencer &other)=delete
bool mExternalActivation
Definition P6DofSequencer.hpp:168
void AdjustNaming(const std::string &aNamePrefix)
Definition P6DofSequencer.cpp:1232
void StartUp(int64_t aSimTime_nanosec)
Definition P6DofSequencer.cpp:1221
void CheckForAllEventActivation()
Definition P6DofSequencer.cpp:1279
std::vector< P6DofSequencer * > mSubSequencerList
Definition P6DofSequencer.hpp:160
bool mActivated
Definition P6DofSequencer.hpp:162
void SetParentVehicle(P6DofVehicle *aParentVehicle) override
Definition P6DofSequencer.cpp:677
int64_t GetTimerTime() const
Definition P6DofSequencer.cpp:1227
~P6DofSequencer() override
Definition P6DofSequencer.cpp:43
bool Initialize(int64_t aSimTime_nanosec)
Definition P6DofSequencer.cpp:1202
bool mAllEvents
Definition P6DofSequencer.hpp:163
int64_t mElapsedTimer_nanosec
Definition P6DofSequencer.hpp:156
Definition P6DofVehicle.hpp:53
Definition P6DofSequencer.hpp:130
std::string argumentSecondString
Definition P6DofSequencer.hpp:133
std::string argumentString
Definition P6DofSequencer.hpp:132
double argumentValue
Definition P6DofSequencer.hpp:134
UtVec3dX argumentVector
Definition P6DofSequencer.hpp:135
SequencerActionType actionType
Definition P6DofSequencer.hpp:131
Definition P6DofSequencer.hpp:95
SequencerEventType eventType
Definition P6DofSequencer.hpp:96
int argumentInteger
Definition P6DofSequencer.hpp:99
int64_t argumentNanoTime
Definition P6DofSequencer.hpp:101
double argumentValue
Definition P6DofSequencer.hpp:98
std::string argumentString
Definition P6DofSequencer.hpp:97
size_t argumentHandle
Definition P6DofSequencer.hpp:100
Copyrights Multiple, All Rights Reserved