sawine@28: function Node(position, rotation, geometry) sawine@28: { sawine@28: this.pos = position; sawine@28: this.rot = rotation; sawine@28: this.geometry = geometry; sawine@28: this.children = []; sawine@28: } sawine@28: Node.prototype.update = function(time) sawine@28: { sawine@28: // this.right = [1, 0, 0]; sawine@28: // this.up = [0, 1, 0]; sawine@28: // this.target = [0, 0, -1]; sawine@28: // var x = vec3.dot([1, 0, 0], this.pos); sawine@28: // var y = vec3.dot([0, 1, 0], this.pos); sawine@28: // var z = vec3.dot([0, 0, -1], this.pos); sawine@28: // this.matrix = mat4.create([this.right[0], this.up[0], -this.target[0], 0, sawine@28: // this.right[1], this.up[1], -this.target[1], 0, sawine@28: // this.right[2], this.up[2], -this.target[2], 0, sawine@28: // -x, -y, z, 1]); sawine@28: for (var id in this.children) this.children[id].update(time); sawine@28: } sawine@28: sawine@35: function CubeVbo(size, context) sawine@24: { sawine@24: var gl = context.gl; sawine@28: this.size = size || 1; sawine@24: this.positionBuffer = gl.createBuffer(); sawine@24: gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); sawine@24: var vertices = [ sawine@24: // Front face sawine@24: -1.0, -1.0, 1.0, sawine@24: 1.0, -1.0, 1.0, sawine@24: 1.0, 1.0, 1.0, sawine@24: -1.0, 1.0, 1.0, sawine@24: sawine@24: // Back face sawine@24: -1.0, -1.0, -1.0, sawine@24: -1.0, 1.0, -1.0, sawine@24: 1.0, 1.0, -1.0, sawine@24: 1.0, -1.0, -1.0, sawine@24: sawine@24: // Top face sawine@24: -1.0, 1.0, -1.0, sawine@24: -1.0, 1.0, 1.0, sawine@24: 1.0, 1.0, 1.0, sawine@24: 1.0, 1.0, -1.0, sawine@24: sawine@24: // Bottom face sawine@24: -1.0, -1.0, -1.0, sawine@24: 1.0, -1.0, -1.0, sawine@24: 1.0, -1.0, 1.0, sawine@24: -1.0, -1.0, 1.0, sawine@24: sawine@24: // Right face sawine@24: 1.0, -1.0, -1.0, sawine@24: 1.0, 1.0, -1.0, sawine@24: 1.0, 1.0, 1.0, sawine@24: 1.0, -1.0, 1.0, sawine@24: sawine@24: // Left face sawine@24: -1.0, -1.0, -1.0, sawine@24: -1.0, -1.0, 1.0, sawine@24: -1.0, 1.0, 1.0, sawine@24: -1.0, 1.0, -1.0]; sawine@24: gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); sawine@24: this.positionBuffer.itemSize = 3; sawine@24: this.positionBuffer.numItems = 24; sawine@24: sawine@25: this.normalBuffer = gl.createBuffer(); sawine@25: gl.bindBuffer(gl.ARRAY_BUFFER, this.normalBuffer); sawine@25: var normals = [// font face sawine@25: 0.0, 0.0, 1.0, sawine@25: 0.0, 0.0, 1.0, sawine@25: 0.0, 0.0, 1.0, sawine@25: 0.0, 0.0, 1.0, sawine@25: // back face sawine@25: 0.0, 0.0, -1.0, sawine@25: 0.0, 0.0, -1.0, sawine@25: 0.0, 0.0, -1.0, sawine@25: 0.0, 0.0, -1.0, sawine@25: // top face sawine@25: 0.0, 1.0, 0.0, sawine@25: 0.0, 1.0, 0.0, sawine@25: 0.0, 1.0, 0.0, sawine@25: 0.0, 1.0, 0.0, sawine@25: // bottom face sawine@25: 0.0, -1.0, 0.0, sawine@25: 0.0, -1.0, 0.0, sawine@25: 0.0, -1.0, 0.0, sawine@25: 0.0, -1.0, 0.0, sawine@25: // right face sawine@25: 1.0, 0.0, 0.0, sawine@25: 1.0, 0.0, 0.0, sawine@25: 1.0, 0.0, 0.0, sawine@25: 1.0, 0.0, 0.0, sawine@25: // left face sawine@25: -1.0, 0.0, 0.0, sawine@25: -1.0, 0.0, 0.0, sawine@25: -1.0, 0.0, 0.0, sawine@25: -1.0, 0.0, 0.0]; sawine@25: gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(normals), gl.STATIC_DRAW); sawine@25: this.normalBuffer.itemSize = 3; sawine@25: this.normalBuffer.numItems = 24; sawine@25: sawine@24: this.colourBuffer = gl.createBuffer(); sawine@24: gl.bindBuffer(gl.ARRAY_BUFFER, this.colourBuffer); sawine@24: var alpha = 1.0; sawine@25: var uni = [1.0, 1.0, 1.0, alpha]; sawine@25: var colours = [[0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha]]; sawine@24: var unpackedColours = []; sawine@24: for (var i in colours) sawine@24: { sawine@25: var colour = uni;//colours[i]; sawine@24: for (var j = 0; j < 4; j++) sawine@24: { sawine@24: unpackedColours = unpackedColours.concat(colour); sawine@24: } sawine@24: //colours = colours.concat([0.5, 0.5, 1.0, 1.0]); sawine@24: } sawine@24: gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(unpackedColours), gl.STATIC_DRAW); sawine@24: this.colourBuffer.itemSize = 4; sawine@24: this.colourBuffer.numItems = 24; sawine@24: sawine@24: this.indexBuffer = gl.createBuffer(); sawine@24: gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); sawine@24: var indices = [0, 1, 2, 0, 2, 3, sawine@24: 4, 5, 6, 4, 6, 7, sawine@24: 8, 9, 10, 8, 10, 11, sawine@24: 12, 13, 14, 12, 14, 15, sawine@24: 16, 17, 18, 16, 18, 19, sawine@24: 20, 21, 22, 20, 22, 23]; sawine@24: gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW); sawine@24: this.indexBuffer.itemSize = 1; sawine@24: this.indexBuffer.numItems = 36; sawine@35: } sawine@35: sawine@35: var id = 0; sawine@35: function Cube(vbo) sawine@35: { sawine@35: this.id = id++; sawine@35: this.vbo = vbo; sawine@24: }