1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef BASIC_SKY_H
#define BASIC_SKY_H
#include "Rendering/GL/myGL.h"
#include "ISky.h"
class CBasicSky : public ISky
{
public:
CBasicSky();
virtual ~CBasicSky();
void Update();
void Draw();
void DrawSun();
void UpdateSunDir();
void UpdateSkyTexture();
private:
void CreateSkyDomeList();
void InitSun();
void UpdateSunFlare();
void CreateCover(int baseX, int baseY, float* buf);
void CreateTransformVectors();
void CreateRandMatrix(int **matrix,float mod);
void CreateClouds();
void UpdatePart(int ast, int aed, int a3cstart, int a4cstart);
void UpdateTexPartDot3(int x, int y, unsigned char (*texp)[4]);
void UpdateTexPart(int x, int y, unsigned char (*texp)[4]);
void UpdateSkyDir();
float3 GetDirFromTexCoord(float x, float y);
float GetTexCoordFromDir(const float3& dir);
float3 GetCoord(int x, int y);
protected:
inline unsigned char GetCloudThickness(int x, int y);
float3 skydir1; // right
float3 skydir2; // up
unsigned int skyTex;
unsigned int skyDot3Tex;
unsigned int cloudDot3Tex;
unsigned int sunTex;
unsigned int sunFlareTex;
unsigned char (* skytexpart)[4];
unsigned int skyTexUpdateIter;
unsigned int skyDomeList;
unsigned int sunFlareList;
float skyAngle;
float domeheight;
float domeWidth;
float sunTexCoordX;
float sunTexCoordY;
int*** randMatrix;
int** rawClouds;
int*** blendMatrix;
unsigned char* cloudThickness;
float covers[4][32];
int oldCoverBaseX;
int oldCoverBaseY;
unsigned char alphaTransform[1024];
unsigned char thicknessTransform[1024];
bool cloudDown[10];
int ydif[CLOUD_SIZE];
int updatecounter;
};
#endif // BASIC_SKY_H
|