diff --git a/types/three/src/nodes/core/ArrayNode.d.ts b/types/three/src/nodes/core/ArrayNode.d.ts index cad558884..1b82d4de1 100644 --- a/types/three/src/nodes/core/ArrayNode.d.ts +++ b/types/three/src/nodes/core/ArrayNode.d.ts @@ -1,25 +1,33 @@ import Node from "./Node.js"; import TempNode from "./TempNode.js"; -declare class ArrayNode extends TempNode { +export interface ArrayNodeInterface { count: number; - values: Node[]; + values: Node[] | null; readonly isArrayNode: true; - - constructor(nodeType: string, count: number, values: Node[]); } +declare const ArrayNode: { + new( + nodeType: TNodeType | null, + count: number, + values?: Node[] | null, + ): ArrayNode; +}; + +type ArrayNode = TempNode & ArrayNodeInterface; + export default ArrayNode; interface ArrayFunction { - (values: Node[]): ArrayNode; - (nodeType: string, count: number): ArrayNode; + (values: Node[]): ArrayNode; + (nodeType: TNodeType, count: number): ArrayNode; } export const array: ArrayFunction; declare module "./Node.js" { - interface NodeElements { - toArray: (count: number) => ArrayNode; + interface NodeExtensions { + toArray: (count: number) => ArrayNode; } } diff --git a/types/three/src/nodes/tsl/TSLCore.d.ts b/types/three/src/nodes/tsl/TSLCore.d.ts index 61edb0228..f97faf975 100644 --- a/types/three/src/nodes/tsl/TSLCore.d.ts +++ b/types/three/src/nodes/tsl/TSLCore.d.ts @@ -5,11 +5,13 @@ import { Matrix4 } from "../../math/Matrix4.js"; import { Vector2 } from "../../math/Vector2.js"; import { Vector3 } from "../../math/Vector3.js"; import { Vector4 } from "../../math/Vector4.js"; +import ArrayNode from "../core/ArrayNode.js"; import ConstNode from "../core/ConstNode.js"; import Node, { MatType, NumOrBoolType } from "../core/Node.js"; import NodeBuilder from "../core/NodeBuilder.js"; import StackNode from "../core/StackNode.js"; import VarNode from "../core/VarNode.js"; +import ArrayElementNode from "../utils/ArrayElementNode.js"; import ConvertNode from "../utils/ConvertNode.js"; import JoinNode from "../utils/JoinNode.js"; @@ -2398,14 +2400,18 @@ declare module "../core/Node.js" { } } -export const element: (node: Node, indexNode: Node) => Node; +export const element: (node: ArrayNode, indexNode: Node | number) => ArrayElementNode; export const convert: (node: Node, types: string) => Node; export const split: (node: Node, channels?: string) => Node; +declare module "../core/ArrayNode.js" { + interface ArrayNodeInterface { + element: (indexNode: Node | number) => ArrayElementNode; + } +} + declare module "../core/Node.js" { interface NodeElements { - element: (indexNode: Node) => Node; - convert: (types: string) => Node; } } diff --git a/types/three/src/nodes/utils/ArrayElementNode.d.ts b/types/three/src/nodes/utils/ArrayElementNode.d.ts index b93aa3380..334be5ad2 100644 --- a/types/three/src/nodes/utils/ArrayElementNode.d.ts +++ b/types/three/src/nodes/utils/ArrayElementNode.d.ts @@ -1,14 +1,15 @@ +import ArrayNode from "../core/ArrayNode.js"; import Node from "../core/Node.js"; -interface ArrayElementNodeInterface { - node: Node; +interface ArrayElementNodeInterface { + node: ArrayNode; indexNode: Node; } declare const ArrayElementNode: { - new(node: Node, indexNode: Node): ArrayElementNode; + new(node: ArrayNode, indexNode: Node): ArrayElementNode; }; -type ArrayElementNode = Node & ArrayElementNodeInterface; +type ArrayElementNode = Node & ArrayElementNodeInterface; export default ArrayElementNode;