2
Copyright (c) 2008-2009 NetAllied Systems GmbH
4
This file is part of MayaDataModel.
6
Licensed under the MIT Open Source License,
7
for details please see LICENSE file or the website
8
http://www.opensource.org/licenses/mit-license.php
10
#ifndef __MayaDM_VOLUMELIGHT_H__
11
#define __MayaDM_VOLUMELIGHT_H__
12
#include "MayaDMTypes.h"
13
#include "MayaDMConnectables.h"
14
#include "MayaDMPointLight.h"
17
class VolumeLight : public PointLight
21
float colorRange_Position;
22
float3 colorRange_Color;
23
unsigned int colorRange_Interp;
24
void write(FILE* file) const
26
fprintf(file,"%f ", colorRange_Position);
27
colorRange_Color.write(file);
29
fprintf(file,"%i", colorRange_Interp);
33
float penumbra_Position;
34
float penumbra_FloatValue;
35
unsigned int penumbra_Interp;
36
void write(FILE* file) const
38
fprintf(file,"%f ", penumbra_Position);
39
fprintf(file,"%f ", penumbra_FloatValue);
40
fprintf(file,"%i", penumbra_Interp);
45
VolumeLight():PointLight(){}
46
VolumeLight(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
47
:PointLight(file, name, parent, "volumeLight", shared, create){}
48
virtual ~VolumeLight(){}
50
void setLightShape(unsigned int lis)
53
fprintf(mFile,"\tsetAttr \".lis\" %i;\n", lis);
55
void setVolumeLightDir(unsigned int vld)
58
fprintf(mFile,"\tsetAttr \".vld\" %i;\n", vld);
62
if(ac == 360.0) return;
63
fprintf(mFile,"\tsetAttr \".ac\" %f;\n", ac);
65
void setConeEndRadius(float cer)
67
if(cer == 0.0) return;
68
fprintf(mFile,"\tsetAttr \".cer\" %f;\n", cer);
70
void setColorRange(size_t crg_i,const ColorRange& crg)
72
fprintf(mFile,"\tsetAttr \".crg[%i]\" ",crg_i);
76
void setColorRange(size_t crg_start,size_t crg_end,ColorRange* crg)
78
fprintf(mFile,"\tsetAttr \".crg[%i:%i]\" ", crg_start,crg_end);
79
size_t size = (crg_end-crg_start)*1+1;
80
for(size_t i=0;i<size;++i)
87
void startColorRange(size_t crg_start,size_t crg_end)const
89
fprintf(mFile,"\tsetAttr \".crg[%i:%i]\"",crg_start,crg_end);
90
fprintf(mFile," -type \"ColorRange\" ");
92
void appendColorRange(const ColorRange& crg)const
97
void endColorRange()const
101
void setColorRange_Position(size_t crg_i,float crgp)
103
if(crgp == 0.0) return;
104
fprintf(mFile,"\tsetAttr \".crg[%i].crgp\" %f;\n", crg_i,crgp);
106
void setColorRange_Color(size_t crg_i,const float3& crgc)
108
fprintf(mFile,"\tsetAttr \".crg[%i].crgc\" -type \"float3\" ",crg_i);
110
fprintf(mFile,";\n");
112
void setColorRange_ColorR(size_t crg_i,float crgcr)
114
if(crgcr == 0.0) return;
115
fprintf(mFile,"\tsetAttr \".crg[%i].crgc.crgcr\" %f;\n", crg_i,crgcr);
117
void setColorRange_ColorG(size_t crg_i,float crgcg)
119
if(crgcg == 0.0) return;
120
fprintf(mFile,"\tsetAttr \".crg[%i].crgc.crgcg\" %f;\n", crg_i,crgcg);
122
void setColorRange_ColorB(size_t crg_i,float crgcb)
124
if(crgcb == 0.0) return;
125
fprintf(mFile,"\tsetAttr \".crg[%i].crgc.crgcb\" %f;\n", crg_i,crgcb);
127
void setColorRange_Interp(size_t crg_i,unsigned int crgi)
129
if(crgi == 0) return;
130
fprintf(mFile,"\tsetAttr \".crg[%i].crgi\" %i;\n", crg_i,crgi);
132
void setPenumbra(size_t pen_i,const Penumbra& pen)
134
fprintf(mFile,"\tsetAttr \".pen[%i]\" ",pen_i);
136
fprintf(mFile,";\n");
138
void setPenumbra(size_t pen_start,size_t pen_end,Penumbra* pen)
140
fprintf(mFile,"\tsetAttr \".pen[%i:%i]\" ", pen_start,pen_end);
141
size_t size = (pen_end-pen_start)*1+1;
142
for(size_t i=0;i<size;++i)
147
fprintf(mFile,";\n");
149
void startPenumbra(size_t pen_start,size_t pen_end)const
151
fprintf(mFile,"\tsetAttr \".pen[%i:%i]\"",pen_start,pen_end);
152
fprintf(mFile," -type \"Penumbra\" ");
154
void appendPenumbra(const Penumbra& pen)const
159
void endPenumbra()const
161
fprintf(mFile,";\n");
163
void setPenumbra_Position(size_t pen_i,float penp)
165
if(penp == 0.0) return;
166
fprintf(mFile,"\tsetAttr \".pen[%i].penp\" %f;\n", pen_i,penp);
168
void setPenumbra_FloatValue(size_t pen_i,float penfv)
170
if(penfv == 0.0) return;
171
fprintf(mFile,"\tsetAttr \".pen[%i].penfv\" %f;\n", pen_i,penfv);
173
void setPenumbra_Interp(size_t pen_i,unsigned int peni)
175
if(peni == 0) return;
176
fprintf(mFile,"\tsetAttr \".pen[%i].peni\" %i;\n", pen_i,peni);
178
void setEmitAmbient(bool ema)
180
if(ema == false) return;
181
fprintf(mFile,"\tsetAttr \".ema\" %i;\n", ema);
183
void getLightShape()const
185
fprintf(mFile,"\"%s.lis\"",mName.c_str());
187
void getVolumeLightDir()const
189
fprintf(mFile,"\"%s.vld\"",mName.c_str());
193
fprintf(mFile,"\"%s.ac\"",mName.c_str());
195
void getConeEndRadius()const
197
fprintf(mFile,"\"%s.cer\"",mName.c_str());
199
void getColorRange(size_t crg_i)const
201
fprintf(mFile,"\"%s.crg[%i]\"",mName.c_str(),crg_i);
203
void getColorRange()const
206
fprintf(mFile,"\"%s.crg\"",mName.c_str());
208
void getColorRange_Position(size_t crg_i)const
210
fprintf(mFile,"\"%s.crg[%i].crgp\"",mName.c_str(),crg_i);
212
void getColorRange_Position()const
215
fprintf(mFile,"\"%s.crg.crgp\"",mName.c_str());
217
void getColorRange_Color(size_t crg_i)const
219
fprintf(mFile,"\"%s.crg[%i].crgc\"",mName.c_str(),crg_i);
221
void getColorRange_Color()const
224
fprintf(mFile,"\"%s.crg.crgc\"",mName.c_str());
226
void getColorRange_ColorR(size_t crg_i)const
228
fprintf(mFile,"\"%s.crg[%i].crgc.crgcr\"",mName.c_str(),crg_i);
230
void getColorRange_ColorR()const
233
fprintf(mFile,"\"%s.crg.crgc.crgcr\"",mName.c_str());
235
void getColorRange_ColorG(size_t crg_i)const
237
fprintf(mFile,"\"%s.crg[%i].crgc.crgcg\"",mName.c_str(),crg_i);
239
void getColorRange_ColorG()const
242
fprintf(mFile,"\"%s.crg.crgc.crgcg\"",mName.c_str());
244
void getColorRange_ColorB(size_t crg_i)const
246
fprintf(mFile,"\"%s.crg[%i].crgc.crgcb\"",mName.c_str(),crg_i);
248
void getColorRange_ColorB()const
251
fprintf(mFile,"\"%s.crg.crgc.crgcb\"",mName.c_str());
253
void getColorRange_Interp(size_t crg_i)const
255
fprintf(mFile,"\"%s.crg[%i].crgi\"",mName.c_str(),crg_i);
257
void getColorRange_Interp()const
260
fprintf(mFile,"\"%s.crg.crgi\"",mName.c_str());
262
void getPenumbra(size_t pen_i)const
264
fprintf(mFile,"\"%s.pen[%i]\"",mName.c_str(),pen_i);
266
void getPenumbra()const
269
fprintf(mFile,"\"%s.pen\"",mName.c_str());
271
void getPenumbra_Position(size_t pen_i)const
273
fprintf(mFile,"\"%s.pen[%i].penp\"",mName.c_str(),pen_i);
275
void getPenumbra_Position()const
278
fprintf(mFile,"\"%s.pen.penp\"",mName.c_str());
280
void getPenumbra_FloatValue(size_t pen_i)const
282
fprintf(mFile,"\"%s.pen[%i].penfv\"",mName.c_str(),pen_i);
284
void getPenumbra_FloatValue()const
287
fprintf(mFile,"\"%s.pen.penfv\"",mName.c_str());
289
void getPenumbra_Interp(size_t pen_i)const
291
fprintf(mFile,"\"%s.pen[%i].peni\"",mName.c_str(),pen_i);
293
void getPenumbra_Interp()const
296
fprintf(mFile,"\"%s.pen.peni\"",mName.c_str());
298
void getEmitAmbient()const
300
fprintf(mFile,"\"%s.ema\"",mName.c_str());
303
VolumeLight(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true)
304
:PointLight(file, name, parent, nodeType, shared, create) {}
308
#endif//__MayaDM_VOLUMELIGHT_H__