mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-02 08:35:07 +08:00
- Compile mesh construction, transforms, cloning, and material updates for native and WASI targets. - Preserve subclass dispatch, fluent returns, and shared array identity in JavaScript packages. - Support native class arrays and recursive conversions without materializing classes for type checks.
46 lines
2.1 KiB
JavaScript
46 lines
2.1 KiB
JavaScript
import { MeshNormalMaterial } from 'three/src/materials/MeshNormalMaterial.js';
|
|
import { MeshBasicMaterial } from 'three/src/materials/MeshBasicMaterial.js';
|
|
import { MeshStandardMaterial } from 'three/src/materials/MeshStandardMaterial.js';
|
|
import { Plane } from 'three/src/math/Plane.js';
|
|
import { Vector3 } from 'three/src/math/Vector3.js';
|
|
|
|
const normal = new MeshNormalMaterial({wireframe: true, opacity: 0.5, transparent: true});
|
|
console.log('normal', normal.type, normal.wireframe, normal.opacity, normal.transparent);
|
|
normal.setValues({wireframe: false, opacity: 0.8});
|
|
normal.needsUpdate = true;
|
|
console.log('updated', normal.wireframe, normal.opacity, normal.version);
|
|
const copy = normal.clone();
|
|
console.log('clone', copy !== normal, copy.type, copy.opacity, copy.normalScale.x);
|
|
copy.normalScale.x = 2;
|
|
console.log('independent', normal.normalScale.x, copy.normalScale.x);
|
|
|
|
const plane = new Plane(new Vector3(1, 0, 0), 2);
|
|
normal.setValues({clippingPlanes: [plane], clipIntersection: true});
|
|
if (normal.clippingPlanes !== null) {
|
|
console.log('clip', normal.clippingPlanes.length, normal.clippingPlanes[0] === plane, normal.clipIntersection);
|
|
normal.clippingPlanes[0].constant = 3;
|
|
}
|
|
console.log('plane', plane.constant);
|
|
normal.setValues({clippingPlanes: null});
|
|
console.log('unclipped', normal.clippingPlanes === null);
|
|
|
|
const basic = new MeshBasicMaterial({color: 0xff0000});
|
|
console.log('red', basic.color.r, basic.color.g, basic.color.b);
|
|
basic.setValues({color: 0x0000ff});
|
|
console.log('blue', basic.color.r, basic.color.g, basic.color.b);
|
|
console.log('basic-copy', basic.clone().color.b);
|
|
const standard = new MeshStandardMaterial({roughness: 0.25, metalness: 0.8, color: 0x00ff00});
|
|
console.log('standard', standard.type, standard.roughness, standard.metalness, standard.color.g);
|
|
console.log('standard-copy', standard.clone().roughness, standard.clone().metalness);
|
|
|
|
let count = 0;
|
|
function disposed(event) {
|
|
count++;
|
|
console.log('event', event.type, event.target === normal, this === normal);
|
|
}
|
|
normal.addEventListener('dispose', disposed);
|
|
normal.dispose();
|
|
normal.removeEventListener('dispose', disposed);
|
|
normal.dispose();
|
|
console.log('events', count);
|