/** * GameLib.D3.API.Geometry.Buffer.Parametric * @param apiGeometry * @param generatorFn(u,v) => returns Vector3, u and v is values between 0 and 1 * @param slices * @param stacks * @constructor */ GameLib.D3.API.Geometry.Buffer.Parametric = function( apiGeometry, generatorFn, slices, stacks ) { if (GameLib.Utils.UndefinedOrNull(apiGeometry)) { apiGeometry = { geometryType: GameLib.D3.API.Geometry.GEOMETRY_TYPE_BUFFER_PARAMETRIC }; } if (GameLib.Utils.UndefinedOrNull(apiGeometry.geometryType)) { apiGeometry.geometryType = GameLib.D3.API.Geometry.GEOMETRY_TYPE_BUFFER_PARAMETRIC; } if (GameLib.Utils.UndefinedOrNull(generatorFn)) { generatorFn = ''; } this.generatorFn = generatorFn; if (GameLib.Utils.UndefinedOrNull(slices)) { slices = 20; } this.slices = slices; if (GameLib.Utils.UndefinedOrNull(stacks)) { stacks = 20; } this.stacks = stacks; GameLib.D3.API.Geometry.Buffer.call( this, apiGeometry, apiGeometry.attributes, apiGeometry.drawRange, apiGeometry.groups, apiGeometry.index, apiGeometry.morphAttributes ); }; GameLib.D3.API.Geometry.Buffer.Parametric.prototype = Object.create(GameLib.D3.API.Geometry.Buffer.prototype); GameLib.D3.API.Geometry.Buffer.Parametric.prototype.constructor = GameLib.D3.API.Geometry.Buffer.Parametric;