1 /*
2  * This file is part of the Colobot: Gold Edition source code
3  * Copyright (C) 2001-2020, Daniel Roux, EPSITEC SA & TerranovaTeam
4  * http://epsitec.ch; http://colobot.info; http://github.com/colobot
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see http://gnu.org/licenses
18  */
19 
20 /**
21  * \file graphics/core/material.h
22  * \brief Material struct
23  */
24 
25 #pragma once
26 
27 
28 #include "graphics/core/color.h"
29 
30 
31 // Graphics module namespace
32 namespace Gfx
33 {
34 
35 /**
36  * \struct Material
37  * \brief Material of a surface
38  *
39  * This structure was created as analog to DirectX's D3DMATERIAL.
40  *
41  * It contains values of 3 material colors: diffuse, ambient and specular.
42  * In D3DMATERIAL there are other fields, but they are not used
43  * by the graphics engine.
44  */
45 struct Material
46 {
47     //! Diffuse color
48     Color diffuse;
49     //! Ambient color
50     Color ambient;
51     //! Specular color
52     Color specular;
53 
54     bool operator==(const Material &mat) const
55     {
56         return diffuse == mat.diffuse && ambient == mat.ambient && specular == mat.specular;
57     }
58 
59     bool operator!=(const Material &mat) const
60     {
61         return ! operator==(mat);
62     }
63 };
64 
65 
66 } // namespace Gfx
67 
68