00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef CELENGINE_NEBULA_H_
00011 #define CELENGINE_NEBULA_H_
00012
00013 #include <vector>
00014 #include <string>
00015 #include <iostream>
00016 #include <celmath/vecmath.h>
00017 #include <celmath/quaternion.h>
00018 #include <celutil/reshandle.h>
00019 #include <celengine/deepskyobj.h>
00020
00021
00022 class Nebula : public DeepSkyObject
00023 {
00024 public:
00025 Nebula();
00026
00027 virtual const char* getType() const;
00028 virtual void setType(const std::string&);
00029 virtual size_t getDescription(char* buf, size_t bufLength) const;
00030
00031 virtual bool load(AssociativeArray*, const std::string&);
00032 virtual void render(const GLContext& context,
00033 const Vec3f& offset,
00034 const Quatf& viewerOrientation,
00035 float brightness,
00036 float pixelSize);
00037
00038 virtual unsigned int getRenderMask() const;
00039 virtual unsigned int getLabelMask() const;
00040
00041 void setModel(ResourceHandle);
00042 ResourceHandle getModel() const;
00043
00044 public:
00045 enum NebulaType
00046 {
00047 Emissive = 0,
00048 Reflective = 1,
00049 Dark = 2,
00050 Planetary = 3,
00051 Galactic = 4,
00052 SupernovaRemnant = 5,
00053 Bright_HII_Region = 6,
00054 NotDefined = 7
00055 };
00056
00057 private:
00058 ResourceHandle model;
00059 };
00060
00061 #endif // CELENGINE_NEBULA_H_