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 
LightType
Type of light in 3D scene.
Definition: light.h:38
Math::Vector position
Position in world space (for point & spot lights)
Definition: light.h:62
Color specular
Color of specular light.
Definition: light.h:60
const float PI
PI.
Definition: const.h:44
Properties of light in 3D scene.
Definition: light.h:51
float spotAngle
Angle of spotlight cone (0-PI/2 radians)
Definition: light.h:72
Color structs and related functions.
float attenuation1
Linear attenuation factor.
Definition: light.h:68
Color ambient
Color of ambient light.
Definition: light.h:56
Math::Vector direction
Direction in world space (for directional & spot lights)
Definition: light.h:64
float spotIntensity
Intensity of spotlight (0 = uniform; 128 = most intense)
Definition: light.h:75
float attenuation2
Quadratic attenuation factor.
Definition: light.h:70
LightType type
Type of light source.
Definition: light.h:54
Vector struct and related functions.
3D (3x1) vector
Definition: vector.h:49
RGBA color.
Definition: color.h:35
Light()
Constructor; calls LoadDefault()
Definition: light.h:78
float attenuation0
Constant attenuation factor.
Definition: light.h:66
Color diffuse
Color of diffuse light.
Definition: light.h:58
void LoadDefault()
Loads default values.
Definition: light.h:84