@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
67 lines (66 loc) • 2.62 kB
JavaScript
;
import { TypedThreejsCameraObjNode, ThreejsCameraTransformParamConfig, CameraMainCameraParamConfig } from "./_BaseCamera";
import { NodeParamsConfig } from "../utils/params/ParamsConfig";
import { CameraRenderParamConfig } from "./utils/cameras/RenderController";
import { LayerParamConfig } from "./utils/LayersController";
import { TransformedParamConfig } from "./utils/TransformController";
import { CameraNodeType } from "../../poly/NodeContext";
import { CameraPostProcessParamConfig } from "./utils/cameras/PostProcessParamOptions";
import {
OrthographicCameraParamConfigMixin,
ORTHOGRAPHIC_CAMERA_DEFAULT,
registerOrthographicCamera
} from "../../../core/camera/CoreOrthographicCamera";
import { CORE_CAMERA_DEFAULT } from "../../../core/camera/CoreCamera";
import { CoreCameraFrameParamConfig } from "../../../core/camera/CoreCameraFrameMode";
import { OrthographicCameraSopOperation } from "../../operations/sop/OrthographicCamera";
class OrthographicCameraObjParamConfig extends CameraPostProcessParamConfig(
CameraRenderParamConfig(
LayerParamConfig(
CameraMainCameraParamConfig(
CoreCameraFrameParamConfig(
OrthographicCameraParamConfigMixin(
ThreejsCameraTransformParamConfig(
TransformedParamConfig(NodeParamsConfig, { matrixAutoUpdate: true })
)
)
)
)
)
)
) {
}
const ParamsConfig = new OrthographicCameraObjParamConfig();
export class OrthographicCameraObjNode extends TypedThreejsCameraObjNode {
constructor() {
super(...arguments);
this.paramsConfig = ParamsConfig;
}
static type() {
return CameraNodeType.ORTHOGRAPHIC;
}
createObject() {
const camera = OrthographicCameraSopOperation.createCamera(
{
size: this.pv.size,
...CORE_CAMERA_DEFAULT
},
this
);
OrthographicCameraSopOperation.setCameraAttributes(camera, { size: this.pv.size });
return camera;
}
updateCamera() {
const { size } = this.pv;
this._object.left = ORTHOGRAPHIC_CAMERA_DEFAULT.left * size;
this._object.right = ORTHOGRAPHIC_CAMERA_DEFAULT.right * size;
this._object.top = ORTHOGRAPHIC_CAMERA_DEFAULT.top * size;
this._object.bottom = ORTHOGRAPHIC_CAMERA_DEFAULT.bottom * size;
OrthographicCameraSopOperation.setCameraAttributes(this._object, this.pv);
this._object.updateProjectionMatrix();
}
// protected override _updateForAspectRatio() {
// CoreCameraOrthographicFrameMode.updateCameraAspect(this._object, this._aspect);
// }
}
OrthographicCameraObjNode.onRegister = registerOrthographicCamera;