1 /*
2     Copyright (c) 2008-2009 NetAllied Systems GmbH
3 
4     This file is part of MayaDataModel.
5 
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
9 */
10 #ifndef __MayaDM_NUCLEUS_H__
11 #define __MayaDM_NUCLEUS_H__
12 #include "MayaDMTypes.h"
13 #include "MayaDMConnectables.h"
14 #include "MayaDMDependNode.h"
15 namespace MayaDM
16 {
17 class Nucleus : public DependNode
18 {
19 public:
20 public:
21 
Nucleus()22 	Nucleus():DependNode(){}
23 	Nucleus(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
24 		:DependNode(file, name, parent, "nucleus", shared, create){}
~Nucleus()25 	virtual ~Nucleus(){}
26 
setStartTime(double sti)27 	void setStartTime(double sti)
28 	{
29 		if(sti == 1) return;
30 		fprintf(mFile,"\tsetAttr \".sti\" %f;\n", sti);
31 	}
setStartFrame(double stf)32 	void setStartFrame(double stf)
33 	{
34 		if(stf == 1.0) return;
35 		fprintf(mFile,"\tsetAttr \".stf\" %f;\n", stf);
36 	}
setEnable(bool ena)37 	void setEnable(bool ena)
38 	{
39 		if(ena == true) return;
40 		fprintf(mFile,"\tsetAttr \".ena\" %i;\n", ena);
41 	}
setGravity(float grty)42 	void setGravity(float grty)
43 	{
44 		if(grty == 9.8) return;
45 		fprintf(mFile,"\tsetAttr \".grty\" %f;\n", grty);
46 	}
setGravityDirection(const float3 & grdi)47 	void setGravityDirection(const float3& grdi)
48 	{
49 		fprintf(mFile,"\tsetAttr \".grdi\" -type \"float3\" ");
50 		grdi.write(mFile);
51 		fprintf(mFile,";\n");
52 	}
setGravityDirectionX(float grdx)53 	void setGravityDirectionX(float grdx)
54 	{
55 		if(grdx == 0.0) return;
56 		fprintf(mFile,"\tsetAttr \".grdi.grdx\" %f;\n", grdx);
57 	}
setGravityDirectionY(float grdy)58 	void setGravityDirectionY(float grdy)
59 	{
60 		if(grdy == -1.0) return;
61 		fprintf(mFile,"\tsetAttr \".grdi.grdy\" %f;\n", grdy);
62 	}
setGravityDirectionZ(float grdz)63 	void setGravityDirectionZ(float grdz)
64 	{
65 		if(grdz == 0.0) return;
66 		fprintf(mFile,"\tsetAttr \".grdi.grdz\" %f;\n", grdz);
67 	}
setAirDensity(float ady)68 	void setAirDensity(float ady)
69 	{
70 		if(ady == 1.0) return;
71 		fprintf(mFile,"\tsetAttr \".ady\" %f;\n", ady);
72 	}
setWindSpeed(float wisp)73 	void setWindSpeed(float wisp)
74 	{
75 		if(wisp == 0.0) return;
76 		fprintf(mFile,"\tsetAttr \".wisp\" %f;\n", wisp);
77 	}
setWindDirection(const float3 & widi)78 	void setWindDirection(const float3& widi)
79 	{
80 		fprintf(mFile,"\tsetAttr \".widi\" -type \"float3\" ");
81 		widi.write(mFile);
82 		fprintf(mFile,";\n");
83 	}
setWindDirectionX(float widx)84 	void setWindDirectionX(float widx)
85 	{
86 		if(widx == 1.0) return;
87 		fprintf(mFile,"\tsetAttr \".widi.widx\" %f;\n", widx);
88 	}
setWindDirectionY(float widy)89 	void setWindDirectionY(float widy)
90 	{
91 		if(widy == 0.0) return;
92 		fprintf(mFile,"\tsetAttr \".widi.widy\" %f;\n", widy);
93 	}
setWindDirectionZ(float widz)94 	void setWindDirectionZ(float widz)
95 	{
96 		if(widz == 0.0) return;
97 		fprintf(mFile,"\tsetAttr \".widi.widz\" %f;\n", widz);
98 	}
setWindNoise(float wnoi)99 	void setWindNoise(float wnoi)
100 	{
101 		if(wnoi == 0.0) return;
102 		fprintf(mFile,"\tsetAttr \".wnoi\" %f;\n", wnoi);
103 	}
setCollisionLayerRange(float clra)104 	void setCollisionLayerRange(float clra)
105 	{
106 		if(clra == 4.0) return;
107 		fprintf(mFile,"\tsetAttr \".clra\" %f;\n", clra);
108 	}
setCollisionSoftness(float clso)109 	void setCollisionSoftness(float clso)
110 	{
111 		if(clso == 0.0) return;
112 		fprintf(mFile,"\tsetAttr \".clso\" %f;\n", clso);
113 	}
setUsePlane(bool nupl)114 	void setUsePlane(bool nupl)
115 	{
116 		if(nupl == false) return;
117 		fprintf(mFile,"\tsetAttr \".nupl\" %i;\n", nupl);
118 	}
setPlaneOrigin(const float3 & npor)119 	void setPlaneOrigin(const float3& npor)
120 	{
121 		fprintf(mFile,"\tsetAttr \".npor\" -type \"float3\" ");
122 		npor.write(mFile);
123 		fprintf(mFile,";\n");
124 	}
setPlaneOriginX(float npox)125 	void setPlaneOriginX(float npox)
126 	{
127 		if(npox == 0.0) return;
128 		fprintf(mFile,"\tsetAttr \".npor.npox\" %f;\n", npox);
129 	}
setPlaneOriginY(float npoy)130 	void setPlaneOriginY(float npoy)
131 	{
132 		if(npoy == 0.0) return;
133 		fprintf(mFile,"\tsetAttr \".npor.npoy\" %f;\n", npoy);
134 	}
setPlaneOriginZ(float npoz)135 	void setPlaneOriginZ(float npoz)
136 	{
137 		if(npoz == 0.0) return;
138 		fprintf(mFile,"\tsetAttr \".npor.npoz\" %f;\n", npoz);
139 	}
setPlaneNormal(const float3 & npun)140 	void setPlaneNormal(const float3& npun)
141 	{
142 		fprintf(mFile,"\tsetAttr \".npun\" -type \"float3\" ");
143 		npun.write(mFile);
144 		fprintf(mFile,";\n");
145 	}
setPlaneNormalX(float npnx)146 	void setPlaneNormalX(float npnx)
147 	{
148 		if(npnx == 0.0) return;
149 		fprintf(mFile,"\tsetAttr \".npun.npnx\" %f;\n", npnx);
150 	}
setPlaneNormalY(float npny)151 	void setPlaneNormalY(float npny)
152 	{
153 		if(npny == 1.0) return;
154 		fprintf(mFile,"\tsetAttr \".npun.npny\" %f;\n", npny);
155 	}
setPlaneNormalZ(float npnz)156 	void setPlaneNormalZ(float npnz)
157 	{
158 		if(npnz == 0.0) return;
159 		fprintf(mFile,"\tsetAttr \".npun.npnz\" %f;\n", npnz);
160 	}
setPlaneBounce(float npbc)161 	void setPlaneBounce(float npbc)
162 	{
163 		if(npbc == 0.0) return;
164 		fprintf(mFile,"\tsetAttr \".npbc\" %f;\n", npbc);
165 	}
setPlaneFriction(float npfr)166 	void setPlaneFriction(float npfr)
167 	{
168 		if(npfr == 0.1) return;
169 		fprintf(mFile,"\tsetAttr \".npfr\" %f;\n", npfr);
170 	}
setSubSteps(int sstp)171 	void setSubSteps(int sstp)
172 	{
173 		if(sstp == 3) return;
174 		fprintf(mFile,"\tsetAttr \".sstp\" %i;\n", sstp);
175 	}
setMaxCollisionIterations(int mcit)176 	void setMaxCollisionIterations(int mcit)
177 	{
178 		if(mcit == 4) return;
179 		fprintf(mFile,"\tsetAttr \".mcit\" %i;\n", mcit);
180 	}
setCollisionFlag(unsigned int cofl)181 	void setCollisionFlag(unsigned int cofl)
182 	{
183 		if(cofl == 4) return;
184 		fprintf(mFile,"\tsetAttr \".cofl\" %i;\n", cofl);
185 	}
setSelfCollisionFlag(unsigned int scfl)186 	void setSelfCollisionFlag(unsigned int scfl)
187 	{
188 		if(scfl == 1) return;
189 		fprintf(mFile,"\tsetAttr \".scfl\" %i;\n", scfl);
190 	}
setTimeScale(float tisc)191 	void setTimeScale(float tisc)
192 	{
193 		if(tisc == 1.0) return;
194 		fprintf(mFile,"\tsetAttr \".tisc\" %f;\n", tisc);
195 	}
setSpaceScale(float spsc)196 	void setSpaceScale(float spsc)
197 	{
198 		if(spsc == 1.0) return;
199 		fprintf(mFile,"\tsetAttr \".spsc\" %f;\n", spsc);
200 	}
getInputStart(size_t is_i)201 	void getInputStart(size_t is_i)const
202 	{
203 		fprintf(mFile,"\"%s.is[%i]\"",mName.c_str(),is_i);
204 	}
getInputStart()205 	void getInputStart()const
206 	{
207 
208 		fprintf(mFile,"\"%s.is\"",mName.c_str());
209 	}
getInputCurrent(size_t ic_i)210 	void getInputCurrent(size_t ic_i)const
211 	{
212 		fprintf(mFile,"\"%s.ic[%i]\"",mName.c_str(),ic_i);
213 	}
getInputCurrent()214 	void getInputCurrent()const
215 	{
216 
217 		fprintf(mFile,"\"%s.ic\"",mName.c_str());
218 	}
getInputActive(size_t niao_i)219 	void getInputActive(size_t niao_i)const
220 	{
221 		fprintf(mFile,"\"%s.niao[%i]\"",mName.c_str(),niao_i);
222 	}
getInputActive()223 	void getInputActive()const
224 	{
225 
226 		fprintf(mFile,"\"%s.niao\"",mName.c_str());
227 	}
getInputPassive(size_t nipo_i)228 	void getInputPassive(size_t nipo_i)const
229 	{
230 		fprintf(mFile,"\"%s.nipo[%i]\"",mName.c_str(),nipo_i);
231 	}
getInputPassive()232 	void getInputPassive()const
233 	{
234 
235 		fprintf(mFile,"\"%s.nipo\"",mName.c_str());
236 	}
getInputActiveStart(size_t nias_i)237 	void getInputActiveStart(size_t nias_i)const
238 	{
239 		fprintf(mFile,"\"%s.nias[%i]\"",mName.c_str(),nias_i);
240 	}
getInputActiveStart()241 	void getInputActiveStart()const
242 	{
243 
244 		fprintf(mFile,"\"%s.nias\"",mName.c_str());
245 	}
getInputPassiveStart(size_t nips_i)246 	void getInputPassiveStart(size_t nips_i)const
247 	{
248 		fprintf(mFile,"\"%s.nips[%i]\"",mName.c_str(),nips_i);
249 	}
getInputPassiveStart()250 	void getInputPassiveStart()const
251 	{
252 
253 		fprintf(mFile,"\"%s.nips\"",mName.c_str());
254 	}
getOutputObjects(size_t noao_i)255 	void getOutputObjects(size_t noao_i)const
256 	{
257 		fprintf(mFile,"\"%s.noao[%i]\"",mName.c_str(),noao_i);
258 	}
getOutputObjects()259 	void getOutputObjects()const
260 	{
261 
262 		fprintf(mFile,"\"%s.noao\"",mName.c_str());
263 	}
getCurrentTime()264 	void getCurrentTime()const
265 	{
266 		fprintf(mFile,"\"%s.cti\"",mName.c_str());
267 	}
getStartTime()268 	void getStartTime()const
269 	{
270 		fprintf(mFile,"\"%s.sti\"",mName.c_str());
271 	}
getStartFrame()272 	void getStartFrame()const
273 	{
274 		fprintf(mFile,"\"%s.stf\"",mName.c_str());
275 	}
getEnable()276 	void getEnable()const
277 	{
278 		fprintf(mFile,"\"%s.ena\"",mName.c_str());
279 	}
getGravity()280 	void getGravity()const
281 	{
282 		fprintf(mFile,"\"%s.grty\"",mName.c_str());
283 	}
getGravityDirection()284 	void getGravityDirection()const
285 	{
286 		fprintf(mFile,"\"%s.grdi\"",mName.c_str());
287 	}
getGravityDirectionX()288 	void getGravityDirectionX()const
289 	{
290 		fprintf(mFile,"\"%s.grdi.grdx\"",mName.c_str());
291 	}
getGravityDirectionY()292 	void getGravityDirectionY()const
293 	{
294 		fprintf(mFile,"\"%s.grdi.grdy\"",mName.c_str());
295 	}
getGravityDirectionZ()296 	void getGravityDirectionZ()const
297 	{
298 		fprintf(mFile,"\"%s.grdi.grdz\"",mName.c_str());
299 	}
getAirDensity()300 	void getAirDensity()const
301 	{
302 		fprintf(mFile,"\"%s.ady\"",mName.c_str());
303 	}
getWindSpeed()304 	void getWindSpeed()const
305 	{
306 		fprintf(mFile,"\"%s.wisp\"",mName.c_str());
307 	}
getWindDirection()308 	void getWindDirection()const
309 	{
310 		fprintf(mFile,"\"%s.widi\"",mName.c_str());
311 	}
getWindDirectionX()312 	void getWindDirectionX()const
313 	{
314 		fprintf(mFile,"\"%s.widi.widx\"",mName.c_str());
315 	}
getWindDirectionY()316 	void getWindDirectionY()const
317 	{
318 		fprintf(mFile,"\"%s.widi.widy\"",mName.c_str());
319 	}
getWindDirectionZ()320 	void getWindDirectionZ()const
321 	{
322 		fprintf(mFile,"\"%s.widi.widz\"",mName.c_str());
323 	}
getWindNoise()324 	void getWindNoise()const
325 	{
326 		fprintf(mFile,"\"%s.wnoi\"",mName.c_str());
327 	}
getCollisionLayerRange()328 	void getCollisionLayerRange()const
329 	{
330 		fprintf(mFile,"\"%s.clra\"",mName.c_str());
331 	}
getCollisionSoftness()332 	void getCollisionSoftness()const
333 	{
334 		fprintf(mFile,"\"%s.clso\"",mName.c_str());
335 	}
getUsePlane()336 	void getUsePlane()const
337 	{
338 		fprintf(mFile,"\"%s.nupl\"",mName.c_str());
339 	}
getPlaneOrigin()340 	void getPlaneOrigin()const
341 	{
342 		fprintf(mFile,"\"%s.npor\"",mName.c_str());
343 	}
getPlaneOriginX()344 	void getPlaneOriginX()const
345 	{
346 		fprintf(mFile,"\"%s.npor.npox\"",mName.c_str());
347 	}
getPlaneOriginY()348 	void getPlaneOriginY()const
349 	{
350 		fprintf(mFile,"\"%s.npor.npoy\"",mName.c_str());
351 	}
getPlaneOriginZ()352 	void getPlaneOriginZ()const
353 	{
354 		fprintf(mFile,"\"%s.npor.npoz\"",mName.c_str());
355 	}
getPlaneNormal()356 	void getPlaneNormal()const
357 	{
358 		fprintf(mFile,"\"%s.npun\"",mName.c_str());
359 	}
getPlaneNormalX()360 	void getPlaneNormalX()const
361 	{
362 		fprintf(mFile,"\"%s.npun.npnx\"",mName.c_str());
363 	}
getPlaneNormalY()364 	void getPlaneNormalY()const
365 	{
366 		fprintf(mFile,"\"%s.npun.npny\"",mName.c_str());
367 	}
getPlaneNormalZ()368 	void getPlaneNormalZ()const
369 	{
370 		fprintf(mFile,"\"%s.npun.npnz\"",mName.c_str());
371 	}
getPlaneBounce()372 	void getPlaneBounce()const
373 	{
374 		fprintf(mFile,"\"%s.npbc\"",mName.c_str());
375 	}
getPlaneFriction()376 	void getPlaneFriction()const
377 	{
378 		fprintf(mFile,"\"%s.npfr\"",mName.c_str());
379 	}
getSubSteps()380 	void getSubSteps()const
381 	{
382 		fprintf(mFile,"\"%s.sstp\"",mName.c_str());
383 	}
getMaxCollisionIterations()384 	void getMaxCollisionIterations()const
385 	{
386 		fprintf(mFile,"\"%s.mcit\"",mName.c_str());
387 	}
getCollisionFlag()388 	void getCollisionFlag()const
389 	{
390 		fprintf(mFile,"\"%s.cofl\"",mName.c_str());
391 	}
getSelfCollisionFlag()392 	void getSelfCollisionFlag()const
393 	{
394 		fprintf(mFile,"\"%s.scfl\"",mName.c_str());
395 	}
getTimeScale()396 	void getTimeScale()const
397 	{
398 		fprintf(mFile,"\"%s.tisc\"",mName.c_str());
399 	}
getSpaceScale()400 	void getSpaceScale()const
401 	{
402 		fprintf(mFile,"\"%s.spsc\"",mName.c_str());
403 	}
404 protected:
405 	Nucleus(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true)
DependNode(file,name,parent,nodeType,shared,create)406 		:DependNode(file, name, parent, nodeType, shared, create) {}
407 
408 };
409 }//namespace MayaDM
410 #endif//__MayaDM_NUCLEUS_H__
411