clean up directory
parent
9dccacdba9
commit
606e83e2d6
11
src/Scene.js
11
src/Scene.js
|
@ -2,11 +2,10 @@
|
||||||
|
|
||||||
|
|
||||||
import * as THREE from '../node_modules/three/src/Three';
|
import * as THREE from '../node_modules/three/src/Three';
|
||||||
import { TrackballControls } from './trackball'
|
import { TrackballControls } from '../lib/trackball'
|
||||||
import { Sketch } from './Sketch'
|
import { Sketch } from './Sketch'
|
||||||
import Stats from './stats.module.js';
|
import Stats from '../lib/stats.module.js';
|
||||||
|
|
||||||
import { add3DPoint } from './datums'
|
|
||||||
import { extrude } from './extrude'
|
import { extrude } from './extrude'
|
||||||
import { onHover, onPick } from './mouseEvents';
|
import { onHover, onPick } from './mouseEvents';
|
||||||
import { _vec2, _vec3, color, awaitSelection, ptObj } from './shared'
|
import { _vec2, _vec3, color, awaitSelection, ptObj } from './shared'
|
||||||
|
@ -14,7 +13,7 @@ import { _vec2, _vec3, color, awaitSelection, ptObj } from './shared'
|
||||||
import { AxesHelper } from './axes'
|
import { AxesHelper } from './axes'
|
||||||
|
|
||||||
|
|
||||||
import CSG from "./three-csg.js"
|
import CSG from "../lib/three-csg"
|
||||||
|
|
||||||
|
|
||||||
const eq = (a1, a2) => {
|
const eq = (a1, a2) => {
|
||||||
|
@ -116,10 +115,10 @@ export class Scene {
|
||||||
const dist = 50
|
const dist = 50
|
||||||
const light1 = new THREE.PointLight(color.lighting, 0.7);
|
const light1 = new THREE.PointLight(color.lighting, 0.7);
|
||||||
light1.position.set(dist, dist, dist);
|
light1.position.set(dist, dist, dist);
|
||||||
this.obj3d.add(light1);
|
helpersGroup.add(light1);
|
||||||
const light2 = new THREE.PointLight(color.lighting, 0.6);
|
const light2 = new THREE.PointLight(color.lighting, 0.6);
|
||||||
light2.position.set(-dist, -dist, -dist);
|
light2.position.set(-dist, -dist, -dist);
|
||||||
this.obj3d.add(light2);
|
helpersGroup.add(light2);
|
||||||
|
|
||||||
|
|
||||||
this.render = render.bind(this);
|
this.render = render.bind(this);
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
import * as THREE from '../node_modules/three/src/Three';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export function add3DPoint(e) {
|
|
||||||
|
|
||||||
// const mouse = new THREE.Vector2(
|
|
||||||
// (e.clientX / window.innerWidth) * 2 - 1,
|
|
||||||
// - (e.clientY / window.innerHeight) * 2 + 1
|
|
||||||
// )
|
|
||||||
|
|
||||||
// console.log(new THREE.Vector3(mouse.x, mouse.y, 0).unproject(this.camera))
|
|
||||||
|
|
||||||
// this.raycaster.ray.intersectPlane(this.plane, this.target).applyMatrix4(this.inverse)
|
|
||||||
|
|
||||||
this.raycaster.setFromCamera(
|
|
||||||
new THREE.Vector2(
|
|
||||||
(e.clientX / window.innerWidth) * 2 - 1,
|
|
||||||
- (e.clientY / window.innerHeight) * 2 + 1
|
|
||||||
),
|
|
||||||
this.camera
|
|
||||||
);
|
|
||||||
|
|
||||||
// const hoverPts = this.raycaster.intersectObjects(this.sketch.children)
|
|
||||||
const hoverPts = this.raycaster.intersectObjects(this.sketch.children)
|
|
||||||
|
|
||||||
console.log(hoverPts)
|
|
||||||
|
|
||||||
let idx = []
|
|
||||||
if (hoverPts.length) {
|
|
||||||
let minDist = Infinity;
|
|
||||||
for (let i = 0; i < hoverPts.length; i++) {
|
|
||||||
if (!hoverPts[i].distanceToRay) continue;
|
|
||||||
if (hoverPts[i].distanceToRay < minDist) {
|
|
||||||
minDist = hoverPts[i].distanceToRay
|
|
||||||
idx = [i]
|
|
||||||
} else if (hoverPts[i].distanceToRay == minDist) {
|
|
||||||
idx.push(i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!idx.length) idx.push(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (idx.length) {
|
|
||||||
if (hoverPts[idx[0]].object != this.hovered[0]) {
|
|
||||||
|
|
||||||
for (let ob of this.hovered) {
|
|
||||||
if (ob && !this.selected.includes(ob)) {
|
|
||||||
ob.material.color.set(0x555555)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.hovered = []
|
|
||||||
|
|
||||||
for (let i of idx) {
|
|
||||||
hoverPts[i].object.material.color.set(0x00FFFF)
|
|
||||||
this.hovered.push(hoverPts[i].object)
|
|
||||||
}
|
|
||||||
// console.log('render1')
|
|
||||||
this.render()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (this.hovered.length) {
|
|
||||||
for (let ob of this.hovered) {
|
|
||||||
if (ob && !this.selected.includes(ob)) {
|
|
||||||
ob.material.color.set(0x555555)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.hovered = []
|
|
||||||
// console.log('render2')
|
|
||||||
this.render()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -9,7 +9,7 @@ export function extrude(sketch) {
|
||||||
let visited = new Set()
|
let visited = new Set()
|
||||||
let v2s = []
|
let v2s = []
|
||||||
let offSetPts = []
|
let offSetPts = []
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function findPair(node) {
|
function findPair(node) {
|
||||||
|
@ -70,39 +70,33 @@ export function extrude(sketch) {
|
||||||
const extrudeSettings = { depth: 8, bevelEnabled: false };
|
const extrudeSettings = { depth: 8, bevelEnabled: false };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
|
const geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
|
||||||
|
|
||||||
|
|
||||||
// const material = new THREE.MeshLambertMaterial({
|
// const material = new THREE.MeshLambertMaterial({
|
||||||
const material = new THREE.MeshPhongMaterial({
|
const material = new THREE.MeshPhongMaterial({
|
||||||
color: color.mesh,
|
color: color.mesh,
|
||||||
emissive: color.emissive,
|
emissive: color.emissive,
|
||||||
// flatShading:true,
|
// flatShading:true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const mesh = new THREE.Mesh(geometry, material)
|
const mesh = new THREE.Mesh(geometry, material)
|
||||||
mesh.name = 'm' + id++
|
mesh.name = 'm' + id++
|
||||||
mesh.userData.type = 'mesh'
|
mesh.userData.type = 'mesh'
|
||||||
mesh.layers.enable(1)
|
mesh.layers.enable(1)
|
||||||
|
|
||||||
const vertices = new THREE.Points( mesh.geometry, new THREE.PointsMaterial() );
|
const vertices = new THREE.Points(mesh.geometry, new THREE.PointsMaterial({ size: 0 }));
|
||||||
vertices.userData.type = 'point'
|
vertices.userData.type = 'point'
|
||||||
vertices.layers.disable(0)
|
|
||||||
vertices.layers.enable(1)
|
vertices.layers.enable(1)
|
||||||
|
|
||||||
mesh.add(vertices)
|
mesh.add(vertices)
|
||||||
mesh.matrixAutoUpdate = false;
|
mesh.matrixAutoUpdate = false;
|
||||||
mesh.matrix.multiply(sketch.obj3d.matrix)
|
mesh.matrix.multiply(sketch.obj3d.matrix)
|
||||||
|
|
||||||
this.obj3d.add(mesh)
|
this.obj3d.add(mesh)
|
||||||
|
|
||||||
this.render()
|
this.render()
|
||||||
|
|
||||||
// sketch.visible = false
|
|
||||||
this.store.dispatch({ type: 'rx-extrusion', mesh, sketchId: sketch.obj3d.name })
|
this.store.dispatch({ type: 'rx-extrusion', mesh, sketchId: sketch.obj3d.name })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
276
src/icons.jsx
276
src/icons.jsx
|
@ -1,276 +0,0 @@
|
||||||
import * as React from "react";
|
|
||||||
function Arc(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<g stroke="currentColor" strokeLinecap="round">
|
|
||||||
<path
|
|
||||||
d="M7.75 2.35a13 13 0 016.5 11.281"
|
|
||||||
fill="none"
|
|
||||||
strokeWidth={1.5}
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
fill="#fff"
|
|
||||||
d="M.75 12.631h2v2h-2zM6.75 1.35h2v2h-2zM13.25 12.631h2v2h-2z"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Dimension(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
fill="currentColor"
|
|
||||||
className="prefix__bi prefix__bi-intersect"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<defs>
|
|
||||||
<marker
|
|
||||||
id="prefix__a"
|
|
||||||
refX={0}
|
|
||||||
refY={0}
|
|
||||||
orient="auto"
|
|
||||||
overflow="visible"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M-1.154 0l1.73-1v2l-1.73-1z"
|
|
||||||
fillRule="evenodd"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth=".2pt"
|
|
||||||
fill="currentColor"
|
|
||||||
/>
|
|
||||||
</marker>
|
|
||||||
<marker
|
|
||||||
id="prefix__b"
|
|
||||||
refX={0}
|
|
||||||
refY={0}
|
|
||||||
orient="auto"
|
|
||||||
overflow="visible"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M1.154 0l-1.73 1v-2l1.73 1z"
|
|
||||||
fillRule="evenodd"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth=".2pt"
|
|
||||||
fill="currentColor"
|
|
||||||
/>
|
|
||||||
</marker>
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
d="M4.009 10.009l6-6"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={2}
|
|
||||||
markerStart="url(#prefix__a)"
|
|
||||||
markerEnd="url(#prefix__b)"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M15.485 4.516l-4-4M4.516 15.485l-4-4"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={0.893}
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Intersect(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
fill="currentColor"
|
|
||||||
className="prefix__bi prefix__bi-intersect"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M5.55 5.5c-.018.166-.05.329-.05.5 0 2.491 2.009 4.5 4.5 4.5.171 0 .334-.032.5-.05V6c0-.286-.214-.5-.5-.5z"
|
|
||||||
fill="currentColor"
|
|
||||||
fillOpacity={0.7}
|
|
||||||
/>
|
|
||||||
<rect
|
|
||||||
width={10}
|
|
||||||
height={10}
|
|
||||||
x={1}
|
|
||||||
y={5}
|
|
||||||
rx={1}
|
|
||||||
ry={1}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={1.5}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
<circle
|
|
||||||
cx={10}
|
|
||||||
cy={6}
|
|
||||||
r={5}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={1.5}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Intersect_thin(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
fill="currentColor"
|
|
||||||
className="prefix__bi prefix__bi-intersect"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M5.11 5.092c-.02.195-.059.384-.059.584a5.244 5.244 0 005.254 5.253c.2 0 .39-.037.583-.059V5.676a.57.57 0 00-.583-.584z"
|
|
||||||
fill="currentColor"
|
|
||||||
fillOpacity={0.7}
|
|
||||||
/>
|
|
||||||
<rect
|
|
||||||
width={10}
|
|
||||||
height={10}
|
|
||||||
x={1}
|
|
||||||
y={5}
|
|
||||||
rx={1}
|
|
||||||
ry={1}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={0.4}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
<circle
|
|
||||||
cx={10}
|
|
||||||
cy={6}
|
|
||||||
r={5}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={0.4}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Line(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<g stroke="currentColor">
|
|
||||||
<path d="M2 14l3-6h6l3-6" fill="none" strokeWidth={1.5} />
|
|
||||||
<path
|
|
||||||
fill="#fff"
|
|
||||||
strokeLinecap="round"
|
|
||||||
d="M1 13h2v2H1zM4 7h2v2H4zM10 7h2v2h-2zM13 1h2v2h-2z"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Subtract(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
fill="currentColor"
|
|
||||||
className="prefix__bi prefix__bi-intersect"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M2 5.5c-.286 0-.5.214-.5.5v8c0 .286.214.5.5.5h8c.286 0 .5-.214.5-.5v-2.525a5.504 5.504 0 01-.5.025A5.508 5.508 0 014.5 6c0-.169.01-.335.025-.5z"
|
|
||||||
fill="currentColor"
|
|
||||||
fillOpacity={0.7}
|
|
||||||
/>
|
|
||||||
<rect
|
|
||||||
width={10}
|
|
||||||
height={10}
|
|
||||||
x={1}
|
|
||||||
y={5}
|
|
||||||
rx={1}
|
|
||||||
ry={1}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={1.5}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
<circle
|
|
||||||
cx={10}
|
|
||||||
cy={6}
|
|
||||||
r={5}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={1.5}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Union(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
fill="currentColor"
|
|
||||||
className="prefix__bi prefix__bi-intersect"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M5.55 5.5c-.018.166-.05.329-.05.5 0 2.491 2.009 4.5 4.5 4.5.171 0 .334-.032.5-.05V6c0-.286-.214-.5-.5-.5z"
|
|
||||||
fill="currentColor"
|
|
||||||
fillOpacity={0.7}
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M2 5.5c-.286 0-.5.214-.5.5v8c0 .286.214.5.5.5h8c.286 0 .5-.214.5-.5v-2.525a5.504 5.504 0 01-.5.025A5.508 5.508 0 014.5 6c0-.169.01-.335.025-.5zM10 1.5a4.477 4.477 0 00-4.225 3H10c.822 0 1.5.678 1.5 1.5v4.225A4.477 4.477 0 0014.5 6c0-2.491-2.009-4.5-4.5-4.5z"
|
|
||||||
fill="currentColor"
|
|
||||||
fillOpacity={0.7}
|
|
||||||
/>
|
|
||||||
<rect
|
|
||||||
width={10}
|
|
||||||
height={10}
|
|
||||||
x={1}
|
|
||||||
y={5}
|
|
||||||
rx={1}
|
|
||||||
ry={1}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={1.5}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
<circle
|
|
||||||
cx={10}
|
|
||||||
cy={6}
|
|
||||||
r={5}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={1.5}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
export { Arc, Dimension, Intersect, Intersect_thin, Line, Subtract, Union };
|
|
|
@ -18,7 +18,7 @@ export function onHover(e) {
|
||||||
let hoverPts;
|
let hoverPts;
|
||||||
|
|
||||||
if (this.obj3d.userData.type != 'sketch') {
|
if (this.obj3d.userData.type != 'sketch') {
|
||||||
this.obj3d.children[0].children[0].visible = false
|
this.obj3d.children[0].children[0].visible = false // hide selpoint[0] before each redraw
|
||||||
raycaster.layers.set(1)
|
raycaster.layers.set(1)
|
||||||
hoverPts = raycaster.intersectObjects(this.obj3d.children, true)
|
hoverPts = raycaster.intersectObjects(this.obj3d.children, true)
|
||||||
} else {
|
} else {
|
||||||
|
|
70
src/patch.js
70
src/patch.js
|
@ -1,70 +0,0 @@
|
||||||
// import { LineSegments } from '../objects/LineSegments.js';
|
|
||||||
// import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
||||||
// import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
||||||
// import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import * as THREE from '../node_modules/three/src/Three';
|
|
||||||
import {ArrowHelper} from './ArrowHelper'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Patch extends THREE.Mesh {
|
|
||||||
|
|
||||||
|
|
||||||
constructor(s = 1) {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const positions = [
|
|
||||||
0.5, 0,
|
|
||||||
0.3, 0.06,
|
|
||||||
0.3, 0.01,
|
|
||||||
0.0, 0.01,
|
|
||||||
0.0, -0.01,
|
|
||||||
0.3, -0.01,
|
|
||||||
0.3, -0.06,
|
|
||||||
];
|
|
||||||
|
|
||||||
const shape = new THREE.Shape()
|
|
||||||
|
|
||||||
shape.moveTo(positions[0], positions[1])
|
|
||||||
|
|
||||||
for (let i = 2; i < positions.length; i += 2) {
|
|
||||||
shape.lineTo(positions[i], positions[i+1])
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(shape)
|
|
||||||
|
|
||||||
const geometry = new THREE.ShapeGeometry( shape );;
|
|
||||||
|
|
||||||
|
|
||||||
super(
|
|
||||||
geometry,
|
|
||||||
new MeshBasicMaterial({
|
|
||||||
color: 0x0000ff,
|
|
||||||
opacity: 0.2,
|
|
||||||
side: DoubleSide,
|
|
||||||
transparent: true,
|
|
||||||
depthWrite: false,
|
|
||||||
toneMapped: false
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
this.scale.set( 1, 1, 1 );
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export { Patch };
|
|
|
@ -49,7 +49,7 @@ body {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@apply fill-current
|
@apply fill-current
|
||||||
bg-transparent text-gray-200
|
bg-transparent text-gray-200
|
||||||
hover:bg-gray-600 hover:text-gray-200;
|
hover:bg-gray-500 hover:text-gray-200;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-light {
|
.btn-light {
|
||||||
|
|
|
@ -69,7 +69,7 @@ export class DepTree {
|
||||||
|
|
||||||
this.allIds.splice(spliceIdx, 1)
|
this.allIds.splice(spliceIdx, 1)
|
||||||
|
|
||||||
const deletedObj = sc.obj3d.children.splice(spliceIdx + 4, 1)[0] // first 4 elements are non geom
|
const deletedObj = sc.obj3d.children.splice(spliceIdx + 1, 1)[0] // first 1 elements are non geom
|
||||||
|
|
||||||
deletedObj.traverse((obj)=>{
|
deletedObj.traverse((obj)=>{
|
||||||
if (obj.geometry) obj.geometry.dispose()
|
if (obj.geometry) obj.geometry.dispose()
|
||||||
|
|
81
src/rect.js
81
src/rect.js
|
@ -1,81 +0,0 @@
|
||||||
const lines = [
|
|
||||||
DlineObj(), // 0:
|
|
||||||
DlineObj(), // 1:
|
|
||||||
DlineObj(), // 2:
|
|
||||||
DlineObj(), // 2:
|
|
||||||
]
|
|
||||||
|
|
||||||
const points = [
|
|
||||||
DptObj(), // 1: |
|
|
||||||
DptObj(), // 1: |
|
|
||||||
DptObj(), // 1: |
|
|
||||||
DptObj(), // 2: |
|
|
||||||
DptObj(), // 3: |
|
|
||||||
DptObj(), // 4: |
|
|
||||||
DptObj(), // 5: |
|
|
||||||
DptObj(), // 6: |
|
|
||||||
]
|
|
||||||
|
|
||||||
const updatePoint = this.obj3d.children.length
|
|
||||||
let prev = points[points.length - 1]
|
|
||||||
for (let i = 0, j = 0; i < points.length; i++) {
|
|
||||||
const cur = points[i]
|
|
||||||
if (i % 2 == 0) {
|
|
||||||
this.constraints.set(++this.c_id, //??? increment investigation
|
|
||||||
[
|
|
||||||
'points_coincident', -1,
|
|
||||||
[prev.name, cur.name, -1, -1]
|
|
||||||
]
|
|
||||||
)
|
|
||||||
cur.userData.constraints.push(this.c_id)
|
|
||||||
prev.userData.constraints.push(this.c_id)
|
|
||||||
} else {
|
|
||||||
const toPush = [prev, cur, lines[j]]
|
|
||||||
this.linkedObjs.set(this.l_id, ['line', toPush.map(e => e.name)])
|
|
||||||
for (let obj of toPush) {
|
|
||||||
obj.userData.l_id = this.l_id
|
|
||||||
}
|
|
||||||
this.l_id += 1
|
|
||||||
|
|
||||||
if (j > 0) {
|
|
||||||
this.constraints.set(++this.c_id, //???
|
|
||||||
[
|
|
||||||
'perpendicular', -1,
|
|
||||||
[-1, -1, lines[j - 1].name, lines[j].name]
|
|
||||||
]
|
|
||||||
)
|
|
||||||
lines[j - 1].userData.constraints.push(this.c_id)
|
|
||||||
lines[j].userData.constraints.push(this.c_id)
|
|
||||||
}
|
|
||||||
this.obj3d.add(...toPush)
|
|
||||||
|
|
||||||
j += 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i >= 3 && i <= 6) {
|
|
||||||
points[i].geometry.attributes.position.set(p2.geometry.attributes.position.array)
|
|
||||||
} else {
|
|
||||||
points[i].geometry.attributes.position.set(p1.geometry.attributes.position.array)
|
|
||||||
}
|
|
||||||
|
|
||||||
prev = cur
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
this.constraints.set(++this.c_id, //??? increment investigation
|
|
||||||
[
|
|
||||||
'points_coincident', -1,
|
|
||||||
[p2.name, points[5].name, -1, -1]
|
|
||||||
]
|
|
||||||
)
|
|
||||||
points[5].userData.constraints.push(this.c_id)
|
|
||||||
p2.userData.constraints.push(this.c_id)
|
|
||||||
|
|
||||||
this.constraints.set(++this.c_id, //??? increment investigation
|
|
||||||
[
|
|
||||||
'points_coincident', -1,
|
|
||||||
[p1.name, points[0].name, -1, -1]
|
|
||||||
]
|
|
||||||
)
|
|
||||||
points[0].userData.constraints.push(this.c_id)
|
|
||||||
p1.userData.constraints.push(this.c_id)
|
|
Loading…
Reference in New Issue