UNPKG

@polygonjs/polygonjs

Version:

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

42 lines (41 loc) 1.6 kB
"use strict"; import { BaseSopOperation } from "./_Base"; import { InputCloneMode } from "../../../engine/poly/InputCloneMode"; import { ThreejsCoreObject } from "../../../core/geometry/modules/three/ThreejsCoreObject"; import { CameraAttribute } from "../../../core/camera/CoreCamera"; import { CameraSopNodeType } from "../../poly/NodeContext"; import { CameraFrameMode, CAMERA_FRAME_MODES } from "../../../core/camera/CoreCameraFrameMode"; import { CoreMask } from "../../../core/geometry/Mask"; const _CameraFrameModeSopOperation = class extends BaseSopOperation { static type() { return CameraSopNodeType.FRAME_MODE; } cook(inputCoreGroups, params) { const coreGroup = inputCoreGroups[0]; const objects = CoreMask.filterObjects(coreGroup, { group: params.group }); if (this._node) { _CameraFrameModeSopOperation.updateObject({ objects, params }); } return coreGroup; } static updateObject(options) { const { objects, params } = options; for (let object of objects) { ThreejsCoreObject.addAttribute(object, CameraAttribute.FRAME_MODE, params.frameMode); ThreejsCoreObject.addAttribute( object, CameraAttribute.FRAME_MODE_EXPECTED_ASPECT_RATIO, params.expectedAspectRatio ); } } }; export let CameraFrameModeSopOperation = _CameraFrameModeSopOperation; CameraFrameModeSopOperation.DEFAULT_PARAMS = { group: "", frameMode: CAMERA_FRAME_MODES.indexOf(CameraFrameMode.DEFAULT), expectedAspectRatio: 16 / 9 }; CameraFrameModeSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;