diff --git a/app/src/lib/graph-interface/debug/index.ts b/app/src/lib/graph-interface/debug/index.ts
index 34d66e6..cd95315 100644
--- a/app/src/lib/graph-interface/debug/index.ts
+++ b/app/src/lib/graph-interface/debug/index.ts
@@ -1,4 +1,5 @@
import type { Box } from '@nodarium/types';
+import type { Color } from 'three';
import { Vector3 } from 'three/src/math/Vector3.js';
import Component from './Debug.svelte';
import { lines, points, rects } from './store';
@@ -11,7 +12,6 @@ export function debugPosition(x: number, y: number) {
}
export function debugRect(rect: Box) {
- console.log(rect);
rects.update((r) => {
r.push(rect);
return r;
diff --git a/app/src/lib/graph-interface/graph-manager.svelte.ts b/app/src/lib/graph-interface/graph-manager.svelte.ts
index 2cff200..b47a664 100644
--- a/app/src/lib/graph-interface/graph-manager.svelte.ts
+++ b/app/src/lib/graph-interface/graph-manager.svelte.ts
@@ -109,7 +109,7 @@ export class GraphManager extends EventEmitter<{
const serialized = {
id: this.graph.id,
settings: $state.snapshot(this.settings),
- meta: this.graph.meta,
+ meta: $state.snapshot(this.graph.meta),
nodes,
edges
};
@@ -274,7 +274,7 @@ export class GraphManager extends EventEmitter<{
})
);
- const edges = graph.edges.map((edge) => {
+ this.edges = graph.edges.map((edge) => {
const from = nodes.get(edge[0]);
const to = nodes.get(edge[2]);
if (!from || !to) {
@@ -287,8 +287,6 @@ export class GraphManager extends EventEmitter<{
return [from, edge[1], to, edge[3]] as Edge;
});
- this.edges = [...edges];
-
this.nodes.clear();
for (const [id, node] of nodes) {
this.nodes.set(id, node);
@@ -305,7 +303,7 @@ export class GraphManager extends EventEmitter<{
this.status = 'loading';
this.id = graph.id;
- logger.info('loading graph', graph);
+ logger.info('loading graph', { nodes: graph.nodes, edges: graph.edges, id: graph.id });
const nodeIds = Array.from(new Set([...graph.nodes.map((n) => n.type)]));
await this.registry.load(nodeIds);
@@ -645,6 +643,13 @@ export class GraphManager extends EventEmitter<{
if (this.currentUndoGroup) return;
const state = this.serialize();
this.history.save(state);
+
+ // This is some stupid race condition where the graph-manager emits a save event
+ // when the graph is not fully loaded
+ if (this.nodes.size === 0 && this.edges.length === 0) {
+ return;
+ }
+
this.emit('save', state);
logger.log('saving graphs', state);
}
diff --git a/app/src/lib/graph-interface/graph/Wrapper.svelte b/app/src/lib/graph-interface/graph/Wrapper.svelte
index 39af05e..3e08e8e 100644
--- a/app/src/lib/graph-interface/graph/Wrapper.svelte
+++ b/app/src/lib/graph-interface/graph/Wrapper.svelte
@@ -70,12 +70,6 @@
}
});
- $effect(() => {
- if (settingTypes && settings) {
- manager.setSettings(settings);
- }
- });
-
manager.on("settings", (_settings) => {
settingTypes = { ...settingTypes, ..._settings.types };
settings = _settings.values;
diff --git a/app/src/lib/node-registry.ts b/app/src/lib/node-registry.ts
index 9594c61..b6d03e6 100644
--- a/app/src/lib/node-registry.ts
+++ b/app/src/lib/node-registry.ts
@@ -4,7 +4,6 @@ import path from 'path';
export async function getWasm(id: `${string}/${string}/${string}`) {
const filePath = path.resolve(`./static/nodes/${id}`);
- console.log({ filePath });
try {
await fs.access(filePath);
diff --git a/app/src/lib/project-manager/ProjectManager.svelte b/app/src/lib/project-manager/ProjectManager.svelte
index df09a0c..efdf483 100644
--- a/app/src/lib/project-manager/ProjectManager.svelte
+++ b/app/src/lib/project-manager/ProjectManager.svelte
@@ -1,18 +1,32 @@
diff --git a/app/src/routes/+page.svelte b/app/src/routes/+page.svelte
index ea996ce..6d89f4a 100644
--- a/app/src/routes/+page.svelte
+++ b/app/src/routes/+page.svelte
@@ -85,21 +85,16 @@
callback: () => randomGenerate(),
},
]);
+
let graphSettings = $state>({});
+ let graphSettingTypes = $state({
+ randomSeed: { type: "boolean", value: false },
+ });
$effect(() => {
- if (graphSettings) {
+ if (graphSettings && graphSettingTypes) {
manager?.setSettings($state.snapshot(graphSettings));
}
});
- type BooleanSchema = {
- [key: string]: {
- type: "boolean";
- value: false;
- };
- };
- let graphSettingTypes = $state({
- randomSeed: { type: "boolean", value: false },
- });
async function update(
g: Graph,
diff --git a/app/src/routes/dev/+page.svelte b/app/src/routes/dev/+page.svelte
index ebe4081..6166fa2 100644
--- a/app/src/routes/dev/+page.svelte
+++ b/app/src/routes/dev/+page.svelte
@@ -26,7 +26,6 @@
let nodeWasmWrapper = $state>();
async function fetchNodeData(nodeId?: NodeId) {
- console.log("FETCHING", { nodeId });
nodeWasm = undefined;
nodeInstance = undefined;
diff --git a/packages/types/src/types.ts b/packages/types/src/types.ts
index b627f2f..2a9167b 100644
--- a/packages/types/src/types.ts
+++ b/packages/types/src/types.ts
@@ -77,7 +77,7 @@ export type Socket = {
export type Edge = [NodeInstance, number, NodeInstance, string];
export const GraphSchema = z.object({
- id: z.number().optional(),
+ id: z.number(),
meta: z
.object({
title: z.string().optional(),