summaryrefslogtreecommitdiffstats
path: root/src/graphics/core/light.h
diff options
context:
space:
mode:
authorPiotr Dziwinski <piotrdz@gmail.com>2012-07-26 22:26:19 +0200
committerPiotr Dziwinski <piotrdz@gmail.com>2012-07-26 22:26:19 +0200
commit4ddcd9f810fa588ccf90442f7b4e5ddf385e85f2 (patch)
tree04cd5a00e080407ed243042e2dd7efe4ba94d4f8 /src/graphics/core/light.h
parent045f17a274c0cd41aebd34d5759f7fe791b680e4 (diff)
downloadcolobot-4ddcd9f810fa588ccf90442f7b4e5ddf385e85f2.tar.gz
colobot-4ddcd9f810fa588ccf90442f7b4e5ddf385e85f2.tar.bz2
colobot-4ddcd9f810fa588ccf90442f7b4e5ddf385e85f2.zip
Change of paths in src/graphics
- moved abstract core to src/graphics/core - moved proper graphics engine to src/graphics/engine
Diffstat (limited to 'src/graphics/core/light.h')
-rw-r--r--src/graphics/core/light.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/graphics/core/light.h b/src/graphics/core/light.h
new file mode 100644
index 0000000..b787cb2
--- /dev/null
+++ b/src/graphics/core/light.h
@@ -0,0 +1,91 @@
+// * This file is part of the COLOBOT source code
+// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
+// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
+// *
+// * This program is free software: you can redistribute it and/or modify
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation, either version 3 of the License, or
+// * (at your option) any later version.
+// *
+// * This program is distributed in the hope that it will be useful,
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// * GNU General Public License for more details.
+// *
+// * You should have received a copy of the GNU General Public License
+// * along with this program. If not, see http://www.gnu.org/licenses/.
+
+// light.h
+
+#pragma once
+
+
+#include "graphics/core/color.h"
+#include "math/vector.h"
+
+
+namespace Gfx {
+
+/**
+ \enum LightType
+ \brief Type of light in 3D scene */
+enum LightType
+{
+ LIGHT_POINT,
+ LIGHT_SPOT,
+ LIGHT_DIRECTIONAL
+};
+
+/**
+ \struct Light
+ \brief Properties of light in 3D scene
+
+ This structure was created as analog to DirectX's D3DLIGHT. */
+struct Light
+{
+ //! Type of light source
+ Gfx::LightType type;
+ //! Color of ambient light
+ Gfx::Color ambient;
+ //! Color of diffuse light
+ Gfx::Color diffuse;
+ //! Color of specular light
+ Gfx::Color specular;
+ //! Position in world space (for point & spot lights)
+ Math::Vector position;
+ //! Direction in world space (for directional & spot lights)
+ Math::Vector direction;
+ //! Constant attenuation factor
+ float attenuation0;
+ //! Linear attenuation factor
+ float attenuation1;
+ //! Quadratic attenuation factor
+ float attenuation2;
+ //! Angle of spotlight cone (0-90 degrees)
+ float spotAngle;
+ //! Intensity of spotlight (0 = uniform; 128 = most intense)
+ float spotIntensity;
+
+ //! Constructor; calls LoadDefault()
+ Light()
+ {
+ LoadDefault();
+ }
+
+ //! Loads default values
+ void LoadDefault()
+ {
+ type = LIGHT_POINT;
+ ambient = Gfx::Color(0.4f, 0.4f, 0.4f);
+ diffuse = Gfx::Color(0.8f, 0.8f, 0.8f);
+ specular = Gfx::Color(1.0f, 1.0f, 1.0f);
+ position = Math::Vector(0.0f, 0.0f, 0.0f);
+ direction = Math::Vector(0.0f, 0.0f, 1.0f);
+ attenuation0 = 1.0f;
+ attenuation1 = attenuation2 = 0.0f;
+ spotAngle = 90.0f;
+ spotIntensity = 0.0f;
+ }
+};
+
+}; // namespace Gfx