import Attribute from './Attribute'; import Buffer from './Buffer'; import GeometryStyle from './GeometryStyle'; import GeometryData from './GeometryData'; class Geometry { constructor(data, style) { this.style = style || new GeometryStyle(); this.data = data || new GeometryData(); this.glVertexArrayObjects = []; } addAttribute(id, buffer, size = 2, stride = 0, start = 0, normalised = false) { // check if this is a buffer! if(!buffer.data) { // its an array! buffer = new Buffer(buffer); } this.style.addAttribute(id, new Attribute(buffer.id, size, stride, start, normalised)); this.data.add(buffer.id, buffer); return this; } getAttribute(id) { return this.data[ this.style.attributes[id].buffer ]; } addIndex(buffer) { if(!buffer.data) { // its an array! buffer = new Buffer(buffer); } this.data.addIndex(buffer); return this; } destroy() { //TODO - this is wrong! for (let i = 0; i < this.buffers.length; i++) { this.buffers[i].destroy(); } this.buffers = null; this.attributes = null; for (let i = 0; i < this.glVertexArrayObjects.length; i++) { this.glVertexArrayObjects[i].destroy(); } this.glVertexArrayObjects = null; this.indexBuffer.destroy(); this.indexBuffer = null; } } export default Geometry;