%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGModel.h"
+#include "FGTrim.h"
#include "FGInitialCondition.h"
#include "FGJSBBase.h"
#include "FGPropertyManager.h"
+
#include <vector>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-class FGInitialCondition;
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@return true if successful, false if sim should be ended */
bool Run(void);
- /** Initializes the sim with a set of initial conditions.
- @param fgic A pointer to a filled out initial conditions class which
- describes the desired initial conditions.
+ /** Initializes the sim from the initial condition object and executes
+ each scheduled model without integrating i.e. dt=0.
@return true if successful
*/
- bool RunIC(FGInitialCondition *fgic);
+ bool RunIC(void);
/// Freezes the sim
void Freeze(void) {frozen = true;}
/// Resumes the sim
void Resume(void) {frozen = false;}
-
- /** Loads an aircraft model.
+
+ /** Loads an aircraft model.
@param AircraftPath path to the aircraft directory. For instance:
"aircraft". Under aircraft, then, would be directories for various
modeled aircraft such as C172/, x15/, etc.
instance: "aircraft/x15/x15.xml"
@return true if successful*/
bool LoadModel(string AircraftPath, string EnginePath, string model);
+
+
+ /** Loads an aircraft model. The paths to the aircraft and engine
+ config file directories must be set prior to calling this. See
+ below.
+ @param model the name of the aircraft model itself. This file will
+ be looked for in the directory specified in the AircraftPath variable,
+ and in turn under the directory with the same name as the model. For
+ instance: "aircraft/x15/x15.xml"
+ @return true if successful*/
+ bool LoadModel(string model);
+
- bool SetEnginePath(string path) {EnginePath = path; return true;}
- bool SetAircraftPath(string path) {AircraftPath = path; return true;}
+ /** Sets the path to the engine config file directories.
+ @param EnginePath path to the directory under which engine config
+ files are kept, for instance "engine"
+ */
+ bool SetEnginePath(string path) { EnginePath = path; return true; }
+ /** Sets the path to the aircraft config file directories.
+ @param AircraftPath path to the aircraft directory. For instance:
+ "aircraft". Under aircraft, then, would be directories for various
+ modeled aircraft such as C172/, x15/, etc.
+ */
+ bool SetAircraftPath(string path) { AircraftPath = path; return true; }
+
+ /** Sets the path to the autopilot config file directories.
+ @param ControlPath path to the control directory. For instance:
+ "control".
+ */
+ bool SetControlPath(string path) { ControlPath = path; return true; }
+
+
/// @name Top-level executive State and Model retrieval mechanism
//@{
/// Returns the FGState pointer.
inline FGAuxiliary* GetAuxiliary(void) {return Auxiliary;}
/// Returns the FGOutput pointer.
inline FGOutput* GetOutput(void) {return Output;}
+ // Returns a pointer to the FGInitialCondition object
+ inline FGInitialCondition* GetIC(void) {return IC;}
+ // Returns a pointer to the FGTrim object
+ FGTrim* GetTrim(void);
//@}
-
+
/// Retrieves the engine path.
inline string GetEnginePath(void) {return EnginePath;}
/// Retrieves the aircraft path.
inline string GetAircraftPath(void) {return AircraftPath;}
+ /// Retrieves the control path.
+ inline string GetControlPath(void) {return ControlPath;}
+
+ string GetModelName(void) { return modelName; }
FGPropertyManager* GetPropertyManager(void);
vector <string> EnumerateFDMs(void);
unsigned int IdFDM;
static unsigned int FDMctr;
bool modelLoaded;
+ string modelName;
bool IsSlave;
static FGPropertyManager *master;
FGPropertyManager *instance;
string AircraftPath;
string EnginePath;
+ string ControlPath;
+
string CFGVersion;
FGState* State;
FGPosition* Position;
FGAuxiliary* Auxiliary;
FGOutput* Output;
+
+ FGInitialCondition* IC;
+ FGTrim *Trim;
vector <slaveData*> SlaveFDMList;
bool ReadPrologue(FGConfigFile*);
bool ReadOutput(FGConfigFile*);
- void TransferState(int idx);
bool Allocate(void);
bool DeAllocate(void);
void Debug(int from);