@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
191 lines • 4.94 kB
TypeScript
export class TopoMesh {
/**
*
* @type {TopoVertex[]}
*/
vertices: TopoVertex[];
/**
*
* @type {Set<TopoEdge>}
* @private
*/
private __edges;
/**
*
* @type {Set<TopoTriangle>}
* @private
*/
private __faces;
/**
* Approximation of memory footprint of this object
* NOTE: this is highly speculative and will differ from reality depending on VM running the code as well as many other factors
* @return {number}
*/
get byteSize(): number;
/**
*
* @returns {Set<TopoEdge>}
*/
getEdges(): Set<TopoEdge>;
/**
*
* @returns {Set<TopoTriangle>}
*/
getFaces(): Set<TopoTriangle>;
/**
*
* @param {number} index
* @return {undefined|TopoTriangle}
*/
getFaceByIndex(index: number): undefined | TopoTriangle;
/**
*
* @param {function(reason:string)} [error_consumer]
* @returns {boolean}
*/
validate(error_consumer?: typeof noop): boolean;
clone(): TopoMesh;
/**
*
* @returns {Map<number, TopoVertex>}
*/
buildVertexMapping(): Map<number, TopoVertex>;
/**
*
* @param {TopoMesh} other
* @param {Map<number, TopoVertex>} vertex_map
*/
_addWithVertexMap(other: TopoMesh, vertex_map: Map<number, TopoVertex>): void;
/**
* Will create a topologically matching copy of the given face in this Mesh
* @param {TopoTriangle} face
* @param {Map<number,TopoVertex>} vertex_map
*/
addFaceCopy(face: TopoTriangle, vertex_map: Map<number, TopoVertex>): void;
/**
* Ensures that face has correct edges.
* NOTE: this method is additive, it will not *NOT* remove any references
* @param {TopoTriangle} face
*/
patchFaceEdges(face: TopoTriangle): void;
/**
*
* @param {TopoMesh} other
*/
add(other: TopoMesh): void;
/**
*
* @param {TopoVertex} v
*/
addVertex(v: TopoVertex): void;
/**
*
* @param {TopoVertex} v
*/
addUniqueVertex(v: TopoVertex): void;
/**
* @deprecated use {@link tm_kill_only_vert}
* @param {TopoVertex} v
*/
removeVertex(v: TopoVertex): void;
/**
*
* @param {TopoVertex} v
* @returns {boolean}
*/
containsVertex(v: TopoVertex): boolean;
/**
*
* @param {TopoEdge} e
*/
addEdge(e: TopoEdge): void;
/**
*
* @param {TopoEdge} e
*/
addUniqueEdge(e: TopoEdge): void;
/**
* @deprecated use {@link tm_kill_only_edge}
* @param {TopoEdge} e
*/
removeEdge(e: TopoEdge): void;
/**
*
* @param {TopoEdge} e
* @returns {boolean}
*/
containsEdge(e: TopoEdge): boolean;
/**
*
* @param {TopoTriangle} f
*/
addFace(f: TopoTriangle): void;
/**
*
* @param {Iterable<TopoTriangle>} faces
*/
injectManyFaces(faces: Iterable<TopoTriangle>): void;
/**
* Add face as well as it's edges and vertices
* @param {TopoTriangle} f
*/
injectFace(f: TopoTriangle): void;
/**
* @deprecated use {@link tm_kill_only_face} instead
* @param {TopoTriangle} f
*/
removeFace(f: TopoTriangle): void;
/**
*
* @param {TopoTriangle} f
* @returns {boolean}
*/
containsFace(f: TopoTriangle): boolean;
/**
* Creates an edge between two vertices, or if one already exists - returns that
* @param {TopoVertex} a
* @param {TopoVertex} b
*
* @returns {TopoEdge} Edge connecting vertices A and B
*/
ensureEdge(a: TopoVertex, b: TopoVertex): TopoEdge;
mergeEdges(): void;
computeEdgeSquaredLengths(): void;
/**
*
* @param {Float32Array} vertices
*/
setVerticesFromArray(vertices: Float32Array): void;
/**
*
* @param {Uint16Array|Uint32Array|number[]} faces
*/
setFacesFromIndexArray(faces: Uint16Array | Uint32Array | number[]): void;
setFacedUnindexed(): void;
/**
*
* @param {Float64Array|Float32Array|number[]} vertices
* @param {Uint32Array|Uint16Array|Uint8Array|number[]} [faces]
*/
build(vertices: Float64Array | Float32Array | number[], faces?: Uint32Array | Uint16Array | Uint8Array | number[]): void;
/**
*
* @param {number} index
* @param {TopoVertex} v0
* @param {TopoVertex} v1
* @param {TopoVertex} v2
* @returns {TopoTriangle}
*/
createTriangle(index: number, v0: TopoVertex, v1: TopoVertex, v2: TopoVertex): TopoTriangle;
toString(): string;
/**
* @readonly
* @type {boolean}
*/
readonly isTopoMesh: boolean;
}
import { TopoVertex } from "./TopoVertex.js";
import { TopoEdge } from "./TopoEdge.js";
import { TopoTriangle } from "./TopoTriangle.js";
import { noop } from "../../../../function/noop.js";
//# sourceMappingURL=TopoMesh.d.ts.map