class AeroData

{
public:
        ~AeroData (void) {delete mach; delete alpha; delete clift;
        delete cdrag; delete cy; };
        int numMach;
        int numAlpha;
        float *mach;
        float *alpha;
        float *clift;
        float *cdrag;
        float *cy;
        float clFactor;
        float cdFactor;
        float cyFactor;
#ifdef USE_SH_POOLS
public:
        // Overload new/delete to use a SmartHeap fixed size pool
        void *operator new(size_t size) { return MemAllocPtr(AirframeDataPool, size, 0);        };
        void operator delete(void *mem) { if (mem) MemFreePtr(mem); };
#endif
};
 

/*------------------*/
/* Engine Data Type */
/*------------------*/

class EngineData

{
public:
        ~EngineData(void) {delete mach; delete alt; delete thrust[0];
        delete thrust[1]; delete thrust[2];};
        float thrustFactor;
        float fuelFlowFactor;
        int numMach;
        int numAlt;
        float *mach;
        float *alt;
        float *thrust[3];
#ifdef USE_SH_POOLS
public:
        // Overload new/delete to use a SmartHeap fixed size pool
        void *operator new(size_t size) { return MemAllocPtr(AirframeDataPool, size, 0);        };
        void operator delete(void *mem) { if (mem) MemFreePtr(mem); };
#endif
};

/*---------------------*/
/* Roll Rate Data Type */
/*---------------------*/

class RollData

{
public:
        ~RollData(void) {delete alpha; delete qbar; delete roll;};
        int numAlpha;
        int numQbar;
        float *alpha;
        float *qbar;
        float *roll;
#ifdef USE_SH_POOLS
public:
        // Overload new/delete to use a SmartHeap fixed size pool
        void *operator new(size_t size) { return MemAllocPtr(AirframeDataPool, size, 0);        };
        void operator delete(void *mem) { if (mem) MemFreePtr(mem); };
#endif
};
 

class GearData

{
public:
        enum GearFlags{
                GearStuck       = 0x01,
                GearBroken      = 0x02,
                DoorStuck       = 0x04,
                DoorBroken      = 0x08,
                GearProblem = 0x0F,
        };
        GearData(void);
        ~GearData(void) {}
        float   strength;       //how many hitpoints it has left
        float   vel;            //at what rate is it currently compressing/extending in ft/s
        float   obstacle;       //rock height/rut depth
        uint    flags;          //gear stuck/broken, door stuck/broken,
#ifdef USE_SH_POOLS
public:
        // Overload new/delete to use a SmartHeap fixed size pool
        void *operator new(size_t size) { return MemAllocPtr(AirframeDataPool, size, 0);        };
        void operator delete(void *mem) { if (mem) MemFreePtr(mem); };
#endif
};