UNPKG

@6edesign/svelte-three

Version:

[Demo](https://6edesign.github.io/svelte-three-mograph/)

72 lines (61 loc) 2.21 kB
/* 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;