/** \file
 *
 *  Contains the SimulatorModule class implementation.
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

#include "SimulatorModule.h"

#include "ExternalSim.h"
#include "ExternalSimIF.h"
#include "InternalEnvSim.h"
#include "InternalEnvSimIF.h"
#include "InternalSim.h"
#include "InternalSimIF.h"
#include "NavigationSim.h"
#include "NavigationSimIF.h"

#ifdef __GAZEBO
#include "ExternalSimGazebo.h"
#include "ExternalSimGazeboIF.h"
#endif

SimulatorModule::SimulatorModule()
    : Module( "Simulator",
              "This is the module containing the Simulator" )
{}

void SimulatorModule::loadComponents( Logger& logger )
{
    if( loadAtStartup( ExternalSimIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new ExternalSim( this ) );
    }
    if( loadAtStartup( InternalEnvSimIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new InternalEnvSim( this ) );
    }
#ifdef __GAZEBO
    if( loadAtStartup( ExternalSimGazeboIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new ExternalSimGazebo( this ) );
    }
#endif
    if( loadAtStartup( InternalSimIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new InternalSim( this ) );
    }
    if( loadAtStartup( NavigationSimIF::LOAD_AT_STARTUP, logger ) )
    {
        registerComponent( new NavigationSim( this ) );
    }
}

SimulatorModule::~SimulatorModule()
{
}
