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

OpenGL

开发平台:

Visual C++

  1. // nebula.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_NEBULA_H_
  10. #define CELENGINE_NEBULA_H_
  11. #include <celutil/reshandle.h>
  12. #include <celengine/deepskyobj.h>
  13. class Nebula : public DeepSkyObject
  14. {
  15.  public:
  16.     Nebula();
  17.     virtual const char* getType() const;
  18.     virtual void setType(const std::string&);
  19.     virtual size_t getDescription(char* buf, size_t bufLength) const;
  20.     virtual bool pick(const Ray3d& ray,
  21.                       double& distanceToPicker,
  22.                       double& cosAngleToBoundCenter) const;
  23.     virtual bool load(AssociativeArray*, const std::string&);
  24.     virtual void render(const GLContext& context,
  25.                         const Vec3f& offset,
  26.                         const Quatf& viewerOrientation,
  27.                         float brightness,
  28.                         float pixelSize);
  29.     virtual unsigned int getRenderMask() const;
  30.     virtual unsigned int getLabelMask() const;
  31.     void setGeometry(ResourceHandle);
  32.     ResourceHandle getGeometry() const;
  33.     
  34.     virtual const char* getObjTypeName() const;
  35.  public:
  36.     enum NebulaType
  37.     {
  38.         Emissive           = 0,
  39.         Reflective         = 1,
  40.         Dark               = 2,
  41.         Planetary          = 3,
  42.         Galactic           = 4,
  43.         SupernovaRemnant   = 5,
  44.         Bright_HII_Region  = 6,
  45.         NotDefined         = 7
  46.     };
  47.  private:
  48.     ResourceHandle geometry;
  49. };
  50. #endif // CELENGINE_NEBULA_H_