Skip to content

v4.1 to v5.0 Changes Overview

All Products

  • smVec*d classes are derived from smVec3r’s now
  • Some methods that use smVec*d  are removed
    • smVec3d versions of EntityBase::wcs_to_bcs and bcs_to_wcs
    • smVec3d version of computeAngleBetweenVectors
    • smVec3d smVec3rToVec3d( const smVec3r& vec );
    • smVec3r smVec3dToVec3r( const smVec3d& vec );
    • smVec2d smToVec2d( const smVec2r& v );
    • smVec2d smToVec2d( const smVec3r& v, int idx0 = 0,int idx1 = 1 );
    • smVec2d smToVec2d( const smVec3d& v, int idx0 = 0,int idx1 = 1 );
    • smVec2r smToVec2r( const smVec2d& v );
    • smVec2r smToVec2r( const smVec3d& v, int idx0 = 0,int idx1 = 1 );
    • EntityBase::getPositionD
    • MBDBody::getPositionD()
    • MBDBody::setPositionD()
    • EntityBase::getVelocityD()
    • MBDBody::setSpeedD()
    • MBDBody::getSpeedD
    • MBDBody::getRotSpeedBCSD()
    • MBDBody::getRotSpeedWCSD()
    • EntityBase::getRotVelocityBCSD()
    • EntityBase:: getRotVelocityWCSD()
    • MBDBody::getRotAsHPRD()
    • MBDBody::setRotWithHPRD()
  • MBDBody::setSpeed() renamed as with setVelocity()
  • MBDBody::getSpeed() renamed as getVelocity()
  • EntityBase::postUpdate removed. Instead postUpdatePhase1, postUpdatePhase2 and postUpdatePhase3 introduced. Developers who overrode postUpdate must override postUpdatePhase2 now.
  • Entities are automatically disabled when their damage status is Crashed.
  • Added EntityBase::ConfigParams::getConfigFile() which allows querrying the file that is used to create a configuration.
  • A new class, EntityHandle, provides an easier way for working with entities. This handle encapsulates an EntityBase pointer and provides an isValid() method that can be used to query whether the pointer is still valid. E.g. in case  an AirplaneDynamics instance is deleted, its pointer will be invalid but an EntityHandle<AirplaneDynamics> that was referring to this instance will still be valid. isValid() will return false in this case.
  • ObjectDetached callbacks are not derived from WorldParticipant  anymore. See also EntityBase::m_objectDetachedCallbacks.
  • Terrain query callbacks are not derived from WorldParticipant anymore.
    • World::reset() does not delete World’s terrain query callback anymore
    • Entities delete their callbacks automatically when they are deleted
    • Library shows a warning if a terrain query callback is shared among multiple entities. Sharing can lead to crashes because when an entity is deleted, the callback pointer will be invalid. Developers should consider assigning a terrain query callback to the World instance instead of to multiple entities.
  • World::PreInternalUpdateCallback and World::PostInternalUpdateCallback interface changed. These callbacks are added/removed through callback containers m_preInternalUpdateCallbacks and m_postInternalUpdateCallbacks.
  • BotBase::m_vehicle is not available to derived classes anymore. getVehicle() can be used instead.
  • BotBase::setMasterToNone() renamed as setMasterControllerToNone()
  • DynamicControllerParameterEnum uses smart enums which are implemented in RTD::EnumClass. This allows for querying and setting enum values as strings. Users have to add the enum type before the enum value to fix compile
    errors.
    Example: BasicFlightController::GroundSpeed became BasicFlightController::Mode::GroundSpeed.

RotorLib FDM

  • Signature of the trim method changed.

FixedWingLib FDM

  • GenAirplane200 class is obsolete but is still supported. The new GenAirplane300 class must be used in the future.

RotorLib CGF

  • HelicopterDynamics class has a getBot() method now. This method returns the bot that is controlling the vehicle.
  • HelicopterDynamics::reset() will reset the bot that is associated with it. Important note: If a certain maneuver is activated in the bot and later the associated vehicle is reset, the maneuver will not be active anymore. This means: Maneuvers
    must be activated after vehicle reset.
  • ManualFlightController added. This implements three different joystick flight models. The method that is used so far in RotorLibCGF_Joystick example is now obsolete. The example code updated to show the use of ManualFlightController.
  • HelicopterDynamics::getCtrlCyclicLat, getCtrlCyclicLon, getCtrlPedal, getCtrlCollective, setCtrlCyclicLat, setCtrlCyclicLon, setCtrlPedal and setCtrlCollective methods are removed. These inputs can be set and queried over getPilotInputData() as can be done in other RTD products.
  • maxLift parameter renamed as maxThrust. maxLift is still supported for backwards compatiblity.
  • Added m_mainRotorRollMomentDerivative and m_mainRotorPitchMomentDerivative, m_mainRotorRollDampingDerivative,
    m_mainRotorPitchDampingDerivative, m_mainRotorThrustVerticalSpeedDerivative
  • Removed m_mainRotorRadius, m_pitchControlGain, m_rollControlGain
  • Removed GenericUtility.xml GenericCargo.xml and GenericAttack.xml. Instead  three new example xml’s that are based on weight classes added.
  • Removed m_wpChangeCoefficient parameter from follor route controller. A new algorithm that does not require such a parameter is implemented.
  • m_coordinatedTurnEnabled parameter of VelocityController is converted to an enum.
  • VelocityController status becomes ENDED when the desired velocity vector is reached. Previously this controller never reported ENDED.
  •  RLCGF AttitudeController has new features and parameters
    • m_desiredAttitude parameter replaced with m_desiredHeading, m_desiredRoll and m_desiredPitch. These parameters can be left unspecified.
    • Added automatic heading control feature which is activated when m_desiredHeading parameter is left unspecified.
    • Controller status becomes ENDED when the desired attitude and heading is reached. Previously this controller never reported ENDED.

FixedWingLib CGF

  • AirplaneDynamics class has a getBot() method now. This method returns the bot that is controlling the vehicle.
  • AirplaneDynamics ::reset() will reset the bot that is associated with it. Important note: If a certain maneuver is activated in the bot and later the associated vehicle is reset, the maneuver will not be active anymore. This means: Maneuvers must
    be activated after vehicle reset.
  • Removed m_wpChangeCoefficient parameter from follor route controller. A new algorithm that does not require such a parameter is implemented.
  • Removed m_wpChangeCoefficient parameter from taxi route controller. A new algorithm that does not require such a parameter is implemented.
  • FollowRouteController ContinuationMode and WaypointIndexDirection moved to RTD namespace.
  • VelocityController status becomes ENDED when the desired velocity vector is reached. Previously this controller never reported ENDED.
  • Taxi route controller starts to brake gradually as it approaches the final waypoint. Previously a sudden full brake was
    applied.

WeaponLib (Now part of EWAWS)

  • m_target parameter of the ProportionalNavigationController is not a ReferenceEntityBase pointer anymore. Instead it is of type DynamicControllerParameterEntityReferenceName. Developers have to use
    m_target = myReference->getName()
    instead of
    m_target = myReference
  • Proportional navigation controller is improved such that it takes velocity of the weapon into account when applying the acceleration command. Note that,  this requires a significant increase in the navigationConstant. Values between
    3.0 and 10.0 are suggested.