Skip to content

Commit 0c81e2b

Browse files
authored
Export ClearableObjectPool and ReturnableObjectPool from utils (#2154)
* feat: export utils
1 parent 43e20d5 commit 0c81e2b

File tree

5 files changed

+22
-0
lines changed

5 files changed

+22
-0
lines changed

packages/core/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export { Downsampling } from "./enums/Downsampling";
4040
export { ColorSpace } from "./enums/ColorSpace";
4141
export { BackgroundTextureFillMode } from "./enums/BackgroundTextureFillMode";
4242
export { XRManager } from "./xr/XRManager";
43+
export * from "./utils/index";
4344
export * from "./input/index";
4445
export * from "./lighting/index";
4546
export * from "./shadow/index";

packages/core/src/utils/ClearableObjectPool.ts

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ export class ClearableObjectPool<T extends IPoolElement> extends ObjectPool<T> {
1111
this._elements = [];
1212
}
1313

14+
/**
15+
* Get an object.
16+
*/
1417
get(): T {
1518
const { _usedElementCount: usedElementCount, _elements: elements } = this;
1619
this._usedElementCount++;
@@ -23,6 +26,9 @@ export class ClearableObjectPool<T extends IPoolElement> extends ObjectPool<T> {
2326
}
2427
}
2528

29+
/**
30+
* Clear used object count to 0, not destroy any object, just change index.
31+
*/
2632
clear(): void {
2733
this._usedElementCount = 0;
2834
}

packages/core/src/utils/ObjectPool.ts

+6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ export abstract class ObjectPool<T extends IPoolElement> {
1717
abstract get(): T;
1818
}
1919

20+
/**
21+
* The basic interface for Object Pool's element.
22+
*/
2023
export interface IPoolElement {
24+
/**
25+
* Called when the object need be release.
26+
*/
2127
dispose?(): void;
2228
}

packages/core/src/utils/ReturnableObjectPool.ts

+6
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,19 @@ export class ReturnableObjectPool<T extends IPoolElement> extends ObjectPool<T>
1515
}
1616
}
1717

18+
/**
19+
* Get an object from the pool.
20+
*/
1821
get(): T {
1922
if (this._lastElementIndex < 0) {
2023
return new this._type();
2124
}
2225
return this._elements[this._lastElementIndex--];
2326
}
2427

28+
/**
29+
* Return an object to the pool.
30+
*/
2531
return(element: T): void {
2632
this._elements[++this._lastElementIndex] = element;
2733
}

packages/core/src/utils/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export { ClearableObjectPool } from "./ClearableObjectPool";
2+
export type { IPoolElement } from "./ObjectPool";
3+
export { ReturnableObjectPool } from "./ReturnableObjectPool";

0 commit comments

Comments
 (0)