Documentation / scene / BaseGraphNode
Abstract Class: BaseGraphNode
Defined in: libs/scene/src/utility/blueprint/node.ts:334
Abstract base class for graph nodes
Remarks
Provides common functionality for all graph node types:
- Input/output slot storage
- Error state management
- Basic validation logic
- Change event emission
Subclasses must implement:
getType(): Define output type logic- Optionally override
validate()for custom validation - Optionally override
toString()for code generation
Example
class MultiplyNode extends BaseGraphNode {
constructor() {
super();
this._inputs = [
{ id: 0, name: 'a', type: ['float', 'vec2', 'vec3'], required: true },
{ id: 1, name: 'b', type: ['float', 'vec2', 'vec3'], required: true }
];
this._outputs = [
{ id: 0, name: 'result' }
];
}
protected getType(id?: number): string {
// Return type based on input types
return this._inputs[0].inputNode?.getOutputType(0) ?? 'float';
}
toString(): string {
return `${this.getType()} result = a * b;`;
}
}Extends
Observable<{changed: []; }>
Extended by
ConstantScalarNodeConstantBooleanNodeConstantVec2NodeConstantBVec2NodeConstantVec3NodeConstantBVec3NodeConstantVec4NodeConstantBVec4NodeMakeVectorNodeSwizzleNodeCompComparisonNodeAnyConditionNodeAllConditionNodeSelectionNodeTransformNodeRotateAboutAxisNodeGenericMathNodeFunctionCallNodeFunctionInputNodeFunctionOutputNodeBaseTextureNodePannerNodeTextureSampleNodeTextureSampleGradVertexOutputNodeVertexIndexNodeInstanceIndexNodeVertexColorNodeVertexUVNodeVertexPositionNodePixelWorldPositionNodeVertexNormalNodePixelNormalNodeVertexTangentNodeVertexBinormalNodeProjectionMatrixNodeViewMatrixNodeViewProjMatrixNodeInvProjMatrixNodeInvViewProjMatrixNodeBillboardMatrixNodeElapsedTimeNodeCameraPositionNodeCameraVectorNodeSkyEnvTextureNodeCameraNearFarNodeResolveVertexPositionNodeResolveVertexNormalNodeResolveVertexTangentNodePBRBlockNodeVertexBlockNodeSpriteBlockNode
Implements
Constructors
Constructor
new BaseGraphNode():
BaseGraphNode
Defined in: libs/scene/src/utility/blueprint/node.ts:348
Creates a new BaseGraphNode instance
Returns
BaseGraphNode
Remarks
Initializes empty input/output arrays and error state. Subclasses should populate _inputs and _outputs in their constructor.
Overrides
Observable<{ changed: [] }>.constructor
Properties
_inputs
protected_inputs:GraphNodeInput[]
Defined in: libs/scene/src/utility/blueprint/node.ts:336
Internal storage for input slot definitions
_outputs
protected_outputs:GraphNodeOutput[]
Defined in: libs/scene/src/utility/blueprint/node.ts:338
Internal storage for output slot definitions
_error
protected_error:string
Defined in: libs/scene/src/utility/blueprint/node.ts:340
Internal storage for error message
Accessors
isUniform
Get Signature
get isUniform():
boolean
Defined in: libs/scene/src/utility/blueprint/node.ts:357
Whether this node contains uniform value/texture
Returns
boolean
Whether this node has uniform value
Implementation of
paramName
Get Signature
get paramName():
string
Defined in: libs/scene/src/utility/blueprint/node.ts:363
Uniform parameter name
Returns
string
Uniform parameter name
Implementation of
inputs
Get Signature
get inputs():
GraphNodeInput[]
Defined in: libs/scene/src/utility/blueprint/node.ts:380
Gets the input slot definitions array
Returns
Array of input slot definitions
Implementation of
outputs
Get Signature
get outputs():
GraphNodeOutput[]
Defined in: libs/scene/src/utility/blueprint/node.ts:384
Gets the output slot definitions array
Returns
Array of output slot definitions
Implementation of
error
Get Signature
get error():
string
Defined in: libs/scene/src/utility/blueprint/node.ts:388
Gets the current error message
Returns
string
Set Signature
set error(
str):void
Defined in: libs/scene/src/utility/blueprint/node.ts:391
Current error message, empty string if no error
Parameters
str
string
Returns
void
Current error message, empty string if no error
Implementation of
Methods
on()
on<
K>(type,listener,context?):void
Defined in: libs/base/dist/index.d.ts:594
IEventTarget.on
Type Parameters
K
K extends "changed"
Parameters
type
K
listener
EventListener<{ changed: []; }, K>
context?
unknown
Returns
void
Implementation of
Inherited from
Observable.on
once()
once<
K>(type,listener,context?):void
Defined in: libs/base/dist/index.d.ts:598
IEventTarget.once
Type Parameters
K
K extends "changed"
Parameters
type
K
listener
EventListener<{ changed: []; }, K>
context?
unknown
Returns
void
Implementation of
Inherited from
Observable.once
off()
off<
K>(type,listener?,context?):void
Defined in: libs/base/dist/index.d.ts:602
IEventTarget.off
Type Parameters
K
K extends "changed"
Parameters
type
K
listener?
EventListener<{ changed: []; }>
context?
unknown
Returns
void
Implementation of
Inherited from
Observable.off
dispatchEvent()
dispatchEvent<
K>(type, ...args):void
Defined in: libs/base/dist/index.d.ts:606
IEventTarget.dispatchEvent
Type Parameters
K
K extends "changed"
Parameters
type
K
args
...object[K]
Returns
void
Implementation of
Inherited from
Observable.dispatchEvent
getOutputType()
getOutputType(
id):string
Defined in: libs/scene/src/utility/blueprint/node.ts:376
Gets the output type for a specific output slot
Parameters
id
number
The output slot ID
Returns
string
The type name of the output
Remarks
Default implementation delegates to the abstract getType() method. Can be overridden for more complex type logic.
Implementation of
toString()
toString():
string
Defined in: libs/scene/src/utility/blueprint/node.ts:403
Generates a string representation of the node
Returns
string
Empty string by default
Remarks
Subclasses should override this to return valid shader code or a meaningful description of the node's operation.
Implementation of
check()
check():
void
Defined in: libs/scene/src/utility/blueprint/node.ts:413
Validates the node and updates error state
Returns
void
Remarks
Calls the validate() method and stores the result in _error. Emits a 'changed' event if the error state changes.
Implementation of
reset()
reset():
void
Defined in: libs/scene/src/utility/blueprint/node.ts:422
Clears the error state
Returns
void
Remarks
Sets _error to an empty string.
Implementation of
setInput()
setInput(
id,node,inputId):void
Defined in: libs/scene/src/utility/blueprint/node.ts:443
Connects an input slot to another node's output
Parameters
id
number
The input slot ID to connect
node
BaseGraphNode
The source node to connect from
inputId
number
The output slot ID of the source node
Returns
void
Throws
Error if the input slot with the given ID doesn't exist
Example
const addNode = new AddNode();
const constantNode = new ConstantNode(5.0);
// Connect constantNode's output 0 to addNode's input 0
addNode.setInput(0, constantNode, 0);getType()
abstractprotectedgetType(_id?):string
Defined in: libs/scene/src/utility/blueprint/node.ts:470
Gets the type name for a specific output slot
Parameters
_id?
number
The output slot ID (optional)
Returns
string
The type name (e.g., 'float', 'vec3', 'mat4')
Remarks
Must be implemented by subclasses to define type resolution logic. The type may depend on connected input types.
Example
protected getType(_id?: number): string {
// Return type based on first input
const inputType = this._inputs[0]?.inputNode?.getOutputType(this._inputs[0].inputId ?? 0);
return inputType ?? 'float';
}validate()
protectedvalidate():string
Defined in: libs/scene/src/utility/blueprint/node.ts:500
Validates the node's current state
Returns
string
Error message string, or empty string if valid
Remarks
Default implementation checks if all required inputs are connected. Subclasses can override to add custom validation logic like:
- Type compatibility checking
- Value range validation
- Configuration validation
Example
protected validate(): string {
const baseError = super.validate();
if (baseError) return baseError;
// Custom validation
const type1 = this._inputs[0].inputNode?.getOutputType(0);
const type2 = this._inputs[1].inputNode?.getOutputType(0);
if (type1 !== type2) {
return 'Input types must match';
}
return '';
}