Mercurial > hg > Game > WebGL
diff dandy/resources/bom.js @ 1:54589bb5e57d
add dandy
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 23 Feb 2012 14:51:33 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dandy/resources/bom.js Thu Feb 23 14:51:33 2012 +0900 @@ -0,0 +1,107 @@ +bomend = 0; +bchar = []; +function bcharClass() +{ + this.x = 0; + this.y = 0; + this.no = 0; + this.scale = 1.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 = 1.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 J3DIMatrix4(); + 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 J3DIMatrix4(mvMatrix); + normalMatrix.invert(); + normalMatrix.transpose(); + normalMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false); + + // construct the model-view * projection matrix + var mvpMatrix = new J3DIMatrix4(ctx.perspectiveMatrix); + mvpMatrix.multiply(mvMatrix); + mvpMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false); + + + ctx.bindTexture(ctx.TEXTURE_2D, image.texture); + ctx.drawElements(ctx.TRIANGLES, image.numIndices, ctx.UNSIGNED_SHORT, 0); +}