trajmanager.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // trajmanager.h
  2. //
  3. // Copyright (C) 2001-2007 Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #ifndef CELENGINE_TRAJMANAGER_H_
  10. #define CELENGINE_TRAJMANAGER_H_
  11. #include <string>
  12. #include <map>
  13. #include <celutil/resmanager.h>
  14. #include <celengine/orbit.h>
  15. #include <celengine/samporbit.h>
  16. class TrajectoryInfo : public ResourceInfo<Orbit>
  17. {
  18.  public:
  19.     std::string source;
  20.     std::string path;
  21.     TrajectoryInterpolation interpolation;
  22.     TrajectoryPrecision precision;
  23.     TrajectoryInfo(const std::string _source,
  24.                    const std::string _path = "",
  25.                    TrajectoryInterpolation _interpolation = TrajectoryInterpolationCubic,
  26.                    TrajectoryPrecision _precision = TrajectoryPrecisionSingle) :
  27.         source(_source), path(_path), interpolation(_interpolation), precision(_precision) {};
  28.     virtual std::string resolve(const std::string&);
  29.     virtual Orbit* load(const std::string&);
  30. };
  31. // Sort trajectory info records. The same trajectory can be loaded multiple times with
  32. // different attributes for precision and interpolation. How the ordering is defined isn't
  33. // as important making this operator distinguish between trajectories with either different
  34. // sources or different attributes.
  35. inline bool operator<(const TrajectoryInfo& ti0, const TrajectoryInfo& ti1)
  36. {
  37.     if (ti0.interpolation == ti1.interpolation)
  38.     {
  39.         if (ti0.precision == ti1.precision)
  40.         {
  41.             if (ti0.source == ti1.source)
  42.                 return ti0.path < ti1.path;
  43.             else
  44.                 return ti0.source < ti1.source;
  45.         }
  46.         else
  47.         {
  48.             return ti0.precision < ti1.precision;
  49.         }
  50.     }
  51.     else
  52.     {
  53.         return ti0.interpolation < ti1.interpolation;
  54.     }
  55. }
  56. typedef ResourceManager<TrajectoryInfo> TrajectoryManager;
  57. extern TrajectoryManager* GetTrajectoryManager();
  58. #endif // CELENGINE_TRAJMANAGER_H_