MissileAeroData

class MissileAeroData
{
   public:
      ~MissileAeroData (void) {delete mach; delete alpha; delete cx; delete cz; } ;
      int numMach;
      int numAlpha;
      float *mach;
      float *alpha;
      float *cx;
      float *cz;
};

MissileEngineData

class MissileEngineData
{
   public:
      ~MissileEngineData(void) { delete times; delete thrust; };
      int numBreaks;
      float *times;
      float *thrust;
};
 

MissileRangeData

class MissileRangeData
{
   public:
      ~MissileRangeData(void) {delete altBreakpoints; delete velBreakpoints;
         delete aspectBreakpoints; delete data; } ;
           int numAltBreakpoints;
           int numVelBreakpoints;
           int numAspectBreakpoints;
           float *altBreakpoints;
           float *velBreakpoints;
           float *aspectBreakpoints;
           float *data;
};

MissileInputData


class MissileInputData
{
   public:
      float maxTof;
      float mslpk;
      float wm0;
      float wp0;
      float totalImpulse;
      float area;
      float nozzleArea;
      float length;
      float aoamax;
      float aoamin;
      float betmax;
      float betmin;
      float mslVmin;
      float gimlim;
      float gmdmax;
      float atamax;
      float guidanceDelay;
      float mslBiasn;
      float mslGnav;
      float mslBwap;
      float mslLoftTime;
      float mslActiveTtg;
      int   seekerType, seekerVersion;
      int   displayType;
};

MissileInFlightData

class MissileInFlightData
{
#ifdef USE_SH_POOLS
   public:
      // Overload new/delete to use a SmartHeap fixed size pool
      void *operator new(size_t size) { ShiAssert( size == sizeof(MissileInFlightData) ); return MemAllocFS(pool); };
      void operator delete(void *mem) { if (mem) MemFreeFS(mem); };
      static void InitializeStorage() { pool = MemPoolInitFS( sizeof(MissileInFlightData), 20, 0 ); };
      static void ReleaseStorage() { MemPoolFree( pool ); };
      static MEM_POOL pool;
#endif
   public:
      MissileInFlightData (void);
      ~MissileInFlightData (void);

      // Gains
      float kp01, kp02, kp03, kp04, kp05, kp06, kp07;
      float tp01, tp02, tp03, tp04;
      float wp01;
      float zp01;
      float ky01, ky02, ky03, ky04, ky05, ky06, ky07;
      float ty01, ty02, ty03, ty04;
      float wy01;
      float zy01;

      // Geometry
      float alpdot, betdot;
      float gamma, sigma, mu;
   ObjectGeometry geomData;

      // Guidance
      struct { float yaw, pitch; } augCommand;

      // State
      int burnIndex;
      float rstab, qstab;
      float e1, e2, e3, e4;

      // Save Arrays
   SAVE_ARRAY olddx;
      SAVE_ARRAY olde1, olde2, olde3, olde4, oldx, oldy, oldz;
      SAVE_ARRAY oldimp, oldvt, olddu;
      SAVE_ARRAY oldp01, oldp02, oldp03, oldp04, oldp05;
      SAVE_ARRAY oldy01, oldy02, oldy03, oldy04, oldy05;
      int oldalp, oldalpdt, oldbet, oldbetdt;

      // Aero data
      int lastmach, lastalpha;
      float qsom, qovt, qbar;

      // Accels
      float xaero, yaero, zaero;
      float xsaero, ysaero, zsaero;
      float xwaero, ywaero, zwaero;
      float xprop, yprop, zprop;
      float xsprop, ysprop, zsprop;
      float xwprop, ywprop, zwprop;
      float nxcgw, nycgw, nzcgw;
      float nxcgb, nycgb, nzcgb;
      float nxcgs, nycgs, nzcgs;

      float clalph, cybeta;

      // Closest Approach
      long lastCMDeployed;
};