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

OpenGL

开发平台:

Visual C++

  1. // galaxy.h
  2. //
  3. // Copyright (C) 2001, 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 _GALAXY_H_
  10. #define _GALAXY_H_
  11. #include <celengine/deepskyobj.h>
  12. struct Blob
  13. {
  14.     Point3f        position;
  15.     unsigned int   colorIndex;
  16.     float          brightness;
  17. };
  18. struct GalacticForm
  19. {
  20.     std::vector<Blob>* blobs;
  21.     Vec3f scale;
  22. };
  23. class Galaxy : public DeepSkyObject
  24. {
  25.  public:
  26.     Galaxy();
  27.     virtual const char* getType() const;
  28.     virtual void setType(const std::string&);
  29.     virtual size_t getDescription(char* buf, size_t bufLength) const;
  30.     virtual std::string getCustomTmpName() const;
  31.     virtual void setCustomTmpName(const std::string&);
  32.     float getDetail() const;
  33.     void setDetail(float);
  34.     //    float getBrightness() const;
  35.     //    void setBrightness();
  36.     virtual bool pick(const Ray3d& ray,
  37.                       double& distanceToPicker,
  38.                       double& cosAngleToBoundCenter) const;
  39.     virtual bool load(AssociativeArray*, const std::string&);
  40.     virtual void render(const GLContext& context,
  41.                         const Vec3f& offset,
  42.                         const Quatf& viewerOrientation,
  43.                         float brightness,
  44.                         float pixelSize);
  45.     virtual void renderGalaxyPointSprites(const GLContext& context,
  46.                                           const Vec3f& offset,
  47.                                           const Quatf& viewerOrientation,
  48.                                           float brightness,
  49.                                           float pixelSize);
  50.     virtual void renderGalaxyEllipsoid(const GLContext& context,
  51.                                        const Vec3f& offset,
  52.                                        const Quatf& viewerOrientation,
  53.                                        float brightness,
  54.                                        float pixelSize);
  55.     GalacticForm* getForm() const;
  56.     static void  increaseLightGain();
  57.     static void  decreaseLightGain();
  58.     static float getLightGain();
  59.     static void  setLightGain(float);
  60.     virtual unsigned int getRenderMask() const;
  61.     virtual unsigned int getLabelMask() const;
  62.     
  63.     virtual const char* getObjTypeName() const;
  64.  public:
  65.     enum GalaxyType {
  66.         S0   =  0,
  67.         Sa   =  1,
  68.         Sb   =  2,
  69.         Sc   =  3,
  70.         SBa  =  4,
  71.         SBb  =  5,
  72.         SBc  =  6,
  73.         E0   =  7,
  74.         E1   =  8,
  75.         E2   =  9,
  76.         E3   = 10,
  77.         E4   = 11,
  78.         E5   = 12,
  79.         E6   = 13,
  80.         E7   = 14,
  81.         Irr  = 15
  82.     };
  83.  private:
  84.     float detail;
  85.     std::string* customTmpName;
  86.     //    float brightness;
  87.     GalaxyType type;
  88.     GalacticForm* form;
  89.     static float lightGain;
  90. };
  91. //std::ostream& operator<<(std::ostream& s, const Galaxy::GalaxyType& sc);
  92. #endif // _GALAXY_H_