@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
90 lines (80 loc) • 3.07 kB
text/typescript
/**
* Creates an orthographic camera.
*
*
*/
import {OrthographicCamera} from 'three';
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';
import {OnNodeRegisterCallback} from '../../poly/registers/nodes/NodesRegister';
class OrthographicCameraObjParamConfig extends CameraPostProcessParamConfig(
CameraRenderParamConfig(
LayerParamConfig(
CameraMainCameraParamConfig(
CoreCameraFrameParamConfig(
OrthographicCameraParamConfigMixin(
ThreejsCameraTransformParamConfig(
TransformedParamConfig(NodeParamsConfig, {matrixAutoUpdate: true})
)
)
)
)
)
)
) {}
const ParamsConfig = new OrthographicCameraObjParamConfig();
export class OrthographicCameraObjNode extends TypedThreejsCameraObjNode<
OrthographicCamera,
OrthographicCameraObjParamConfig
> {
override paramsConfig = ParamsConfig;
static override type(): Readonly<CameraNodeType.ORTHOGRAPHIC> {
return CameraNodeType.ORTHOGRAPHIC;
}
static override onRegister: OnNodeRegisterCallback = registerOrthographicCamera;
override createObject() {
const camera = OrthographicCameraSopOperation.createCamera(
{
size: this.pv.size,
...CORE_CAMERA_DEFAULT,
},
this
);
OrthographicCameraSopOperation.setCameraAttributes(camera, {size: this.pv.size});
return camera;
// return new OrthographicCamera(
// ORTHOGRAPHIC_CAMERA_DEFAULT.left * 2,
// ORTHOGRAPHIC_CAMERA_DEFAULT.right * 2,
// ORTHOGRAPHIC_CAMERA_DEFAULT.top * 2,
// ORTHOGRAPHIC_CAMERA_DEFAULT.bottom * 2,
// CORE_CAMERA_DEFAULT.near,
// CORE_CAMERA_DEFAULT.far
// );
}
override 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._updateForAspectRatio();
this._object.updateProjectionMatrix();
}
// protected override _updateForAspectRatio() {
// CoreCameraOrthographicFrameMode.updateCameraAspect(this._object, this._aspect);
// }
}