1 /*************************************************************************** 2 * 3 * Copyright (C) 2018 Advanced Driver Information Technology Joint Venture GmbH 4 * 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 * 18 ****************************************************************************/ 19 #ifndef _SKY_H 20 #define _SKY_H 21 22 #include "IRenderable.h" 23 #include "IUpdateable.h" 24 #include "vec.h" 25 #include "ShaderGradient.h" 26 27 class ShaderBase; 28 29 class Sky : public IRenderable, public IUpdateable 30 { 31 public: 32 Sky(vec3f position, vec3f size, vec4f color, ShaderGradient* shader, float sunriseSpeed = 0.02, float sunsetSpeed = 0.01, float daySpeed = 0.02, float nightSpeed = 0.02); ~Sky()33 virtual ~Sky() {} 34 35 virtual void render(); 36 virtual void update(int currentTimeInMs, int lastFrameTime); 37 38 private: 39 vec3f m_position; 40 vec3f m_size; 41 vec4f m_color; 42 vec4f colors[4]={{0.0, 0.0, 0.0, 1.0}, {0.0, 0.0, 0.0, 1.0}, {0.0, 0.0, 0.0, 1.0}, {0.0, 0.0, 0.0, 1.0}}; 43 44 vec4u m_index; 45 vec3f m_vertex[4]; 46 47 enum skyStates {sunrise, daytime, sunset, nighttime}; 48 enum skyStates skyState; 49 const float sunriseSpeed; 50 const float sunsetSpeed; 51 const float daySpeed; 52 const float nightSpeed; 53 54 ShaderGradient* m_pShader; 55 }; 56 57 #endif /* _SKY_H */ 58