@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
147 lines • 3.41 kB
TypeScript
/**
* Binary Heap implementation that stores uin32 ID along with a floating point score value
* Very fast and compact
* Inspired by Blender's heap implementation found here: https://github.com/blender/blender/blob/594f47ecd2d5367ca936cf6fc6ec8168c2b360d0/source/blender/blenlib/intern/BLI_heap.c
*/
export class Uint32Heap {
/**
*
* @param {number} [initial_capacity] Can supply initial capacity, heap will still grow when necessary. This allows to prevent needless re-allocations when max heap size is known in advance
*/
constructor(initial_capacity?: number);
__data_buffer: ArrayBuffer;
/**
* Used to access stored IDs
* @type {Uint32Array}
* @private
*/
private __data_uint32;
/**
* Used to access stored Score values
* @type {Float32Array}
* @private
*/
private __data_float32;
/**
*
* @type {number}
* @private
*/
private __capacity;
/**
*
* @type {number}
* @private
*/
private __size;
/**
*
* @private
*/
private __capacity_grow;
/**
* @private
* @param {number} a index of an element
* @param {number} b index of an element
* @returns {boolean}
*/
private compare;
/**
* Swap two elements
* @private
* @param {number} i element index
* @param {number} j element index
*/
private swap;
/**
* @private
* @param {number} index
*/
private heap_down;
/**
* Bubble up given element into its correct position
* @private
* @param {number} index
*/
private heap_up;
/**
*
* @returns {number}
*/
get size(): number;
/**
*
* @returns {number}
*/
get capacity(): number;
/**
* Node with the lowest score
* @returns {number}
*/
get top_id(): number;
/**
*
* @returns {boolean}
*/
is_empty(): boolean;
peek_min(): number;
pop_min(): number;
/**
*
* @param {number} id
* @returns {number}
*/
find_index_by_id(id: number): number;
/**
*
* @param {number} id
* @returns {boolean}
*/
contains(id: number): boolean;
/**
* Clear out all the data, heap will be made empty
*/
clear(): void;
/**
*
* @param {number} id
* @returns {boolean}
*/
remove(id: number): boolean;
/**
*
* @param {number} index
*/
__remove_by_index(index: number): void;
/**
*
* @param {number} id
* @param {number} score
*/
update_score(id: number, score: number): void;
/**
* Update score of an element referenced directly by index, this is a fast method, but you're generally not going to know the index so in most cases it's best to use "update_score" instead
* @param {number} index
* @param {number} score
*/
__update_score_by_index(index: number, score: number): void;
/**
*
* @param {number} id
* @returns {number}
*/
get_score(id: number): number;
/**
*
* @param {number} id
* @param {number} score
*/
insert_or_update(id: number, score: number): void;
/**
*
* @param {number} id
* @param {number} score
*/
insert(id: number, score: number): void;
}
//# sourceMappingURL=Uint32Heap.d.ts.map