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