Colobot
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
light.h
Go to the documentation of this file.
1 // * This file is part of the COLOBOT source code
2 // * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
3 // * Copyright (C) 2012, Polish Portal of Colobot (PPC)
4 // *
5 // * This program is free software: you can redistribute it and/or modify
6 // * it under the terms of the GNU General Public License as published by
7 // * the Free Software Foundation, either version 3 of the License, or
8 // * (at your option) any later version.
9 // *
10 // * This program is distributed in the hope that it will be useful,
11 // * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // * GNU General Public License for more details.
14 // *
15 // * You should have received a copy of the GNU General Public License
16 // * along with this program. If not, see http://www.gnu.org/licenses/.
17 
23 #pragma once
24 
25 
26 #include "graphics/core/color.h"
27 
28 #include "math/vector.h"
29 
30 
31 // Graphics module namespace
32 namespace Gfx {
33 
39 {
40  LIGHT_POINT,
41  LIGHT_SPOT,
42  LIGHT_DIRECTIONAL
43 };
44 
51 struct Light
52 {
66  float attenuation0;
68  float attenuation1;
70  float attenuation2;
72  float spotAngle;
73 
76 
79  {
80  LoadDefault();
81  }
82 
84  void LoadDefault()
85  {
86  type = LIGHT_POINT;
87  ambient = Color(0.4f, 0.4f, 0.4f);
88  diffuse = Color(0.8f, 0.8f, 0.8f);
89  specular = Color(1.0f, 1.0f, 1.0f);
90  position = Math::Vector(0.0f, 0.0f, 0.0f);
91  direction = Math::Vector(0.0f, 0.0f, 1.0f);
92  attenuation0 = 1.0f;
93  attenuation1 = attenuation2 = 0.0f;
94  spotAngle = Math::PI/2.0f;
95  spotIntensity = 0.0f;
96  }
97 };
98 
99 
100 } // namespace Gfx
101