text: /**
   * Copyright(c) 2014 Carnegie Mellon University. All Rights Reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions are met:
   * 
   * 1. Redistributions of source code must retain the above copyright notice,
   *    this list of conditions and the following acknowledgments and disclaimers.
   * 
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   * 
   * 3. The names "Carnegie Mellon University," "SEI" and/or "Software
   *    Engineering Institute" shall not be used to endorse or promote products
   *    derived from this software without prior written permission. For written
   *    permission, please contact permission@sei.cmu.edu.
   * 
   * 4. Products derived from this software may not be called "SEI" nor may "SEI"
   *    appear in their names without prior written permission of
   *    permission@sei.cmu.edu.
   * 
   * 5. Redistributions of any form whatsoever must retain the following
   *    acknowledgment:
   * 
   *      This material is based upon work funded and supported by the Department
   *      of Defense under Contract No. FA8721-05-C-0003 with Carnegie Mellon
   *      University for the operation of the Software Engineering Institute, a
   *      federally funded research and development center. Any opinions,
   *      findings and conclusions or recommendations expressed in this material
   *      are those of the author(s) and do not necessarily reflect the views of
   *      the United States Department of Defense.
   * 
   *      NO WARRANTY. THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE ENGINEERING
   *      INSTITUTE MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON
   *      UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR
   *      IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF
   *      FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS
   *      OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES
   *      NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT,
   *      TRADEMARK, OR COPYRIGHT INFRINGEMENT.
   * 
   *      This material has been approved for public release and unlimited
   *      distribution.
   **/
  
  #ifdef _GAMS_VREP_ // only compile this if we are simulating in VREP
  
  #include "VREPQuadCDRA.h"
  
  
  #include <iostream>
  #include <cmath>
  
  #include "madara/knowledge/containers/DoubleVector.h"
  
  #include "gams/variables/Sensor.h"
  
  using std::endl;
  using std::cout;
  using std::string;
  using madara::knowledge::containers::NativeDoubleVector;
  using madara::knowledge::containers::Double;
  
  const string gams::platforms::VREPQuadCDRA::DEFAULT_MODEL(
   (getenv("GAMS_ROOT") == 0) ? 
    "" : // if GAMS_ROOT is not defined, then just leave this as empty string
   (string(getenv("GAMS_ROOT")) + "/resources/vrep/Quadricopter_CDRA.ttm")
    );
  
  std::string
  gams::platforms::VREPQuadCDRAFactory::get_default_model()
  {
    return VREPQuadCDRA::DEFAULT_MODEL;
  }
  
  gams::platforms::VREPQuadCDRA *
  gams::platforms::VREPQuadCDRAFactory::create_quad(
    std::string model_file, 
    simxUChar is_client_side, 
    madara::knowledge::KnowledgeBase * knowledge,
    variables::Sensors * sensors,
    variables::Platforms * platforms,
    variables::Self * self)
  {
    return new VREPQuadCDRA(model_file, is_client_side, knowledge, sensors, platforms, self);
  }
  
  gams::platforms::VREPQuadCDRA::VREPQuadCDRA(
    std::string model_file, 
    simxUChar is_client_side, 
    madara::knowledge::KnowledgeBase * knowledge,
    variables::Sensors * sensors,
    variables::Platforms * platforms,
    variables::Self * self) :
    VREPQuad(model_file, is_client_side, knowledge, sensors, platforms, self)
  {}
  
  std::string gams::platforms::VREPQuadCDRA::get_id() const
  {
    return "vrep_quad_laser";
  }
  
  std::string gams::platforms::VREPQuadCDRA::get_name() const
  {
    return "VREP CDRA Quadcopter";
  }
  
  #endif // _GAMS_VREP_
  