MF_API MFModel* MFModel_CreateWithAnimation(const char *pFilename, const char *pAnimationFilename) { MFModel *pModel = MFModel_Create(pFilename); if(pAnimationFilename) MFAnimation_Create(pAnimationFilename, pModel); return pModel; }
Fretboard::Fretboard() { pFretboard = NULL; // create materials MFTexture *pFretTex = MFTexture_Find("frets"); if(!pFretTex) pFretTex = MFTexture_CreateBlank("frets", MFVector::one); pFrets = MFMaterial_Create("frets"); MFTexture_Release(pFretTex); int zRead = MFMaterial_GetParameterIndexFromName(pFrets, "zread"); int zWrite = MFMaterial_GetParameterIndexFromName(pFrets, "zwrite"); int additive = MFMaterial_GetParameterIndexFromName(pFrets, "additive"); pEdge = MFMaterial_Create("edge"); pBar = MFMaterial_Create("bar"); pRing = MFMaterial_Create("ring"); pColourRing[0] = MFMaterial_Create("green"); pColourRing[1] = MFMaterial_Create("red"); pColourRing[2] = MFMaterial_Create("yellow"); pColourRing[3] = MFMaterial_Create("blue"); pColourRing[4] = MFMaterial_Create("orange"); pButtonMat[0] = MFMaterial_Create("button-green"); pButtonMat[1] = MFMaterial_Create("button-red"); pButtonMat[2] = MFMaterial_Create("button-yellow"); pButtonMat[3] = MFMaterial_Create("button-blue"); pButtonMat[4] = MFMaterial_Create("button-orange"); pButtonRing[0] = MFMaterial_Create("button-green-ring"); pButtonRing[1] = MFMaterial_Create("button-red-ring"); pButtonRing[2] = MFMaterial_Create("button-yellow-ring"); pButtonRing[3] = MFMaterial_Create("button-blue-ring"); pButtonRing[4] = MFMaterial_Create("button-orange-ring"); MFParticleParameters params; params.colour = MakeVector(1, 0, 1, 1); params.force.Set(0.f, 0.f, 0.f); params.life = .3f; params.size = .15f; params.fadeDelay = 0.2f; params.rotationRate = 2.f; params.scaleRate = -.1f; params.maxActiveParticles = 1000; params.pMaterial = "Notes/sparkles"; pParticles = MFParticleSystem_Create(¶ms); MFParticleEmitterParameters emitter; emitter.position.SetTranslation(MakeVector(0, 0, 0)); emitter.startVector.Set(0, 1.f, 0); emitter.pParticleSystem = pParticles; emitter.type = MFET_Disc; emitter.behaviour = MFEB_Direction; emitter.radius = 0.25f; emitter.velocity = 3.f; emitter.velocityScatter = 1.f; emitter.directionScatter = .3f; emitter.emitRate = 100.f; pEmitter = MFParticleSystem_CreateEmitter(&emitter); MFMaterial_SetParameterI(pFrets, zRead, 0, 0); MFMaterial_SetParameterI(pFrets, zWrite, 0, 0); MFMaterial_SetParameterI(pEdge, zRead, 0, 0); MFMaterial_SetParameterI(pEdge, zWrite, 0, 0); MFMaterial_SetParameterI(pBar, zRead, 0, 0); MFMaterial_SetParameterI(pBar, zWrite, 0, 0); MFMaterial_SetParameterI(pRing, zWrite, 0, 0); for(int a=0; a<5; ++a) MFMaterial_SetParameterI(pColourRing[a], additive, 0, 1); // load models pButton = MFModel_Create("Notes/button"); }