//=========================================================================
// Summary  : 
// Filename : VehicleConstants.h
// Author   : marsh
// Project  : 
// Revision : 1
// Created  : 2000/08/19
// Modified : 2000/08/19
//=========================================================================
// Description :
//=========================================================================
#ifndef _VEHICLECONST_H
#define _VEHICLECONST_H

#include "DynamicArray.h"
#include "Attributes.h"
#include "VehicleConfigurationIF_SK.h"

#define VEH_CONST_NAME "VehicleConstants"

class VehicleConstants {

public:
     VehicleConstants( );
     
     ~VehicleConstants();

     int loadConstants( const char * );

     Attributes attributes;

     char *_configFileName;

     char *_vehicleName;
     double _propPitch;
     double _mass;
     double _buoyancy;
     double _kpHeading;
     double _kdHeading;
     double _kiHeading;
     double _kiHeadingLimit;
     double _kwpHeading;
     double _maxHdgRate;
     double _rudLimit;
     double _rudActLimit;
     double _rudActRateLimit;
     double _kpPitch;
     double _kdPitch;
     double _kiPitch;
     double _kiPitchLimit;
     double _pitchLimit;
     double _maxDiveRate;
     double _kpDepth;
     double _kdDepth;
     double _kiDepth;
     double _elevLimit;
     double _elevActLimit;
     double _elevActRateLimit;
     double _ts;
     double _effDragCoef;
     double _tau;
     double _maxDepthInt;
     double _maxHdgInt;
     double _maxPitchInt;
     double _ductArea;
     double _propEfficiency;
     double _Xuabu;
     double _highModePercent;
     double _lowModePercent;

  VehicleConfigurationIF::Vector _centerOfMass;
  VehicleConfigurationIF::Vector _centerOfBuoyancy;
  VehicleConfigurationIF::Vector _lowerRudderLoc;
  VehicleConfigurationIF::Vector _upperRudderLoc;
  VehicleConfigurationIF::Vector _portElevatorLoc;
  VehicleConfigurationIF::Vector _stbdElevatorLoc;

  struct DropWeight {
    double mass;
    double buoyancy;
    VehicleConfigurationIF::Vector location;
  };

  DynamicArray<DropWeight *> _dropWeights;

  // -- Dropweight functions ----------------------------------------------
  void initDropWeights();
  short nDropWeights();


};





#endif
