@6edesign/svelte-three
Version:
[Demo](https://6edesign.github.io/svelte-three-mograph/)
72 lines (61 loc) • 2.21 kB
JavaScript
/* src/components/primitives/Primitive.svelte generated by Svelte v3.31.2 */
import { SvelteComponent, init, safe_not_equal } from "../../../web_modules/svelte/internal.js";
import { getContext, onDestroy } from "../../../web_modules/svelte.js";
import { MeshPhongMaterial, Mesh } from "../../../web_modules/three.js";
function instance($$self, $$props, $$invalidate) {
let { Geometry } = $$props;
let { size } = $$props;
let { position = [0, 0, 0] } = $$props;
let { rotation = [0, 0, 0] } = $$props;
let { renderFn } = $$props;
let { translate = [0, 0, 0] } = $$props;
const material = getContext("material");
const geometry = new Geometry(...size);
const mesh = new Mesh(geometry, material);
const primitive = new Mesh(mesh, material);
const sceneCtx = getContext("sceneCtx");
const group = getContext("group");
if (group) group.add(mesh);
if (!group) sceneCtx.scene.add(mesh);
if (renderFn) sceneCtx.renderFns = [...sceneCtx.renderFns, renderFn];
onDestroy(() => {
if (group) group.remove(mesh);
sceneCtx.scene.remove(mesh);
mesh.geometry.dispose();
mesh.material.dispose();
});
$$self.$$set = $$props => {
if ("Geometry" in $$props) $$invalidate(0, Geometry = $$props.Geometry);
if ("size" in $$props) $$invalidate(1, size = $$props.size);
if ("position" in $$props) $$invalidate(2, position = $$props.position);
if ("rotation" in $$props) $$invalidate(3, rotation = $$props.rotation);
if ("renderFn" in $$props) $$invalidate(4, renderFn = $$props.renderFn);
if ("translate" in $$props) $$invalidate(5, translate = $$props.translate);
};
$$self.$$.update = () => {
if ($$self.$$.dirty & /*position*/ 4) {
$: mesh.position.set(...position);
}
if ($$self.$$.dirty & /*rotation*/ 8) {
$: mesh.rotation.set(...rotation);
}
if ($$self.$$.dirty & /*translate*/ 32) {
$: geometry.translate(...translate);
}
};
return [Geometry, size, position, rotation, renderFn, translate];
}
class Primitive extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance, null, safe_not_equal, {
Geometry: 0,
size: 1,
position: 2,
rotation: 3,
renderFn: 4,
translate: 5
});
}
}
export default Primitive;