示例#1
0
// interface functions
Texture* MFTexture_Create(const char *pName, bool generateMipChain)
{
	MFTexture *pTexture = MFTexture_Find(pName);

	if(!pTexture)
	{
		pTexture = gTextureBank.Create();
		pTexture->refCount = 0;
	}

	pTexture->refCount++;

	return pTexture;
}
示例#2
0
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(&params);

	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");
}