From 7de9ce4a5e68aba0578d03b09b26d5fff367eac0 Mon Sep 17 00:00:00 2001 From: Rendo Date: Mon, 10 Aug 2026 04:20:21 +0500 Subject: [PATCH] refactor: split node and socket, delegated node updating and view to Nodes struct --- src/main.rs | 16 +++++++++------- src/node.rs | 46 ++++++++++++++++++++++++++-------------------- src/socket.rs | 15 +++++++++++++++ 3 files changed, 50 insertions(+), 27 deletions(-) create mode 100644 src/socket.rs diff --git a/src/main.rs b/src/main.rs index aca9cef..5bd9b71 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,17 +1,17 @@ mod node; +mod socket; -use iced::{Element, Point}; -use node::Node; +use iced::{Element}; + +use crate::node::{NodeMessage, Nodes}; #[derive(Default)] pub struct State { - nodes: Vec + nodes: Nodes } pub enum Message { - MoveNode(usize, Point), - SocketDragStart, - SocketDragEnd, + NodeMessage(NodeMessage) } impl State { @@ -19,7 +19,9 @@ impl State { todo!(); } pub fn update(&mut self, message: Message) { - todo!(); + match message { + Message::NodeMessage(message) => self.nodes.update(message) + } } } diff --git a/src/node.rs b/src/node.rs index 54be27f..0cc027c 100644 --- a/src/node.rs +++ b/src/node.rs @@ -1,30 +1,36 @@ use iced::{Element, Point}; -use crate::Message; +use crate::socket::{Socket,SocketData}; + +#[derive(Default)] +pub struct Nodes { + pub nodes: Vec, + pub sockets: Vec +} + +impl Nodes { + pub fn update(&mut self, message: NodeMessage) { + todo!(); + } + pub fn view(&self) -> Element<'_, crate::Message> { + todo!(); + } +} + +pub enum NodeMessage { + MoveNode(usize, Point), + SocketDragStart(usize), + SocketDragEnd(usize), +} pub struct Node { pub name: String, - pub inputs: Vec, - pub outputs: Vec, + pub inputs: Vec, + pub outputs: Vec, pub position: Point, - pub function: Box Vec> + pub function: Box Vec> } -pub struct Socket { - name: Option, - kind: SocketType, - data: SocketData -} - -pub enum SocketType { - Input, - Output, -} - -pub enum SocketData { - F32(f32) -} - -pub fn node(from: &Node, node_index: usize) -> Element<'_,Message> { +pub fn node(from: &Node, node_index: usize) -> Element<'_,crate::Message> { todo!(); } diff --git a/src/socket.rs b/src/socket.rs new file mode 100644 index 0000000..d162f74 --- /dev/null +++ b/src/socket.rs @@ -0,0 +1,15 @@ +pub struct Socket { + pub name: Option, + pub kind: SocketType, + pub data: SocketData +} + +pub enum SocketType { + Input, + Output, +} + +pub enum SocketData { + F32(f32) +} +