Make the 'Decompose Rotation' node return degrees not radians; add tooltip documentation to transform nodes (#3268)

Make the 'Decompose Rotation' node return degrees not radians, and add tooltip documentation to transformation nodes
This commit is contained in:
Keavon Chambers 2025-10-07 02:36:35 -07:00 committed by GitHub
parent 91b08f4b4f
commit 55a64064b0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 1 deletions

View File

@ -8,6 +8,7 @@ use core::f64;
use glam::{DAffine2, DVec2}; use glam::{DAffine2, DVec2};
use graphene_core_shaders::color::Color; use graphene_core_shaders::color::Color;
/// Applies the specified transform to the input value, which may be a graphic type or another transform.
#[node_macro::node(category(""))] #[node_macro::node(category(""))]
async fn transform<T: ApplyTransform + 'n + 'static>( async fn transform<T: ApplyTransform + 'n + 'static>(
ctx: impl Ctx + CloneVarArgs + ExtractAll + ModifyFootprint, ctx: impl Ctx + CloneVarArgs + ExtractAll + ModifyFootprint,
@ -46,6 +47,7 @@ async fn transform<T: ApplyTransform + 'n + 'static>(
transform_target transform_target
} }
/// Overwrites the transform of each element in the input table with the specified transform.
#[node_macro::node(category(""))] #[node_macro::node(category(""))]
fn replace_transform<Data, TransformInput: Transform>( fn replace_transform<Data, TransformInput: Transform>(
_: impl Ctx + InjectFootprint, _: impl Ctx + InjectFootprint,
@ -58,6 +60,8 @@ fn replace_transform<Data, TransformInput: Transform>(
data data
} }
// TODO: Figure out how this node should behave once #2982 is implemented.
/// Obtains the transform of the first element in the input table, if present.
#[node_macro::node(category("Math: Transform"), path(graphene_core::vector))] #[node_macro::node(category("Math: Transform"), path(graphene_core::vector))]
async fn extract_transform<T>( async fn extract_transform<T>(
_: impl Ctx, _: impl Ctx,
@ -74,21 +78,25 @@ async fn extract_transform<T>(
vector.iter().next().map(|row| *row.transform).unwrap_or_default() vector.iter().next().map(|row| *row.transform).unwrap_or_default()
} }
/// Produces the inverse of the input transform, which is the transform that undoes the effect of the original transform.
#[node_macro::node(category("Math: Transform"))] #[node_macro::node(category("Math: Transform"))]
fn invert_transform(_: impl Ctx, transform: DAffine2) -> DAffine2 { fn invert_transform(_: impl Ctx, transform: DAffine2) -> DAffine2 {
transform.inverse() transform.inverse()
} }
/// Extracts the translation component from the input transform.
#[node_macro::node(category("Math: Transform"))] #[node_macro::node(category("Math: Transform"))]
fn decompose_translation(_: impl Ctx, transform: DAffine2) -> DVec2 { fn decompose_translation(_: impl Ctx, transform: DAffine2) -> DVec2 {
transform.translation transform.translation
} }
/// Extracts the rotation component (in degrees) from the input transform. This, together with the "Decompose Scale" node, also may jointly represent any shear component in the original transform.
#[node_macro::node(category("Math: Transform"))] #[node_macro::node(category("Math: Transform"))]
fn decompose_rotation(_: impl Ctx, transform: DAffine2) -> f64 { fn decompose_rotation(_: impl Ctx, transform: DAffine2) -> f64 {
transform.decompose_rotation() transform.decompose_rotation().to_degrees()
} }
/// Extracts the scale component from the input transform. This, together with the "Decompose Rotation" node, also may jointly represent any shear component in the original transform.
#[node_macro::node(category("Math: Transform"))] #[node_macro::node(category("Math: Transform"))]
fn decompose_scale(_: impl Ctx, transform: DAffine2) -> DVec2 { fn decompose_scale(_: impl Ctx, transform: DAffine2) -> DVec2 {
transform.decompose_scale() transform.decompose_scale()