UNPKG

@polygonjs/polygonjs

Version:

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

64 lines (63 loc) 2.36 kB
"use strict"; import { TypedSopNode } from "./_Base"; import { OrthographicCameraSopOperation } from "../../operations/sop/OrthographicCamera"; import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig"; import { CameraNodeType } from "../../poly/NodeContext"; import { registerOrthographicCamera } from "../../../core/camera/CoreOrthographicCamera"; import { updateCameraTransformParams } from "./utils/camera/updateCameraTransformParams"; const DEFAULT = OrthographicCameraSopOperation.DEFAULT_PARAMS; class OrthographicCameraSopParamsConfig extends NodeParamsConfig { constructor() { super(...arguments); /** @param camera view size */ this.size = ParamConfig.FLOAT(DEFAULT.size, { range: [1e-3, 2], rangeLocked: [true, false] }); /** @param camera near */ this.near = ParamConfig.FLOAT(DEFAULT.near, { range: [0, 100], rangeLocked: [true, false] }); /** @param camera far */ this.far = ParamConfig.FLOAT(DEFAULT.far, { range: [0, 100], rangeLocked: [true, false] }); /** @param camera position */ this.position = ParamConfig.VECTOR3(DEFAULT.position); /** @param camera rotation */ this.rotation = ParamConfig.VECTOR3(DEFAULT.rotation); /** @param show helper */ this.showHelper = ParamConfig.BOOLEAN(DEFAULT.showHelper); /** @param matrixAutoUpdate */ this.matrixAutoUpdate = ParamConfig.BOOLEAN(DEFAULT.matrixAutoUpdate); /** @param camera name */ this.name = ParamConfig.STRING("`$OS`"); /** @param set main camera */ this.updateTransformFromCamera = ParamConfig.BUTTON(null, { callback: (node) => { updateCameraTransformParams(node); } }); } } const ParamsConfig = new OrthographicCameraSopParamsConfig(); export class OrthographicCameraSopNode extends TypedSopNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; } static type() { return CameraNodeType.ORTHOGRAPHIC; } initializeNode() { this.io.inputs.setCount(0); } cook(inputCoreGroups) { this._operation = this._operation || new OrthographicCameraSopOperation(this._scene, this.states, this); const coreGroup = this._operation.cook(inputCoreGroups, this.pv); this.setCoreGroup(coreGroup); } } OrthographicCameraSopNode.onRegister = registerOrthographicCamera;