UNPKG

@polygonjs/polygonjs

Version:

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

70 lines (69 loc) 2.41 kB
"use strict"; import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig"; import { JsConnectionPoint, JsConnectionPointType } from "../utils/io/connections/Js"; import { JsType } from "../../poly/registers/nodes/types/Js"; import { BaseUserInputJsNode } from "./_BaseUserInput"; import { CoreEventEmitter, EVENT_EMITTERS, EVENT_EMITTER_PARAM_MENU_OPTIONS } from "../../../core/event/CoreEventEmitter"; import { ComputedValueJsDefinition } from "./utils/JsDefinition"; import { Poly } from "../../Poly"; import { PointerEventType } from "../../../core/event/PointerEventType"; const OUTPUT_NAME = JsConnectionPointType.RAY; class RayFromCursorJsParamsConfig extends NodeParamsConfig { constructor() { super(...arguments); /** @param set which element triggers the event */ this.element = ParamConfig.INTEGER(EVENT_EMITTERS.indexOf(CoreEventEmitter.CANVAS), { ...EVENT_EMITTER_PARAM_MENU_OPTIONS }); } } const ParamsConfig = new RayFromCursorJsParamsConfig(); export class RayFromCursorJsNode extends BaseUserInputJsNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; } static type() { return JsType.RAY_FROM_CURSOR; } // userInputEventNames() { // return ['pointermove']; // } eventData() { return [ { type: PointerEventType.pointermove, emitter: this.eventEmitter(), jsType: JsType.RAY_FROM_CURSOR }, { type: PointerEventType.touchmove, emitter: this.eventEmitter(), jsType: JsType.RAY_FROM_CURSOR } ]; } eventEmitter() { return EVENT_EMITTERS[this.pv.element]; } setEventEmitter(emitter) { this.p.element.set(EVENT_EMITTERS.indexOf(emitter)); } initializeNode() { this.io.connection_points.spare_params.setInputlessParamNames(["element"]); this.io.outputs.setNamedOutputConnectionPoints([new JsConnectionPoint(OUTPUT_NAME, JsConnectionPointType.RAY)]); } setLines(shadersCollectionController) { const out = this.jsVarName(OUTPUT_NAME); const _ray = Poly.namedFunctionsRegister.getFunction("globalsRayFromCursor", this, shadersCollectionController); shadersCollectionController.addDefinitions(this, [ new ComputedValueJsDefinition( this, shadersCollectionController, JsConnectionPointType.VECTOR2, out, _ray.asString() ) ]); } }