diff options
author | Aki <please@ignore.pl> | 2022-04-01 21:23:39 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-04-01 21:23:39 +0200 |
commit | 3c487c5cd69c53d6fea948643c0a76df03516605 (patch) | |
tree | 72730c7b8b26a5ef8fc9a987ec4c16129efd5aac /StarsEx/Sky.h | |
parent | 8f353abd0bfe18baddd8a8250ab7c4f2d1c83a6e (diff) | |
download | starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.zip starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.gz starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.bz2 |
Moved Stars45 to StarsEx
Diffstat (limited to 'StarsEx/Sky.h')
-rw-r--r-- | StarsEx/Sky.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/StarsEx/Sky.h b/StarsEx/Sky.h new file mode 100644 index 0000000..2ea0c59 --- /dev/null +++ b/StarsEx/Sky.h @@ -0,0 +1,104 @@ +/* Starshatter: The Open Source Project + Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors + Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors + Copyright (c) 1997-2006, Destroyer Studios LLC. + + AUTHOR: John DiCamillo + + + OVERVIEW + ======== + Celestial sphere, stars, planets, space dust... +*/ + +#ifndef Sky_h +#define Sky_h + +#include "Types.h" +#include "Solid.h" +#include "Bitmap.h" +#include "Geometry.h" + +// +--------------------------------------------------------------------+ + +class StarSystem; + +// +--------------------------------------------------------------------+ + +class Stars : public Graphic +{ +public: + Stars(int nstars); + virtual ~Stars(); + + virtual void Illuminate(double scale); + virtual void Render(Video* video, DWORD flags); + +protected: + VertexSet* vset; + Color* colors; +}; + +// +--------------------------------------------------------------------+ + +class Dust : public Graphic +{ +public: + Dust(int ndust, bool bright=false); + virtual ~Dust(); + + virtual void Render(Video* video, DWORD flags); + virtual void Reset(const Point& ref); + virtual void ExecFrame(double factor, const Point& ref); + + virtual void Hide(); + virtual void Show(); + +protected: + bool really_hidden; + bool bright; + VertexSet* vset; +}; + +// +--------------------------------------------------------------------+ + +class PlanetRep : public Solid +{ +public: + PlanetRep(const char* img_west, const char* img_glow, + double rad, const Vec3& pos, double tscale = 1, + const char* rngname=0, double minrad = 0, double maxrad = 0, + Color atmos = Color::Black, const char* img_gloss=0); + virtual ~PlanetRep(); + + virtual Color Atmosphere() const { return atmosphere; } + virtual void SetAtmosphere(Color a) { atmosphere = a; } + virtual void SetDaytime(bool d); + virtual void SetStarSystem(StarSystem* system); + + virtual void Render(Video* video, DWORD flags); + + virtual int CheckRayIntersection(Point pt, Point vpn, double len, Point& ipt, + bool treat_translucent_polys_as_solid=true); + +protected: + void CreateSphere(double radius, int nrings, int nsections, + double minrad, double maxrad, int rsections, + double tscale); + + Material* mtl_surf; + Material* mtl_limb; + Material* mtl_ring; + int has_ring; + int ring_verts; + int ring_polys; + double ring_rad; + double body_rad; + Color atmosphere; + bool daytime; + + StarSystem* star_system; +}; + +#endif // Sky_h + |