|
@@ -1,5 +1,5 @@
|
|
|
module BABYLON {
|
|
|
- export class AbstractMesh extends Node implements IDisposable, ICullable {
|
|
|
+ export class AbstractMesh extends Node implements IDisposable, ICullable, IGetSetVerticesData {
|
|
|
// Statics
|
|
|
private static _BILLBOARDMODE_NONE = 0;
|
|
|
private static _BILLBOARDMODE_X = 1;
|
|
@@ -579,6 +579,73 @@
|
|
|
public getVerticesData(kind: string): number[] | Float32Array {
|
|
|
return null;
|
|
|
}
|
|
|
+ /**
|
|
|
+ * Sets the vertex data of the mesh geometry for the requested `kind`.
|
|
|
+ * If the mesh has no geometry, a new Geometry object is set to the mesh and then passed this vertex data.
|
|
|
+ * The `data` are either a numeric array either a Float32Array.
|
|
|
+ * The parameter `updatable` is passed as is to the underlying Geometry object constructor (if initianilly none) or updater.
|
|
|
+ * The parameter `stride` is an optional positive integer, it is usually automatically deducted from the `kind` (3 for positions or normals, 2 for UV, etc).
|
|
|
+ * Note that a new underlying VertexBuffer object is created each call.
|
|
|
+ * If the `kind` is the `PositionKind`, the mesh BoundingInfo is renewed, so the bounding box and sphere, and the mesh World Matrix is recomputed.
|
|
|
+ *
|
|
|
+ * Possible `kind` values :
|
|
|
+ * - BABYLON.VertexBuffer.PositionKind
|
|
|
+ * - BABYLON.VertexBuffer.UVKind
|
|
|
+ * - BABYLON.VertexBuffer.UV2Kind
|
|
|
+ * - BABYLON.VertexBuffer.UV3Kind
|
|
|
+ * - BABYLON.VertexBuffer.UV4Kind
|
|
|
+ * - BABYLON.VertexBuffer.UV5Kind
|
|
|
+ * - BABYLON.VertexBuffer.UV6Kind
|
|
|
+ * - BABYLON.VertexBuffer.ColorKind
|
|
|
+ * - BABYLON.VertexBuffer.MatricesIndicesKind
|
|
|
+ * - BABYLON.VertexBuffer.MatricesIndicesExtraKind
|
|
|
+ * - BABYLON.VertexBuffer.MatricesWeightsKind
|
|
|
+ * - BABYLON.VertexBuffer.MatricesWeightsExtraKind
|
|
|
+ *
|
|
|
+ * Returns the Mesh.
|
|
|
+ */
|
|
|
+ public setVerticesData(kind: string, data: number[] | Float32Array, updatable?: boolean, stride?: number): Mesh {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Updates the existing vertex data of the mesh geometry for the requested `kind`.
|
|
|
+ * If the mesh has no geometry, it is simply returned as it is.
|
|
|
+ * The `data` are either a numeric array either a Float32Array.
|
|
|
+ * No new underlying VertexBuffer object is created.
|
|
|
+ * If the `kind` is the `PositionKind` and if `updateExtends` is true, the mesh BoundingInfo is renewed, so the bounding box and sphere, and the mesh World Matrix is recomputed.
|
|
|
+ * If the parameter `makeItUnique` is true, a new global geometry is created from this positions and is set to the mesh.
|
|
|
+ *
|
|
|
+ * Possible `kind` values :
|
|
|
+ * - BABYLON.VertexBuffer.PositionKind
|
|
|
+ * - BABYLON.VertexBuffer.UVKind
|
|
|
+ * - BABYLON.VertexBuffer.UV2Kind
|
|
|
+ * - BABYLON.VertexBuffer.UV3Kind
|
|
|
+ * - BABYLON.VertexBuffer.UV4Kind
|
|
|
+ * - BABYLON.VertexBuffer.UV5Kind
|
|
|
+ * - BABYLON.VertexBuffer.UV6Kind
|
|
|
+ * - BABYLON.VertexBuffer.ColorKind
|
|
|
+ * - BABYLON.VertexBuffer.MatricesIndicesKind
|
|
|
+ * - BABYLON.VertexBuffer.MatricesIndicesExtraKind
|
|
|
+ * - BABYLON.VertexBuffer.MatricesWeightsKind
|
|
|
+ * - BABYLON.VertexBuffer.MatricesWeightsExtraKind
|
|
|
+ *
|
|
|
+ * Returns the Mesh.
|
|
|
+ */
|
|
|
+ public updateVerticesData(kind: string, data: number[] | Float32Array, updateExtends?: boolean, makeItUnique?: boolean): Mesh {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the mesh indices.
|
|
|
+ * Expects an array populated with integers or a typed array (Int32Array, Uint32Array, Uint16Array).
|
|
|
+ * If the mesh has no geometry, a new Geometry object is created and set to the mesh.
|
|
|
+ * This method creates a new index buffer each call.
|
|
|
+ * Returns the Mesh.
|
|
|
+ */
|
|
|
+ public setIndices(indices: IndicesArray, totalVertices?: number): Mesh {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
/** Returns false by default, used by the class Mesh.
|
|
|
* Returns a boolean
|
|
@@ -2102,6 +2169,25 @@
|
|
|
this._facetParameters = null;
|
|
|
}
|
|
|
return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Creates new normals data for the mesh.
|
|
|
+ * @param updatable.
|
|
|
+ */
|
|
|
+ public createNormals(updatable: boolean) {
|
|
|
+ var positions = this.getVerticesData(VertexBuffer.PositionKind);
|
|
|
+ var indices = this.getIndices();
|
|
|
+ var normals: number[] | Float32Array;
|
|
|
+
|
|
|
+ if (this.isVerticesDataPresent(VertexBuffer.NormalKind)) {
|
|
|
+ normals = this.getVerticesData(VertexBuffer.NormalKind);
|
|
|
+ } else {
|
|
|
+ normals = [];
|
|
|
+ }
|
|
|
+
|
|
|
+ VertexData.ComputeNormals(positions, indices, normals);
|
|
|
+ this.setVerticesData(VertexBuffer.NormalKind, normals, updatable);
|
|
|
}
|
|
|
|
|
|
}
|