@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
57 lines (56 loc) • 1.64 kB
JavaScript
"use strict";
import { Object3D } from "three";
import { CSSObjectElementCopyObjectAttributes } from "./CSSObjectAttribute";
export class CSS3DObject extends Object3D {
constructor(element = document.createElement("div")) {
super();
this.element = element;
this.isCSS3DObject = true;
this.element = element;
this.element.style.position = "absolute";
this.element.setAttribute("draggable", false);
}
copy(source, recursive) {
super.copy(source, recursive);
this.element = source.element.cloneNode(true);
return this;
}
}
export class CSS3DSprite extends CSS3DObject {
constructor(element) {
super(element);
this.isCSS3DSprite = true;
this.rotation2D = 0;
this.rotation2D = 0;
}
copy(source, recursive) {
super.copy(source, recursive);
this.rotation2D = source.rotation2D;
return this;
}
}
export function createCSS3DObject(options) {
const { id, className, html, scale } = options;
const element = document.createElement("div");
element.id = id;
element.className = className;
element.innerHTML = html;
const CSSObject = new CSS3DObject(element);
CSSObject.matrixAutoUpdate = false;
if (options.object) {
CSSObjectElementCopyObjectAttributes(element, {
...options,
object: options.object,
CSSObject
});
let child;
while (child = options.object.children.pop()) {
CSSObject.add(child);
}
CSSObject.position.copy(options.object.position);
CSSObject.quaternion.copy(options.object.quaternion);
CSSObject.scale.multiplyScalar(scale);
CSSObject.updateMatrix();
}
return CSSObject;
}