Skip to content

Commit 4d4977e

Browse files
committed
Extract gmath_nodes from gcore::ops, create mods debug and extract_xy
1 parent bb01fd9 commit 4d4977e

File tree

16 files changed

+668
-580
lines changed

16 files changed

+668
-580
lines changed

Cargo.lock

Lines changed: 13 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ members = [
77
"node-graph/gapplication-io",
88
"node-graph/gcore",
99
"node-graph/gstd",
10+
"node-graph/gmath-nodes",
1011
"node-graph/gpath-bool",
1112
"node-graph/graph-craft",
1213
"node-graph/graphene-cli",
@@ -25,6 +26,7 @@ default-members = [
2526
"frontend/wasm",
2627
"node-graph/gcore",
2728
"node-graph/gstd",
29+
"node-graph/gmath-nodes",
2830
"node-graph/gpath-bool",
2931
"node-graph/graph-craft",
3032
"node-graph/graphene-cli",
@@ -43,6 +45,7 @@ math-parser = { path = "libraries/math-parser" }
4345
path-bool = { path = "libraries/path-bool" }
4446
graphene-application-io = { path = "node-graph/gapplication-io" }
4547
graphene-core = { path = "node-graph/gcore" }
48+
graphene-math-nodes = { path = "node-graph/gmath-nodes" }
4649
graphene-path-bool = { path = "node-graph/gpath-bool" }
4750
graph-craft = { path = "node-graph/graph-craft" }
4851
graphene-std = { path = "node-graph/gstd" }

editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use graph_craft::ProtoNodeIdentifier;
1616
use graph_craft::concrete;
1717
use graph_craft::document::value::*;
1818
use graph_craft::document::*;
19-
use graphene_std::ops::XY;
19+
use graphene_std::extract_xy::XY;
2020
use graphene_std::raster::brush_cache::BrushCache;
2121
use graphene_std::raster::{CellularDistanceFunction, CellularReturnType, Color, DomainWarpType, FractalType, NoiseType, RedGreenBlueAlpha};
2222
use graphene_std::raster_types::{CPU, RasterDataTable};

editor/src/messages/portfolio/document/node_graph/node_properties.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use graph_craft::Type;
1212
use graph_craft::document::value::TaggedValue;
1313
use graph_craft::document::{DocumentNode, DocumentNodeImplementation, NodeId, NodeInput};
1414
use graphene_std::animation::RealTimeMode;
15-
use graphene_std::ops::XY;
15+
use graphene_std::extract_xy::XY;
1616
use graphene_std::path_bool::BooleanOperation;
1717
use graphene_std::raster::curve::Curve;
1818
use graphene_std::raster::{
@@ -1840,7 +1840,7 @@ pub fn offset_path_properties(node_id: NodeId, context: &mut NodePropertiesConte
18401840
}
18411841

18421842
pub fn math_properties(node_id: NodeId, context: &mut NodePropertiesContext) -> Vec<LayoutGroup> {
1843-
use graphene_std::ops::math::*;
1843+
use graphene_std::math_nodes::math::*;
18441844

18451845
let document_node = match get_document_node(node_id, context) {
18461846
Ok(document_node) => document_node,

editor/src/messages/portfolio/document_migration.rs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,51 @@ const REPLACEMENTS: &[(&str, &str)] = &[
2424
("graphene_core::ConstructArtboardNode", "graphene_core::graphic_element::ToArtboardNode"),
2525
("graphene_core::ToGraphicElementNode", "graphene_core::graphic_element::ToElementNode"),
2626
("graphene_core::ToGraphicGroupNode", "graphene_core::graphic_element::ToGroupNode"),
27+
("graphene_core::ops::MathNode", "graphene_math_nodes::MathNode"),
28+
("graphene_core::ops::AddNode", "graphene_math_nodes::AddNode"),
29+
("graphene_core::ops::SubtractNode", "graphene_math_nodes::SubtractNode"),
30+
("graphene_core::ops::MultiplyNode", "graphene_math_nodes::MultiplyNode"),
31+
("graphene_core::ops::DivideNode", "graphene_math_nodes::DivideNode"),
32+
("graphene_core::ops::ModuloNode", "graphene_math_nodes::ModuloNode"),
33+
("graphene_core::ops::ExponentNode", "graphene_math_nodes::ExponentNode"),
34+
("graphene_core::ops::RootNode", "graphene_math_nodes::RootNode"),
35+
("graphene_core::ops::LogarithmNode", "graphene_math_nodes::LogarithmNode"),
36+
("graphene_core::ops::SineNode", "graphene_math_nodes::SineNode"),
37+
("graphene_core::ops::CosineNode", "graphene_math_nodes::CosineNode"),
38+
("graphene_core::ops::TangentNode", "graphene_math_nodes::TangentNode"),
39+
("graphene_core::ops::SineInverseNode", "graphene_math_nodes::SineInverseNode"),
40+
("graphene_core::ops::CosineInverseNode", "graphene_math_nodes::CosineInverseNode"),
41+
("graphene_core::ops::TangentInverseNode", "graphene_math_nodes::TangentInverseNode"),
42+
("graphene_core::ops::RandomNode", "graphene_math_nodes::RandomNode"),
43+
("graphene_core::ops::ToU32Node", "graphene_math_nodes::ToU32Node"),
44+
("graphene_core::ops::ToU64Node", "graphene_math_nodes::ToU64Node"),
45+
("graphene_core::ops::ToF64Node", "graphene_math_nodes::ToF64Node"),
46+
("graphene_core::ops::RoundNode", "graphene_math_nodes::RoundNode"),
47+
("graphene_core::ops::FloorNode", "graphene_math_nodes::FloorNode"),
48+
("graphene_core::ops::CeilingNode", "graphene_math_nodes::CeilingNode"),
49+
("graphene_core::ops::MinNode", "graphene_math_nodes::MinNode"),
50+
("graphene_core::ops::MaxNode", "graphene_math_nodes::MaxNode"),
51+
("graphene_core::ops::ClampNode", "graphene_math_nodes::ClampNode"),
52+
("graphene_core::ops::EqualsNode", "graphene_math_nodes::EqualsNode"),
53+
("graphene_core::ops::NotEqualsNode", "graphene_math_nodes::NotEqualsNode"),
54+
("graphene_core::ops::LessThanNode", "graphene_math_nodes::LessThanNode"),
55+
("graphene_core::ops::GreaterThanNode", "graphene_math_nodes::GreaterThanNode"),
56+
("graphene_core::ops::LogicalOrNode", "graphene_math_nodes::LogicalOrNode"),
57+
("graphene_core::ops::LogicalAndNode", "graphene_math_nodes::LogicalAndNode"),
58+
("graphene_core::ops::LogicalNotNode", "graphene_math_nodes::LogicalNotNode"),
59+
("graphene_core::ops::BoolValueNode", "graphene_math_nodes::BoolValueNode"),
60+
("graphene_core::ops::NumberValueNode", "graphene_math_nodes::NumberValueNode"),
61+
("graphene_core::ops::PercentageValueNode", "graphene_math_nodes::PercentageValueNode"),
62+
("graphene_core::ops::CoordinateValueNode", "graphene_math_nodes::CoordinateValueNode"),
63+
("graphene_core::ops::ColorValueNode", "graphene_math_nodes::ColorValueNode"),
64+
("graphene_core::ops::GradientValueNode", "graphene_math_nodes::GradientValueNode"),
65+
("graphene_core::ops::StringValueNode", "graphene_math_nodes::StringValueNode"),
66+
("graphene_core::ops::DotProductNode", "graphene_math_nodes::DotProductNode"),
67+
("graphene_core::ops::SizeOfNode", "graphene_core::debug::SizeOfNode"),
68+
("graphene_core::ops::SomeNode", "graphene_core::debug::SomeNode"),
69+
("graphene_core::ops::UnwrapNode", "graphene_core::debug::UnwrapNode"),
70+
("graphene_core::ops::CloneNode", "graphene_core::debug::CloneNode"),
71+
("graphene_core::ops::ExtractXyNode", "graphene_core::extract_xy::ExtractXyNode"),
2772
("graphene_core::logic::LogicAndNode", "graphene_core::ops::LogicAndNode"),
2873
("graphene_core::logic::LogicNotNode", "graphene_core::ops::LogicNotNode"),
2974
("graphene_core::logic::LogicOrNode", "graphene_core::ops::LogicOrNode"),

node-graph/gcore/Cargo.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@ wgpu = ["dep:wgpu"]
1414
dealloc_nodes = []
1515

1616
[dependencies]
17-
# Local dependencies
18-
math-parser = { workspace = true }
19-
2017
# Workspace dependencies
2118
bytemuck = { workspace = true }
2219
node-macro = { workspace = true }

node-graph/gcore/src/debug.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
use crate::raster_types::{CPU, RasterDataTable};
2+
use crate::{Color, Ctx};
3+
4+
/// Meant for debugging purposes, not general use. Returns the size of the input type in bytes.
5+
#[node_macro::node(category("Debug"))]
6+
fn size_of(_: impl Ctx, ty: crate::Type) -> Option<usize> {
7+
ty.size()
8+
}
9+
10+
/// Meant for debugging purposes, not general use. Wraps the input value in the Some variant of an Option.
11+
#[node_macro::node(category("Debug"))]
12+
fn some<T>(_: impl Ctx, #[implementations(f64, f32, u32, u64, String, Color)] input: T) -> Option<T> {
13+
Some(input)
14+
}
15+
16+
/// Meant for debugging purposes, not general use. Unwraps the input value from an Option, returning the default value if the input is None.
17+
#[node_macro::node(category("Debug"))]
18+
fn unwrap<T: Default>(_: impl Ctx, #[implementations(Option<f64>, Option<f32>, Option<u32>, Option<u64>, Option<String>, Option<Color>)] input: Option<T>) -> T {
19+
input.unwrap_or_default()
20+
}
21+
22+
/// Meant for debugging purposes, not general use. Clones the input value.
23+
#[node_macro::node(category("Debug"))]
24+
fn clone<'i, T: Clone + 'i>(_: impl Ctx, #[implementations(&RasterDataTable<CPU>)] value: &'i T) -> T {
25+
value.clone()
26+
}

node-graph/gcore/src/extract_xy.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use crate::Ctx;
2+
use dyn_any::DynAny;
3+
use glam::{DVec2, IVec2, UVec2};
4+
5+
/// Obtain the X or Y component of a coordinate.
6+
#[node_macro::node(name("Extract XY"), category("Math: Vector"))]
7+
fn extract_xy<T: Into<DVec2>>(_: impl Ctx, #[implementations(DVec2, IVec2, UVec2)] vector: T, axis: XY) -> f64 {
8+
match axis {
9+
XY::X => vector.into().x,
10+
XY::Y => vector.into().y,
11+
}
12+
}
13+
14+
/// The X or Y component of a coordinate.
15+
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, DynAny, node_macro::ChoiceType, specta::Type, serde::Serialize, serde::Deserialize)]
16+
#[widget(Dropdown)]
17+
pub enum XY {
18+
#[default]
19+
X,
20+
Y,
21+
}

node-graph/gcore/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ pub mod bounds;
88
pub mod color;
99
pub mod consts;
1010
pub mod context;
11+
pub mod debug;
12+
pub mod extract_xy;
1113
pub mod generic;
1214
pub mod gradient;
1315
mod graphic_element;

0 commit comments

Comments
 (0)