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