Skip to content

feat: add CancellationSource class attribute#185

Open
roflmuffin wants to merge 1 commit intoCat-Lips:mainfrom
roflmuffin:feature/add-cancellation-source
Open

feat: add CancellationSource class attribute#185
roflmuffin wants to merge 1 commit intoCat-Lips:mainfrom
roflmuffin:feature/add-cancellation-source

Conversation

@roflmuffin
Copy link
Copy Markdown

@roflmuffin roflmuffin commented Apr 7, 2026

This PR adds a new CancellationSource class attribute which adds an underlying public CancellationTokenSource Cts that is automatically cancelled and disposed when the node is exiting the tree. The Cts is lazily initialised and re-created when the node re-enters the tree.

I am also open to modifying this PR to use a partial property, i.e.

[CancellationSource]
public partial CancellationTokenSource Cts { get; }

It seems unlikely that you would ever need more than one cancellation token source per Node, so I've gone with the class attribute approach. With that being said I can see the benefit of flexibility of being able to name the Cts whatever you want and with whatever accessibility level.

My main use case for this attribute is when I have a VFX node that may do some long running animations or tweens, and is killed early. This lets you just pass the Cts.Token into the tweening code and allow it to gracefully handle the disposal of the node.

I'm not super experienced with source generators in general, so open to any feedback on this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant