diff --git a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/document_node_types.rs b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/document_node_types.rs index 42ed4b73..c9a41a2c 100644 --- a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/document_node_types.rs +++ b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/document_node_types.rs @@ -1936,7 +1936,7 @@ fn static_nodes() -> Vec { implementation: NodeImplementation::proto("graphene_core::ops::DivideNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), - DocumentInputType::value("Divisor", TaggedValue::F32(0.), false), + DocumentInputType::value("Divisor", TaggedValue::F32(1.), false), ], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::divide_properties, @@ -1948,7 +1948,7 @@ fn static_nodes() -> Vec { implementation: NodeImplementation::proto("graphene_core::ops::MultiplyNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), - DocumentInputType::value("Multiplicand", TaggedValue::F32(0.), false), + DocumentInputType::value("Multiplicand", TaggedValue::F32(1.), false), ], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::multiply_properties, @@ -1960,7 +1960,7 @@ fn static_nodes() -> Vec { implementation: NodeImplementation::proto("graphene_core::ops::ExponentNode<_>"), inputs: vec![ DocumentInputType::value("Primary", TaggedValue::F32(0.), true), - DocumentInputType::value("Power", TaggedValue::F32(0.), false), + DocumentInputType::value("Power", TaggedValue::F32(2.), false), ], outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)], properties: node_properties::exponent_properties, @@ -2506,7 +2506,7 @@ fn static_nodes() -> Vec { DocumentInputType::none(), DocumentInputType::value("Text", TaggedValue::String("Lorem ipsum".to_string()), false), DocumentInputType::value("Font", TaggedValue::Font(Font::new(DEFAULT_FONT_FAMILY.into(), DEFAULT_FONT_STYLE.into())), false), - DocumentInputType::value("Size", TaggedValue::F64(24.), false), + DocumentInputType::value("Size", TaggedValue::F32(24.), false), ], outputs: vec![DocumentOutputType::new("Vector", FrontendGraphDataType::Subpath)], properties: node_properties::node_section_font, @@ -2659,9 +2659,9 @@ fn static_nodes() -> Vec { implementation: NodeImplementation::proto("graphene_core::vector::ResamplePoints<_, _, _, _>"), inputs: vec![ DocumentInputType::value("Vector Data", TaggedValue::VectorData(graphene_core::vector::VectorData::empty()), true), - DocumentInputType::value("Spacing", TaggedValue::F64(100.), false), - DocumentInputType::value("Start Offset", TaggedValue::F64(0.), false), - DocumentInputType::value("Stop Offset", TaggedValue::F64(0.), false), + DocumentInputType::value("Spacing", TaggedValue::F32(100.), false), + DocumentInputType::value("Start Offset", TaggedValue::F32(0.), false), + DocumentInputType::value("Stop Offset", TaggedValue::F32(0.), false), DocumentInputType::value("Adaptive Spacing", TaggedValue::Bool(false), false), ], outputs: vec![DocumentOutputType::new("Vector", FrontendGraphDataType::Subpath)], @@ -2814,7 +2814,7 @@ pub static IMAGINATE_NODE: Lazy = Lazy::new(|| DocumentN default: NodeInput::Network(concrete!(WasmEditorApi)), }, DocumentInputType::value("Controller", TaggedValue::ImaginateController(Default::default()), false), - DocumentInputType::value("Seed", TaggedValue::F64(0.), false), // Remember to keep index used in `ImaginateRandom` updated with this entry's index + DocumentInputType::value("Seed", TaggedValue::U64(0), false), // Remember to keep index used in `ImaginateRandom` updated with this entry's index DocumentInputType::value("Resolution", TaggedValue::OptionalDVec2(None), false), DocumentInputType::value("Samples", TaggedValue::U32(30), false), DocumentInputType::value("Sampling Method", TaggedValue::ImaginateSamplingMethod(ImaginateSamplingMethod::EulerA), false), @@ -3007,7 +3007,7 @@ pub fn new_text_network(text: String, font: Font, size: f64) -> NodeNetwork { NodeInput::Network(concrete!(WasmEditorApi)), NodeInput::value(TaggedValue::String(text), false), NodeInput::value(TaggedValue::Font(font), false), - NodeInput::value(TaggedValue::F64(size), false), + NodeInput::value(TaggedValue::F32(size as f32), false), ], DocumentNodeMetadata::position((0, 4)), )); diff --git a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/node_properties.rs b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/node_properties.rs index f78f0e1a..6ad4fd0f 100644 --- a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/node_properties.rs +++ b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/node_properties.rs @@ -1327,19 +1327,19 @@ pub fn subtract_properties(document_node: &DocumentNode, node_id: NodeId, _conte } pub fn divide_properties(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec { - let widgets = number_widget(document_node, node_id, 1, "Divisor", NumberInput::default(), true); + let widgets = number_widget(document_node, node_id, 1, "Divisor", NumberInput::new(Some(1.)), true); vec![LayoutGroup::Row { widgets }] } pub fn multiply_properties(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec { - let widgets = number_widget(document_node, node_id, 1, "Multiplicand", NumberInput::default(), true); + let widgets = number_widget(document_node, node_id, 1, "Multiplicand", NumberInput::new(Some(1.)), true); vec![LayoutGroup::Row { widgets }] } pub fn exponent_properties(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec { - let widgets = number_widget(document_node, node_id, 1, "Power", NumberInput::default(), true); + let widgets = number_widget(document_node, node_id, 1, "Power", NumberInput::new(Some(2.)), true); vec![LayoutGroup::Row { widgets }] } diff --git a/node-graph/gcore/src/text.rs b/node-graph/gcore/src/text.rs index ea5e32b1..15f1a6aa 100644 --- a/node-graph/gcore/src/text.rs +++ b/node-graph/gcore/src/text.rs @@ -15,7 +15,7 @@ pub struct TextGeneratorNode { } #[node_fn(TextGeneratorNode)] -fn generate_text<'a: 'input, T>(editor: EditorApi<'a, T>, text: String, font_name: Font, font_size: f64) -> crate::vector::VectorData { +fn generate_text<'a: 'input, T>(editor: EditorApi<'a, T>, text: String, font_name: Font, font_size: f32) -> crate::vector::VectorData { let buzz_face = editor.font_cache.get(&font_name).map(|data| load_face(data)); - crate::vector::VectorData::from_subpaths(to_path(&text, buzz_face, font_size, None)) + crate::vector::VectorData::from_subpaths(to_path(&text, buzz_face, font_size as f64, None)) } diff --git a/node-graph/gcore/src/vector/vector_nodes.rs b/node-graph/gcore/src/vector/vector_nodes.rs index d133af05..029ff263 100644 --- a/node-graph/gcore/src/vector/vector_nodes.rs +++ b/node-graph/gcore/src/vector/vector_nodes.rs @@ -212,7 +212,11 @@ pub struct ResamplePoints { } #[node_macro::node_fn(ResamplePoints)] -fn resample_points(mut vector_data: VectorData, spacing: f64, start_offset: f64, stop_offset: f64, adaptive_spacing: bool) -> VectorData { +fn resample_points(mut vector_data: VectorData, spacing: f32, start_offset: f32, stop_offset: f32, adaptive_spacing: bool) -> VectorData { + let spacing = spacing as f64; + let start_offset = start_offset as f64; + let stop_offset = stop_offset as f64; + for subpath in &mut vector_data.subpaths { if subpath.is_empty() || spacing.is_zero() || !spacing.is_finite() { continue; diff --git a/node-graph/graph-craft/src/document/value.rs b/node-graph/graph-craft/src/document/value.rs index f507168f..8b12001c 100644 --- a/node-graph/graph-craft/src/document/value.rs +++ b/node-graph/graph-craft/src/document/value.rs @@ -20,6 +20,7 @@ pub enum TaggedValue { None, String(String), U32(u32), + U64(u64), F32(f32), F64(f64), Bool(bool), @@ -82,6 +83,7 @@ impl Hash for TaggedValue { Self::None => {} Self::String(x) => x.hash(state), Self::U32(x) => x.hash(state), + Self::U64(x) => x.hash(state), Self::F32(x) => x.to_bits().hash(state), Self::F64(x) => x.to_bits().hash(state), Self::Bool(x) => x.hash(state), @@ -159,6 +161,7 @@ impl<'a> TaggedValue { TaggedValue::None => Box::new(()), TaggedValue::String(x) => Box::new(x), TaggedValue::U32(x) => Box::new(x), + TaggedValue::U64(x) => Box::new(x), TaggedValue::F32(x) => Box::new(x), TaggedValue::F64(x) => Box::new(x), TaggedValue::Bool(x) => Box::new(x), @@ -219,6 +222,7 @@ impl<'a> TaggedValue { TaggedValue::None => "()".to_string(), TaggedValue::String(x) => format!("\"{x}\""), TaggedValue::U32(x) => x.to_string() + "_u32", + TaggedValue::U64(x) => x.to_string() + "_u64", TaggedValue::F32(x) => x.to_string() + "_f32", TaggedValue::F64(x) => x.to_string() + "_f64", TaggedValue::Bool(x) => x.to_string(), @@ -233,6 +237,7 @@ impl<'a> TaggedValue { TaggedValue::None => concrete!(()), TaggedValue::String(_) => concrete!(String), TaggedValue::U32(_) => concrete!(u32), + TaggedValue::U64(_) => concrete!(u64), TaggedValue::F32(_) => concrete!(f32), TaggedValue::F64(_) => concrete!(f64), TaggedValue::Bool(_) => concrete!(bool), @@ -296,6 +301,7 @@ impl<'a> TaggedValue { x if x == TypeId::of::<()>() => Ok(TaggedValue::None), x if x == TypeId::of::() => Ok(TaggedValue::String(*downcast(input).unwrap())), x if x == TypeId::of::() => Ok(TaggedValue::U32(*downcast(input).unwrap())), + x if x == TypeId::of::() => Ok(TaggedValue::U64(*downcast(input).unwrap())), x if x == TypeId::of::() => Ok(TaggedValue::F32(*downcast(input).unwrap())), x if x == TypeId::of::() => Ok(TaggedValue::F64(*downcast(input).unwrap())), x if x == TypeId::of::() => Ok(TaggedValue::Bool(*downcast(input).unwrap())), diff --git a/node-graph/interpreted-executor/src/node_registry.rs b/node-graph/interpreted-executor/src/node_registry.rs index 7cfa61bd..adc14532 100644 --- a/node-graph/interpreted-executor/src/node_registry.rs +++ b/node-graph/interpreted-executor/src/node_registry.rs @@ -623,7 +623,7 @@ fn node_registry() -> HashMap), fn_type!(u32), fn_type!(ImaginateSamplingMethod), @@ -734,7 +734,7 @@ fn node_registry() -> HashMap, input: Footprint, output: VectorData, fn_params: [Footprint => VectorData, Footprint => VectorData]), async_node!(graphene_core::vector::CopyToPoints<_, _>, input: Footprint, output: GraphicGroup, fn_params: [Footprint => VectorData, Footprint => GraphicGroup]), - register_node!(graphene_core::vector::ResamplePoints<_, _, _, _>, input: VectorData, params: [f64, f64, f64, bool]), + register_node!(graphene_core::vector::ResamplePoints<_, _, _, _>, input: VectorData, params: [f32, f32, f32, bool]), register_node!(graphene_core::vector::SplinesFromPointsNode, input: VectorData, params: []), register_node!(graphene_core::vector::generator_nodes::CircleGenerator<_>, input: (), params: [f32]), register_node!(graphene_core::vector::generator_nodes::EllipseGenerator<_, _>, input: (), params: [f32, f32]), @@ -748,7 +748,7 @@ fn node_registry() -> HashMap>, params: [Vec] ), - register_node!(graphene_core::text::TextGeneratorNode<_, _, _>, input: WasmEditorApi, params: [String, graphene_core::text::Font, f64]), + register_node!(graphene_core::text::TextGeneratorNode<_, _, _>, input: WasmEditorApi, params: [String, graphene_core::text::Font, f32]), register_node!(graphene_std::brush::VectorPointsNode, input: VectorData, params: []), register_node!(graphene_core::ExtractImageFrame, input: WasmEditorApi, params: []), async_node!(graphene_core::ConstructLayerNode<_, _>, input: Footprint, output: GraphicGroup, fn_params: [Footprint => graphene_core::GraphicElement, Footprint => GraphicGroup]),