view webGL/dandy/resources/bom.js @ 12:61febc94fa62

upload dandy4.html,new xmlFile
author NOBUYASU Oshiro
date Thu, 15 Jul 2010 07:08:37 +0900
parents 680b5b0cd1e4
children 4684e849866c
line wrap: on
line source

bomend = 0;
bchar = [];
function bcharClass()
{
    this.x = 0;
    this.y = 0;
    this.no = 0;
    this.scale = 2.0;
    this.flag = 0;
    this.image = new Object();
    this.texture = new Object();
    return this;
}

function Bom(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].scale = 2.0;
    bchar[i].no = 0;
    bchar[i].flag = 0;
    bomend++;
    return ;
}

function loadBomImage(charano, p)
{
    p.image = bomImage[charano];
    p.texture = bomImage[charano].texture;
    p.w = bomImage[charano].w;
    p.h = bomImage[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], bomImage[bchar[i].no]);
		bchar[i].no++;
	    }
	    /* bchar[] の中身は Character.js の celete_obj() で消す
	    if(bchar[i].no == 8){
		if(bomend == i-1 ){
		    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(glObj.scale, glObj.scale, glObj.scale);
    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);


}