import { BufferGeometry } from "three"; import Primitive from "./Primitive"; import { CircleParams, releaseCircleGeometry, requestCircleGeometry } from "../../pools/circleGeometryPool"; import { ConeParams, releaseConeGeometry, requestConeGeometry } from "../../pools/coneGeometryPool"; import { CylinderParams, releaseCylinderGeometry, requestCylinderGeometry } from "../../pools/cylinderGeometryPool"; import { TorusParams, releaseTorusGeometry, requestTorusGeometry } from "../../pools/torusGeometryPool"; export default abstract class PooledPrimitve extends Primitive { $releaseGeometry: typeof releaseCircleGeometry | typeof releaseConeGeometry | typeof releaseCylinderGeometry | typeof releaseTorusGeometry; $requestGeometry: typeof requestCircleGeometry | typeof requestConeGeometry | typeof requestCylinderGeometry | typeof requestTorusGeometry; constructor(geometry: BufferGeometry, $releaseGeometry: typeof releaseCircleGeometry | typeof releaseConeGeometry | typeof releaseCylinderGeometry | typeof releaseTorusGeometry, $requestGeometry: typeof requestCircleGeometry | typeof requestConeGeometry | typeof requestCylinderGeometry | typeof requestTorusGeometry); abstract $getParams(): CircleParams | ConeParams | CylinderParams | TorusParams; }