Mercurial > hg > Members > e085711
view webGL/dandy/resources/Character.js @ 4:7f615f5f5220
upload javascript file
author | NOBUYASU Oshiro |
---|---|
date | Mon, 14 Jun 2010 15:01:02 +0900 |
parents | 10344afb38a6 |
children | 881478004f18 |
line wrap: on
line source
active_chara_list = new Object(); active_chara_list.enemy = []; function loadXml(gl,url) { gl.chara = new Object(); var xmlChara = new Object(); xmlChara = parsePanel(url); for (var name in xmlChara) { gl.chara[name] = makeXmlObj(gl, xmlChara[name]); gl.chara[name].texture = loadImageTexture(gl, xmlChara[name].image); } } function Character() { this.x=0; this.y=0; this.dx=0; this.dy=0; this.vit=0; this.score=0; this.dt1=0; this.dt2=0; this.charano=0; this.tama=0; this.f=false; this.s=0; this.state=0; this.collision=0; this.next=0; this.prev=0; this.image=new Object(); this.texture=new Object(); return this; } function Putenemy(charano, x, y, vx, vy, chara_state) { var q = new Character(); // q.collision = atari; q.x = x; q.y = y; q.vx = vx; q.vy = vy; // q.tama = tf; // q.vit = enemystate[charano].p; // q.score = enemystate[charano].sc; // q.s = 0; q.f = true; loadState(chara_state, q); loadImage(charano, q); active_chara_list.enemy.push(q); } chara_state0 = function character_state0( q ) { q.x += q.vx; q.y += q.vy; q.state = chara_state0; return q; } chara_state1 = function character_state1( q ) { q.x -= q.vx; q.y -= q.vy; q.state = chara_state1; return q; } function loadState(charano, q) { if(charano == 0) q.state = chara_state0; if(charano == 1) q.state = chara_state1; if(charano == 3) q.state = chara_state1; if(charano == 4) q.state = chara_state1; } function loadImage(charano, q) { if(charano == 0) { q.image = enemy[0]; q.texture = enemy[0].texture; } if(charano == 1) { q.image = enemy[1]; q.texture = enemy[1].texture; } if(charano == 2) { q.image = enemy[2]; q.texture = enemy[2].texture; } if(charano == 3) { q.image = enemy[3]; q.texture = enemy[3].texture; } } function PutSprite( ctx, glObj) { // setup VBOs ctx.enableVertexAttribArray(0); ctx.enableVertexAttribArray(1); ctx.enableVertexAttribArray(2); ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.image.vertexObject); ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0); ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.image.normalObject); ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0); ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.image.texCoordObject); ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0); ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, glObj.image.indexObject); // generate the model-view matrix var mvMatrix = new CanvasMatrix4(); mvMatrix.scale(1, 1, 1); mvMatrix.translate(0,0,0); mvMatrix.rotate(180, 0,0,1); 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, glObj.texture); ctx.drawElements(ctx.TRIANGLES, glObj.image.numIndices, ctx.UNSIGNED_SHORT, 0); } function obj_draw( ctx ) { for(var i = 0; Boolean(active_chara_list.enemy[i]) ; i++) { if(active_chara_list.enemy[i].f == true) { PutSprite(ctx,active_chara_list.enemy[i]); } } }