@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
116 lines (115 loc) • 5.28 kB
TypeScript
import { Box3, Color, Vector2, Vector3, Vector4, Plane, Ray, Sphere, Quaternion, Matrix4, Euler, EulerOrder } from 'three';
import { Number2, Number3, Number4, Number16 } from '../../../../../types/GlobalTypes';
import { JsConnectionPointType, PrimitiveArrayElement, VectorArrayElement } from '../../../utils/io/connections/Js';
export type RegisterableVariable = Box3 | Color | Euler | Plane | Quaternion | Matrix4 | Ray | Sphere | Vector2 | Vector3 | Vector4 | PrimitiveArray<PrimitiveArrayElement> | VectorArray<VectorArrayElement>;
export declare class PrimitiveArray<V extends PrimitiveArrayElement> {
protected _elements: V[];
readonly isPrimitiveArray = true;
constructor(_elements: V[]);
elements(): V[];
clone(): V[];
}
export declare class VectorArray<V extends VectorArrayElement> {
protected _elements: V[];
readonly isVectorArray = true;
constructor(_elements: V[]);
elements(): V[];
clone(): V[];
}
export declare function createVariable(type: JsConnectionPointType): Vector2 | Vector3 | Matrix4 | Box3 | Euler | Quaternion | Plane | Vector4 | Sphere | Color | Ray | PrimitiveArray<PrimitiveArrayElement> | VectorArray<VectorArrayElement> | null;
export declare function createPrimitiveArray<V extends PrimitiveArrayElement>(type: JsConnectionPointType): PrimitiveArray<V>;
export declare function createVectorArray<V extends VectorArrayElement>(type: JsConnectionPointType): VectorArray<V>;
export declare enum SerializedVariableType {
Box3 = "Box3",
Color = "Color",
Euler = "Euler",
Matrix4 = "Matrix4",
Plane = "Plane",
Quaternion = "Quaternion",
Ray = "Ray",
Sphere = "Sphere",
Vector2 = "Vector2",
Vector3 = "Vector3",
Vector4 = "Vector4",
boolean_Array = "boolean[]",
number_Array = "number[]",
string_Array = "string[]",
Color_Array = "Color[]",
Euler_Array = "Euler[]",
Matrix4_Array = "Matrix4[]",
Quaternion_Array = "Quaternion[]",
Vector2_Array = "Vector2[]",
Vector3_Array = "Vector3[]",
Vector4_Array = "Vector4[]"
}
interface EulerSerialized {
rotation: Number3;
rotationOrder: EulerOrder;
}
interface SerializedDataByType {
[]: {
min: Number3;
max: Number3;
};
[]: Number3;
[]: EulerSerialized;
[]: Number16;
[]: {
normal: Number3;
constant: number;
};
[]: Number4;
[]: {
origin: Number3;
direction: Number3;
};
[]: {
center: Number3;
radius: number;
};
[]: Number2;
[]: Number3;
[]: Number4;
[]: boolean[];
[]: number[];
[]: string[];
[]: Number3[];
[]: EulerSerialized[];
[]: Number16[];
[]: Number4[];
[]: Number2[];
[]: Number3[];
[]: Number4[];
}
interface VariableByType {
[]: Box3;
[]: Color;
[]: Euler;
[]: Matrix4;
[]: Plane;
[]: Quaternion;
[]: Ray;
[]: Sphere;
[]: Vector2;
[]: Vector3;
[]: Vector4;
[]: PrimitiveArray<boolean>;
[]: PrimitiveArray<number>;
[]: PrimitiveArray<string>;
[]: VectorArray<Color>;
[]: VectorArray<Euler>;
[]: VectorArray<Matrix4>;
[]: VectorArray<Quaternion>;
[]: VectorArray<Vector2>;
[]: VectorArray<Vector3>;
[]: VectorArray<Vector4>;
}
type SerializableVariable = Box3 | Color | Euler | Matrix4 | Plane | Quaternion | Ray | Sphere | Vector2 | Vector3 | Vector4;
export interface SerializedVariable<T extends SerializedVariableType> {
type: SerializedVariableType;
data: SerializedDataByType[T];
}
export declare function isVariableSerializable(variable: any): variable is SerializableVariable;
export declare function serializeVariable<T extends SerializedVariableType>(variable: VariableByType[T]): SerializedVariable<T>;
export declare function deserializeVariable<T extends SerializedVariableType>(serialized: SerializedVariable<T>): VariableByType[T];
export {};