UNPKG

@polygonjs/polygonjs

Version:

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

73 lines (72 loc) 3.55 kB
"use strict"; import { BaseSopOperation } from "./_Base"; import { InputCloneMode } from "../../../engine/poly/InputCloneMode"; import { CameraNodeType } from "../../poly/NodeContext"; import { registerMapboxCamera } from "../../../core/thirdParty/Mapbox/registerMapboxCamera"; import { MapboxPerspectiveCamera } from "../../../core/thirdParty/Mapbox/MapboxPerspectiveCamera"; import { CameraAttribute } from "../../../core/camera/CoreCamera"; import { ThreejsCoreObject } from "../../../core/geometry/modules/three/ThreejsCoreObject"; import { MapboxCameraAttribute } from "../../../core/thirdParty/Mapbox/MapboxCameraAttribute"; import mapboxgl from "mapbox-gl"; import { Poly } from "../../Poly"; import { MAPBOX_TOKEN_MISSING_ERROR_MESSAGE } from "../../poly/thirdParty/Mapbox"; const _MapboxCameraSopOperation = class extends BaseSopOperation { static type() { return CameraNodeType.MAPBOX; } async cook(inputCoreGroups, params) { var _a; const camera = _MapboxCameraSopOperation.createCamera(this._node); camera.name = params.name || CameraNodeType.MAPBOX; const token = await Poly.thirdParty.mapbox().token(); if (token) { mapboxgl.accessToken = token; } else { (_a = this._node) == null ? void 0 : _a.states.error.set(MAPBOX_TOKEN_MISSING_ERROR_MESSAGE); } _MapboxCameraSopOperation.setCameraAttributes(camera, params); const objects = [camera]; return this.createCoreGroupFromObjects(objects); } static createCamera(nodeGenerator) { const camera = new MapboxPerspectiveCamera(); if (nodeGenerator) { ThreejsCoreObject.addAttribute(camera, CameraAttribute.NODE_ID, nodeGenerator.graphNodeId()); } return camera; } static setCameraAttributes(camera, params) { ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.STYLE, params.style); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.LONGITUDE, params.longitude); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.LATITUDE, params.latitude); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.ZOOM, params.zoom); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.MIN_ZOOM, params.minZoom); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.MAX_ZOOM, params.maxZoom); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.PITCH, params.pitch); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.BEARING, params.bearing); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.ALLOW_DRAG_ROTATE, params.allowDragRotate); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.ADD_ZOOM_CONTROL, params.addZoomControl); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.LAYER_BUILDINGS, params.tlayerBuildings); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.LAYER_3D, params.tlayer3D); ThreejsCoreObject.addAttribute(camera, MapboxCameraAttribute.LAYER_SKY, params.tlayerSky); } }; export let MapboxCameraSopOperation = _MapboxCameraSopOperation; MapboxCameraSopOperation.DEFAULT_PARAMS = { style: "mapbox://styles/mapbox/dark-v10", longitude: -0.07956, latitude: 51.5146, zoom: 15.55, minZoom: 0, maxZoom: 24, pitch: 60, bearing: 60.373613, allowDragRotate: true, addZoomControl: true, tlayerBuildings: false, tlayer3D: false, tlayerSky: false, name: CameraNodeType.MAPBOX }; MapboxCameraSopOperation.INPUT_CLONED_STATE = InputCloneMode.NEVER; MapboxCameraSopOperation.onRegister = registerMapboxCamera;