{
- btnz.map(([Icon, fcn, txt]) => (
-
(
+
))
}
-
-
{treeEntries.allNids.map((entId, idx) => (
-
-
{
- activeSketchNid && treeEntries.byNid[activeSketchNid].deactivate()
- treeEntries.byNid[entId].activate()
- }}
- >
-
-
-
{entId}
-
+
))}
+
+
}
+const TreeEntry = ({ entId }) => {
+
+ const treeEntries = useSelector(state => state.treeEntries.byNid)
+
+ const activeSketchNid = useSelector(state => state.activeSketchNid)
+
+ let entry;
+ if (entId[0]=="s") {
+ entry = treeEntries[entId].obj3d
+ } else {
+ entry = treeEntries[entId]
+ }
+
+ const [_, forceUpdate] = useReducer(x => x + 1, 0);
+
+ const vis = entry.visible
+
+ return
+
{
+ activeSketchNid && treeEntries[activeSketchNid].deactivate()
+ entry.activate()
+ }}
+ >
+
+
+
+ {
+ vis ?
+
{
+ entry.visible = false;
+ sc.render()
+ forceUpdate()
+ }}
+ >
+
+
+ :
+
{
+ entry.visible = true;
+ sc.render()
+ forceUpdate()
+ }}
+ >
+
+
+ }
+
+
{
+ if (entId[0] == 'm') {
+ entry.material.color.set(color.hover)
+ sc.render()
+ }
+ }}
+ onPointerLeave={() => {
+ const obj = entry
+ if (entId[0] == 'm' && !sc.selected.includes(obj)) {
+ obj.material.color.set(color.m)
+ sc.render()
+ }
+ }}
+ onPointerDown={() => {
+ if (entId[0] == 'm') {
+ sc.selected.push(
+ entry
+ )
+ sc.render()
+ }
+ }}
+ >
+ {entId}
+
+
+
+}
+
+const DesignLeaf = () => {
+
+}
\ No newline at end of file
diff --git a/src/icons.jsx b/src/icons.jsx
new file mode 100644
index 0000000..882f6ce
--- /dev/null
+++ b/src/icons.jsx
@@ -0,0 +1,174 @@
+import * as React from "react";
+function Arc(props) {
+ return (
+
+ );
+}
+
+function Intersect(props) {
+ return (
+
+ );
+}
+
+function Line(props) {
+ return (
+
+ );
+}
+
+function Subtract(props) {
+ return (
+
+ );
+}
+
+function Union(props) {
+ return (
+
+ );
+}
+export { Arc, Intersect, Line, Subtract, Union };
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index b3f5027..69e1eb3 100644
--- a/src/index.js
+++ b/src/index.js
@@ -65,6 +65,7 @@ window.store = createStore(reducer, preloadedState, applyMiddleware(logger))
+
document.addEventListener('DOMContentLoaded', () => {
ReactDOM.render(
React.createElement(Root, { store: store }, null)
diff --git a/src/utils/mouseEvents.js b/src/utils/mouseEvents.js
index d7b0c7a..059850b 100644
--- a/src/utils/mouseEvents.js
+++ b/src/utils/mouseEvents.js
@@ -39,7 +39,6 @@ export function onHover(e) {
const obj = this.hovered[this.hovered.length - 1]
if (obj && !this.selected.includes(obj)) {
- // obj.material.color.set(0x555555)
obj.material.color.set(color[obj.name[0]])
}
this.hovered = []