diff --git a/src/csg-lib.js b/lib/csg-lib.js
similarity index 100%
rename from src/csg-lib.js
rename to lib/csg-lib.js
diff --git a/src/stats.module.js b/lib/stats.module.js
similarity index 100%
rename from src/stats.module.js
rename to lib/stats.module.js
diff --git a/src/three-csg.js b/lib/three-csg.js
similarity index 100%
rename from src/three-csg.js
rename to lib/three-csg.js
diff --git a/src/trackball.js b/lib/trackball.js
similarity index 100%
rename from src/trackball.js
rename to lib/trackball.js
diff --git a/src/Scene.js b/src/Scene.js
index e29d00d..04a6027 100644
--- a/src/Scene.js
+++ b/src/Scene.js
@@ -2,11 +2,10 @@
import * as THREE from '../node_modules/three/src/Three';
-import { TrackballControls } from './trackball'
+import { TrackballControls } from '../lib/trackball'
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 { onHover, onPick } from './mouseEvents';
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 CSG from "./three-csg.js"
+import CSG from "../lib/three-csg"
const eq = (a1, a2) => {
@@ -116,10 +115,10 @@ export class Scene {
const dist = 50
const light1 = new THREE.PointLight(color.lighting, 0.7);
light1.position.set(dist, dist, dist);
- this.obj3d.add(light1);
+ helpersGroup.add(light1);
const light2 = new THREE.PointLight(color.lighting, 0.6);
light2.position.set(-dist, -dist, -dist);
- this.obj3d.add(light2);
+ helpersGroup.add(light2);
this.render = render.bind(this);
diff --git a/src/datums.js b/src/datums.js
deleted file mode 100644
index c036132..0000000
--- a/src/datums.js
+++ /dev/null
@@ -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()
- }
- }
-}
diff --git a/src/extrude.js b/src/extrude.js
index 2a3e0f1..96afbab 100644
--- a/src/extrude.js
+++ b/src/extrude.js
@@ -9,7 +9,7 @@ export function extrude(sketch) {
let visited = new Set()
let v2s = []
let offSetPts = []
-
+
function findPair(node) {
@@ -70,39 +70,33 @@ export function extrude(sketch) {
const extrudeSettings = { depth: 8, bevelEnabled: false };
-
-
-
-
-
-
const geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
-
+
// const material = new THREE.MeshLambertMaterial({
const material = new THREE.MeshPhongMaterial({
color: color.mesh,
emissive: color.emissive,
// flatShading:true,
});
+
const mesh = new THREE.Mesh(geometry, material)
mesh.name = 'm' + id++
mesh.userData.type = 'mesh'
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.layers.disable(0)
vertices.layers.enable(1)
mesh.add(vertices)
mesh.matrixAutoUpdate = false;
mesh.matrix.multiply(sketch.obj3d.matrix)
+
this.obj3d.add(mesh)
this.render()
- // sketch.visible = false
this.store.dispatch({ type: 'rx-extrusion', mesh, sketchId: sketch.obj3d.name })
}
diff --git a/src/icons.jsx b/src/icons.jsx
deleted file mode 100644
index c37418b..0000000
--- a/src/icons.jsx
+++ /dev/null
@@ -1,276 +0,0 @@
-import * as React from "react";
-function Arc(props) {
- return (
-
- );
-}
-
-function Dimension(props) {
- return (
-
- );
-}
-
-function Intersect(props) {
- return (
-
- );
-}
-
-function Intersect_thin(props) {
- return (
-
- );
-}
-
-function Line(props) {
- return (
-
- );
-}
-
-function Subtract(props) {
- return (
-
- );
-}
-
-function Union(props) {
- return (
-
- );
-}
-export { Arc, Dimension, Intersect, Intersect_thin, Line, Subtract, Union };
\ No newline at end of file
diff --git a/src/mouseEvents.js b/src/mouseEvents.js
index 7833f92..467a0ed 100644
--- a/src/mouseEvents.js
+++ b/src/mouseEvents.js
@@ -18,7 +18,7 @@ export function onHover(e) {
let hoverPts;
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)
hoverPts = raycaster.intersectObjects(this.obj3d.children, true)
} else {
diff --git a/src/patch.js b/src/patch.js
deleted file mode 100644
index c890b85..0000000
--- a/src/patch.js
+++ /dev/null
@@ -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 };
diff --git a/src/react/app.css b/src/react/app.css
index 8e93353..ee19777 100644
--- a/src/react/app.css
+++ b/src/react/app.css
@@ -49,7 +49,7 @@ body {
cursor: pointer;
@apply fill-current
bg-transparent text-gray-200
- hover:bg-gray-600 hover:text-gray-200;
+ hover:bg-gray-500 hover:text-gray-200;
}
.btn-light {
diff --git a/src/react/depTree.mjs b/src/react/depTree.mjs
index f41c114..626f581 100644
--- a/src/react/depTree.mjs
+++ b/src/react/depTree.mjs
@@ -69,7 +69,7 @@ export class DepTree {
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)=>{
if (obj.geometry) obj.geometry.dispose()
diff --git a/src/rect.js b/src/rect.js
deleted file mode 100644
index d5b8c96..0000000
--- a/src/rect.js
+++ /dev/null
@@ -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)
\ No newline at end of file