En ThreeJS (y mecanografiado) estoy creando una instancia de un objeto personalizado que extiende Object3D, luego intento clonarlo. Sin embargo, el campo (uno requerido para la creación de nuevos objetos) obtiene un valor undefined durante el proceso. Aquí está el código:
import {Object3D, Vector3} from "three"; export class CustomObject extends Object3D{ // a single property prop: Vector3; // assigns property value during creation constructor(prop: Vector3) { super(); this.prop = prop; console.log("Prop: ", this.prop); } } // creates an object let co = new CustomObject(new Vector3(0, 1, 2)); // clones the object let coc = co.clone(); console.log("Clone prop: ", coc.prop);En la consola, veo lo siguiente:
Prop: Vector3 {x: 0, y: 1, z: 2} <---- called during initial object creation. Prop: undefined <---- called during clone operation. Clone Prop: undefined <---- called at the end. ¿Por qué prop no está undefined después de la primera instancia?
Bueno, me siento un poco tonto en este punto, pero publicaré esto como respuesta para la posteridad:
Los objetos personalizados necesitan métodos de clonación personalizados:
clone(){ let clon = super.clone(); clon.prop = this.prop; return clon }