lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
28 lines • 1.26 kB
JavaScript
import { Point } from "@lincode/math";
import { forceGetInstance } from "@lincode/utils";
import { INVERSE_STANDARD_FRAME } from "../../globals";
import { isNullableCallbackParam, nullableCallbackParams } from "../../collections/typeGuards";
export class NullableCallbackParam {
value;
allowInput;
constructor(value, allowInput = true) {
this.value = value;
this.allowInput = allowInput;
Object.freeze(this);
}
}
export const nullableCallbackVoidParam = new NullableCallbackParam();
export const nullableCallbackNumberParam = new NullableCallbackParam(0);
export const nullableCallbackDtParam = new NullableCallbackParam(INVERSE_STANDARD_FRAME, false);
export const nullableCallbackPtParam = Object.freeze(new Point(0, 0));
export const isNullableCallbackParamInstance = (value) => isNullableCallbackParam(value) && "value" in value;
export default class NullableCallback {
param;
constructor(param) {
this.param = param;
nullableCallbackParams.add(param);
}
}
const nullableCallbackMap = new Map();
export const nullableCallback = (value = nullableCallbackVoidParam) => forceGetInstance(nullableCallbackMap, value, NullableCallback, [value]);
//# sourceMappingURL=NullableCallback.js.map