soc-2008-mxcurioni: first version of lib3ds code. It does NOT work yet and has to...
[blender.git] / source / blender / freestyle / intern / scene_graph / NodeLight.cpp
1
2 //
3 //  Copyright (C) : Please refer to the COPYRIGHT file distributed 
4 //   with this source distribution. 
5 //
6 //  This program is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU General Public License
8 //  as published by the Free Software Foundation; either version 2
9 //  of the License, or (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.  See the
14 //  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, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 //
20 ///////////////////////////////////////////////////////////////////////////////
21
22 #include "NodeLight.h"
23
24 int NodeLight::numberOfLights = 0;
25
26 NodeLight::NodeLight()
27 : Node() 
28 {
29   if(numberOfLights > 7)
30   {
31     _number = 7;
32   }
33   else
34   {
35     _number = numberOfLights; 
36     numberOfLights++;
37   }
38   
39   Ambient[0] = Ambient[1] = Ambient[2] = 0.f;
40   Ambient[3] = 1.f;
41   
42   for(int i=0; i<4; i++)
43   {
44     Diffuse[i] = 1.f;
45     Specular[i] = 1.f;
46   }
47
48   Position[0] = Position[1] = Position[3] = 0.f;
49   Position[2] = 1.f;
50
51   on = true;
52 }
53
54 NodeLight::NodeLight(NodeLight& iBrother)
55 : Node(iBrother)
56 {
57     if(numberOfLights > 7)
58   {
59     _number = 7;
60   }
61   else
62   {
63     _number = numberOfLights; 
64     numberOfLights++;
65   }
66
67   for(int i=0; i<4; i++)
68   {
69     Ambient[i] = iBrother.ambient()[i];
70     Diffuse[i] = iBrother.diffuse()[i];
71     Specular[i] = iBrother.specular()[i];
72     Position[i] = iBrother.position()[i];
73   }
74
75   on = iBrother.isOn();
76 }
77
78 void NodeLight::accept(SceneVisitor& v) {
79   v.visitNodeLight(*this);
80 }