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

OpenGL

开发平台:

Visual C++

  1. // location.h
  2. //
  3. // Copyright (C) 2003, 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_LOCATION_H_
  10. #define _CELENGINE_LOCATION_H_
  11. #include <string>
  12. #include <celutil/basictypes.h>
  13. #include <celutil/color.h>
  14. #include <celmath/vecmath.h>
  15. class Body;
  16. class Location
  17. {
  18.  public:
  19.     Location();
  20.     virtual ~Location();
  21.     std::string getName(bool i18n = false) const;
  22.     void setName(const std::string&);
  23.     Vec3f getPosition() const;
  24.     void setPosition(const Vec3f&);
  25.     float getSize() const;
  26.     void setSize(float);
  27.     float getImportance() const;
  28.     void setImportance(float);
  29.     uint32 getFeatureType() const;
  30.     void setFeatureType(uint32);
  31.     std::string getInfoURL() const;
  32.     void setInfoURL(const std::string&);
  33.     bool isLabelColorOverridden() const { return overrideLabelColor; }
  34.     void setLabelColorOverridden(bool override) { overrideLabelColor = override; }
  35.     Color getLabelColor() const { return labelColor; }
  36.     void setLabelColor(Color color) { labelColor = color; }
  37.     void setParentBody(Body*);
  38.     Body* getParentBody() const;
  39.     Point3d getPlanetocentricPosition(double) const;
  40.     Point3d getHeliocentricPosition(double) const;
  41.     static uint32 parseFeatureType(const std::string&);
  42.     enum FeatureType
  43.     {
  44.         City           = 0x00000001,
  45.         Observatory    = 0x00000002,
  46.         LandingSite    = 0x00000004,
  47.         Crater         = 0x00000008,
  48.         Vallis         = 0x00000010,
  49.         Mons           = 0x00000020,
  50.         Planum         = 0x00000040,
  51.         Chasma         = 0x00000080,
  52.         Patera         = 0x00000100,
  53.         Mare           = 0x00000200,
  54.         Rupes          = 0x00000400,
  55.         Tessera        = 0x00000800,
  56.         Regio          = 0x00001000,
  57.         Chaos          = 0x00002000,
  58.         Terra          = 0x00004000,
  59.         Astrum         = 0x00008000,
  60.         Corona         = 0x00010000,
  61.         Dorsum         = 0x00020000,
  62.         Fossa          = 0x00040000,
  63.         Catena         = 0x00080000,
  64.         Mensa          = 0x00100000,
  65.         Rima           = 0x00200000,
  66.         Undae          = 0x00400000,
  67.         Tholus         = 0x00800000, // Small domical mountain or hill
  68.         Reticulum      = 0x01000000,
  69.         Planitia       = 0x02000000,
  70.         Linea          = 0x04000000,
  71.         Fluctus        = 0x08000000,
  72.         Farrum         = 0x10000000,
  73.         EruptiveCenter = 0x20000000, // Active volcanic centers on Io
  74.         Insula         = 0x40000000, // Islands
  75.         Other          = 0x80000000,
  76.     };
  77.  private:
  78.     Body* parent;
  79.     std::string name;
  80.     std::string i18nName;
  81.     Vec3f position;
  82.     float size;
  83.     float importance;
  84.     uint32 featureType;
  85.     bool overrideLabelColor;
  86.     Color labelColor;
  87.     std::string* infoURL;
  88. };
  89. #endif // _CELENGINE_LOCATION_H_