class CFuncTrackTrain : public CBaseModelEntity
{
public:
    CHandle<CPathTrack> m_ppath;
    float32 m_length;
    Vector m_vPosPrev;
    QAngle m_angPrev;
    Vector m_controlMins;
    Vector m_controlMaxs;
    Vector m_lastBlockPos;
    int32 m_lastBlockTick;
    float32 m_flVolume;
    float32 m_flBank;
    float32 m_oldSpeed;
    float32 m_flBlockDamage;
    float32 m_height;
    float32 m_maxSpeed;
    float32 m_dir;
    CUtlSymbolLarge m_iszSoundMove;
    CUtlSymbolLarge m_iszSoundMovePing;
    CUtlSymbolLarge m_iszSoundStart;
    CUtlSymbolLarge m_iszSoundStop;
    CUtlSymbolLarge m_strPathTarget;
    float32 m_flMoveSoundMinDuration;
    float32 m_flMoveSoundMaxDuration;
    GameTime_t m_flNextMoveSoundTime;
    float32 m_flMoveSoundMinPitch;
    float32 m_flMoveSoundMaxPitch;
    TrainOrientationType_t m_eOrientationType;
    TrainVelocityType_t m_eVelocityType;
private:
    uint8 pad_08B8[16];
public:
    CEntityIOOutput m_OnStart;
    CEntityIOOutput m_OnNext;
    CEntityIOOutput m_OnArrivedAtDestinationNode;
    bool m_bManualSpeedChanges;
    float32 m_flDesiredSpeed;
    GameTime_t m_flSpeedChangeTime;
    float32 m_flAccelSpeed;
    float32 m_flDecelSpeed;
    bool m_bAccelToSpeed;
    GameTime_t m_flNextMPSoundTime;
};