54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
|
/**
|
||
|
* 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;
|