UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

116 lines (115 loc) 5.28 kB
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 { [SerializedVariableType.Box3]: { min: Number3; max: Number3; }; [SerializedVariableType.Color]: Number3; [SerializedVariableType.Euler]: EulerSerialized; [SerializedVariableType.Matrix4]: Number16; [SerializedVariableType.Plane]: { normal: Number3; constant: number; }; [SerializedVariableType.Quaternion]: Number4; [SerializedVariableType.Ray]: { origin: Number3; direction: Number3; }; [SerializedVariableType.Sphere]: { center: Number3; radius: number; }; [SerializedVariableType.Vector2]: Number2; [SerializedVariableType.Vector3]: Number3; [SerializedVariableType.Vector4]: Number4; [SerializedVariableType.boolean_Array]: boolean[]; [SerializedVariableType.number_Array]: number[]; [SerializedVariableType.string_Array]: string[]; [SerializedVariableType.Color_Array]: Number3[]; [SerializedVariableType.Euler_Array]: EulerSerialized[]; [SerializedVariableType.Matrix4_Array]: Number16[]; [SerializedVariableType.Quaternion_Array]: Number4[]; [SerializedVariableType.Vector2_Array]: Number2[]; [SerializedVariableType.Vector3_Array]: Number3[]; [SerializedVariableType.Vector4_Array]: Number4[]; } interface VariableByType { [SerializedVariableType.Box3]: Box3; [SerializedVariableType.Color]: Color; [SerializedVariableType.Euler]: Euler; [SerializedVariableType.Matrix4]: Matrix4; [SerializedVariableType.Plane]: Plane; [SerializedVariableType.Quaternion]: Quaternion; [SerializedVariableType.Ray]: Ray; [SerializedVariableType.Sphere]: Sphere; [SerializedVariableType.Vector2]: Vector2; [SerializedVariableType.Vector3]: Vector3; [SerializedVariableType.Vector4]: Vector4; [SerializedVariableType.boolean_Array]: PrimitiveArray<boolean>; [SerializedVariableType.number_Array]: PrimitiveArray<number>; [SerializedVariableType.string_Array]: PrimitiveArray<string>; [SerializedVariableType.Color_Array]: VectorArray<Color>; [SerializedVariableType.Euler_Array]: VectorArray<Euler>; [SerializedVariableType.Matrix4_Array]: VectorArray<Matrix4>; [SerializedVariableType.Quaternion_Array]: VectorArray<Quaternion>; [SerializedVariableType.Vector2_Array]: VectorArray<Vector2>; [SerializedVariableType.Vector3_Array]: VectorArray<Vector3>; [SerializedVariableType.Vector4_Array]: 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 {};