import { MeshBasicMaterial, Color, DoubleSide } from "three";
import { Text } from "troika-three-text";

class TextObject {
    constructor(engine, obj) {
        return new Promise((resolve, reject)=>{
            const txt = new Text();
            // Set properties to configure:
            txt.text = obj.text;
            txt.fontSize = 0.033;
            txt.lineHeight = 1.1;
            //txt.maxWidth = obj.width;
            txt.textAlign = 'center';
            txt.font = obj.fontPath || '/static/fonts/Montserrat-Regular.ttf';
            txt.anchorX = 'center';
            txt.anchorY = 'bottom';
            txt.curveRadius = 0;
            txt.outlineColor = 0xffffff;
            txt.outlineWidth = '15%';
            txt.depthOffset = 0.1;
            //txt.outlineBlur = '50%';
            txt.color = new Color(0x0);
            engine.meshUtils.assignParams(txt, obj)
            let m = new MeshBasicMaterial({
                // roughness: .73,
                // metalness: .37,
                side: DoubleSide
            });
            txt.material = m;
            txt.sync(()=>{
                txt.material[1].opacity = 1;
                resolve(this);
            });
            this.txt = txt;
            this.object = txt;
        })
    }
}

export {TextObject}