projects/atft/src/lib/object/mesh/plane-mesh.component.ts
OnChanges
providers |
provideParent(PlaneMeshComponent)
|
selector | atft-plane-mesh |
template |
|
Properties |
Methods |
|
Inputs |
Outputs |
constructor(rendererService: RendererService, parent: AbstractObject3D<any>)
|
|||||||||
Parameters :
|
height | |
Type : number
|
|
Default value : 1.0
|
|
Height; that is, the length of the edges parallel to the Y axis. Optional; defaults to 1. |
heightSegments | |
Type : number
|
|
Default value : 1
|
|
Number of segmented rectangular faces along the height of the sides. Optional; defaults to 1. |
width | |
Type : number
|
|
Default value : 1.0
|
|
Width; that is, the length of the edges parallel to the X axis. Optional; defaults to 1. |
widthSegments | |
Type : number
|
|
Default value : 1
|
|
Number of segmented rectangular faces along the width of the sides. Optional; defaults to 1. |
castShadow | |
Type : boolean
|
|
Default value : true
|
|
Inherited from
AbstractMesh
|
|
Defined in
AbstractMesh:16
|
depthWrite | |
Type : boolean
|
|
Default value : true
|
|
Inherited from
AbstractMesh
|
|
Defined in
AbstractMesh:22
|
material | |
Type : string
|
|
Inherited from
AbstractMesh
|
|
Defined in
AbstractMesh:10
|
materialColor | |
Type : string | number
|
|
Default value : '#5DADE2'
|
|
Inherited from
AbstractMesh
|
|
Defined in
AbstractMesh:13
|
receiveShadow | |
Type : boolean
|
|
Default value : true
|
|
Inherited from
AbstractMesh
|
|
Defined in
AbstractMesh:19
|
layer | |
Type : number
|
|
Default value : 0
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:42
|
name | |
Type : string
|
|
Default value : uuidv4()
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:40
|
rotateX | |
Type : number
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:24
|
|
Rotation in Euler angles (radians) with order X, Y, Z. |
rotateY | |
Type : number
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:25
|
rotateZ | |
Type : number
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:26
|
scaleX | |
Type : number
|
|
Default value : 1
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:36
|
scaleY | |
Type : number
|
|
Default value : 1
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:37
|
scaleZ | |
Type : number
|
|
Default value : 1
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:38
|
translateX | |
Type : number
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:31
|
|
Translate the geometry. This is typically done as a one time operation, and not during a loop. |
translateY | |
Type : number
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:32
|
translateZ | |
Type : number
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:33
|
changed | |
Type : EventEmitter
|
|
Inherited from
AbstractObject3D
|
|
Defined in
AbstractObject3D:44
|
Protected newObject3DInstance |
newObject3DInstance()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:46
|
Returns :
THREE.Mesh
|
Public ngOnChanges | ||||||
ngOnChanges(changes: SimpleChanges)
|
||||||
Inherited from
AbstractObject3D
|
||||||
Defined in
AbstractObject3D:55
|
||||||
Parameters :
Returns :
void
|
Public applyMaterial |
applyMaterial()
|
Inherited from
AbstractMesh
|
Defined in
AbstractMesh:50
|
Returns :
void
|
Protected applyShadowProps | ||||||
applyShadowProps(mesh: THREE.Mesh)
|
||||||
Inherited from
AbstractMesh
|
||||||
Defined in
AbstractMesh:28
|
||||||
Parameters :
Returns :
void
|
Protected getMaterial |
getMaterial()
|
Inherited from
AbstractMesh
|
Defined in
AbstractMesh:24
|
Returns :
THREE.Material
|
Public addChild | ||||||
addChild(object: AbstractObject3D<any>)
|
||||||
Inherited from
AbstractObject3D
|
||||||
Defined in
AbstractObject3D:143
|
||||||
Parameters :
Returns :
void
|
Protected afterInit |
afterInit()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:156
|
Returns :
void
|
Public applyRotation |
applyRotation()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:118
|
Returns :
void
|
Public applyScale |
applyScale()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:135
|
Returns :
void
|
Public applyTranslation |
applyTranslation()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:127
|
Returns :
void
|
Public findByName | ||||||
findByName(name: string)
|
||||||
Inherited from
AbstractObject3D
|
||||||
Defined in
AbstractObject3D:185
|
||||||
Parameters :
Returns :
any
|
Public getChildren |
getChildren()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:202
|
Returns :
Array<AbstractObject3D<any>>
|
Public getObject |
getObject()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:175
|
Returns :
T
|
Public ngAfterViewInit |
ngAfterViewInit()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:181
|
Returns :
void
|
Public ngOnDestroy |
ngOnDestroy()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:86
|
Returns :
void
|
Public ngOnInit |
ngOnInit()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:97
|
Returns :
void
|
Protected recursionByName | |||||||||
recursionByName(currentNode: AbstractObject3D<any>, name: string)
|
|||||||||
Inherited from
AbstractObject3D
|
|||||||||
Defined in
AbstractObject3D:192
|
|||||||||
Parameters :
Returns :
any
|
Public removeChild | ||||||
removeChild(object: AbstractObject3D<any>)
|
||||||
Inherited from
AbstractObject3D
|
||||||
Defined in
AbstractObject3D:160
|
||||||
Parameters :
Returns :
void
|
Public removeChildByName | ||||||
removeChildByName(name: string)
|
||||||
Inherited from
AbstractObject3D
|
||||||
Defined in
AbstractObject3D:206
|
||||||
Parameters :
Returns :
void
|
Public updateParent |
updateParent()
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:111
|
Returns :
void
|
Protected childlren |
Type : Array<AbstractObject3D<any>>
|
Default value : []
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:46
|
Protected object |
Type : T
|
Inherited from
AbstractObject3D
|
Defined in
AbstractObject3D:48
|
import {Component, Input, OnChanges, Optional, SimpleChanges, SkipSelf} from '@angular/core';
import * as THREE from 'three';
import {RendererService} from '../../renderer/renderer.service';
import {provideParent} from '../../util';
import {AbstractObject3D} from '../abstract-object-3d';
import {AbstractMesh} from './abstract-mesh-3d';
@Component({
selector: 'atft-plane-mesh',
providers: [provideParent(PlaneMeshComponent)],
template: '<ng-content></ng-content>'
})
export class PlaneMeshComponent extends AbstractMesh implements OnChanges {
/**
* Width; that is, the length of the edges parallel to the X axis. Optional; defaults to 1.
*/
@Input()
width = 1.0;
/**
* Height; that is, the length of the edges parallel to the Y axis. Optional; defaults to 1.
*/
@Input()
height = 1.0;
/**
* Number of segmented rectangular faces along the width of the sides. Optional; defaults to 1.
*/
@Input()
widthSegments = 1;
/**
* Number of segmented rectangular faces along the height of the sides. Optional; defaults to 1.
*/
@Input()
heightSegments = 1;
constructor(
protected override rendererService: RendererService,
@SkipSelf() @Optional() protected override parent: AbstractObject3D<any>
) {
super(rendererService, parent);
}
protected newObject3DInstance(): THREE.Mesh {
const geometry = new THREE.PlaneGeometry(this.width, this.height, this.widthSegments, this.heightSegments);
const material = this.getMaterial();
const mesh = new THREE.Mesh(geometry, material);
this.applyShadowProps(mesh);
return mesh;
}
public override ngOnChanges(changes: SimpleChanges) {
// console.log('AbstractObject3D.ngOnChanges', this.name);
if (!this.object) {
return;
}
super.ngOnChanges(changes);
let modified = false;
if (['width', 'height', 'widthSegments', 'heightSegments'].some(propName => propName in changes)) {
if (this.getObject() instanceof THREE.Mesh) {
const mesh: THREE.Mesh = this.getObject();
if (mesh.geometry instanceof THREE.PlaneGeometry) {
const currentGeometry: THREE.PlaneGeometry = mesh.geometry;
const newGeometry = new THREE.PlaneGeometry(this.width, this.height, this.widthSegments, this.heightSegments);
currentGeometry.attributes = newGeometry.attributes;
}
}
modified = true;
}
if (modified) {
this.changed.emit();
this.rendererService.render();
}
}
}