view webGL/dandy/resources/bom.js @ 10:a959cdca5b62

add bom.js
author NOBUYASU Oshiro
date Sat, 10 Jul 2010 16:38:23 +0900
parents
children 680b5b0cd1e4
line wrap: on
line source

bomend = 0;
bchar = [];
function bcharClass()
{
    this.x = 0;
    this.y = 0;
    this.no = 0;
    this.flag = 0;
    return this;
}

function bom2(x, y)
{
    var i;
    if ( bomend > 49) {
	bomend = 49;
	return ;
    }
    i = bomend;
    bchar[i] = new bcharClass();
    bchar[i].x = x;
    bchar[i].y = y;
    bchar[i].no = 0;
    bchar[i].flag = 0;
    loadBomImage(0, bchar[i]);
    bomend++;
    return ;
}

function loadBomImage(charano, p)
{
    p.image = bom[charano];
    p.texture = bom[charano].texture;
    p.w = bom[charano].w;
    p.h = bom[charano].h;
}

function PutBom(gl)
{
    for(var i=0; i < bomend; i++)
	{
	    if(bchar[i].no != 8) {
		count++;
		//		DefSpriteEx(30 + bchar[i].no, 8, 8);
		//		PutSpriteEx(30 + bchar[i].no, bchar[i].x+96, bchar[i].y+96, 2, 2, 1);
		//		PutSpriteEx(gl, bchar[i], bom[bchar[i].no]);
		//		PutSpriteEx(gl, bchar[i], enemy[0]);
		PutSprite(gl, bchar[i], bchar[0]);
		bchar[i].no++;
	    }
	    //	    if(bchar[i].no == 8){
	    if(bchar[i].no == 7){
		if(bonmed == i) {
		    bomend--;
		    break;
		}
		if(bomend > i) {
		    bchar[i] = bchar[bomend];
		    bomend--;
		    i--;
		}
	    }
	}
}

//function PutSpriteEx(number, x, y, scalex, scaley, angle)
function PutSpriteEx( ctx, glObj, image)
{

    // setup VBOs
    ctx.enableVertexAttribArray(0);
    ctx.enableVertexAttribArray(1);
    ctx.enableVertexAttribArray(2);
				
    ctx.bindBuffer(ctx.ARRAY_BUFFER, image.vertexObject);
    ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0);
    ctx.bindBuffer(ctx.ARRAY_BUFFER, image.normalObject);
    ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0);
    
    ctx.bindBuffer(ctx.ARRAY_BUFFER, image.texCoordObject);
    ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0);

    ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, image.indexObject);

    // generate the model-view matrix
    var mvMatrix = new CanvasMatrix4();
    mvMatrix.scale(1.0, 1.0, 1.0);
    mvMatrix.translate(glObj.x,glObj.y,10);

    // construct the normal matrix from the model-view matrix
    var normalMatrix = new CanvasMatrix4(mvMatrix);
    normalMatrix.invert();
    normalMatrix.transpose();
    ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAsWebGLFloatArray());
    
    // construct the model-view * projection matrix
    var mvpMatrix = new CanvasMatrix4(mvMatrix);
    mvpMatrix.multRight(ctx.perspectiveMatrix);
    ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvpMatrix.getAsWebGLFloatArray());
    

    ctx.bindTexture(ctx.TEXTURE_2D, image.texture);
    ctx.drawElements(ctx.TRIANGLES, image.numIndices, ctx.UNSIGNED_SHORT, 0);

}