-
-
Notifications
You must be signed in to change notification settings - Fork 21.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Overhaul the top sections of the class reference (Animation classes) #76549
Overhaul the top sections of the class reference (Animation classes) #76549
Conversation
2246338
to
21e79f0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was in the conversation with Lyuma and we covered the sticking points of the documentation a week ago?
There's a lot of text to review and I'm a fan of worse is better. Worse is better than perfection.
There are additional changes I haven't talked about (added a few missing descriptions, changed some wording) so it'd be good to take another look anyway. |
21e79f0
to
2fe0979
Compare
35c1193
to
04487c7
Compare
04487c7
to
4af3fc7
Compare
Thanks! |
Cherry-picked for 4.0.4. |
The top sections of classes are often one of the first things users read about them, so they are important to get right.
Part of a series; this is the one dedicated to the animation team. Here are the others so far: #76526 (core), #76600 (animation), #76702 (GUI & text)
In this PR I mostly touched up the short descriptions and occasionally the full descriptions and the tutorials sections. But I also tweaked a little bit of documentation to the side and added a few descriptions.
Rules for brief descriptions
I'm abiding by a set of rules for consistency. I had them in mind when writing all descriptions, but violated them intentionally sometimes.
Use the articles "a" and "an". This is helpful for words that can be multiple things, i.e. "light" which can be a noun, an adjective, and a verb. This, and the fact it's grammatically correct, helps with reading comprehension in many cases.
Use a single sentence with punctuation. If two sentences are needed, don't use newline.
Never use text formatting (i.e. italics) or external links.
Don't use capitalization for normal words. If referring to a class, use a reference.
For nodes, always answer "What is this?". For non-node objects, it's also OK to answer "What does this do?"
Avoid self-referencing, such as "Popup: Popup is a [...]"
Avoid circular reasoning such as "CanvasLayer: Canvas drawing layer."
When a class is abstract, start with "Abstract base class for [...]".
I often used "Holds X" and "Stores X" to replace "Contains X" - I think it improves clarity that X is the main thing, not just one of the things the resource holds.
Try to stay under 120 characters without comprimising the quality of writing. (Sometimes it's impossible, in that case, go on for a bit longer)
A long list of brief description changes
Classes not on here are ones I thought to be already excellent, or ones that I didn't realize were "animation". This list might be a slightly outdated (like, by 1%).
Animation: Holds data that can be used to animate anything in the engine.
AnimationLibrary: Stores a set of [Animation] resources.
{Change link title of the tutorial of all the below to "Using AnimationTree"}
AnimationNode: Base class for [AnimationTree] nodes. Not related to scene nodes.
AnimationNodeAnimation: An input animation used in [AnimationNodeBlendTree].
AnimationNodeBlendSpace1D: A set of [AnimationRootNode]s placed on a virtual axis, crossfading between the two adjacent ones. Used by [AnimationTree].
AnimationNodeBlendSpace2D: A set of [AnimationRootNode]s placed on 2D coordinates, crossfading between the three adjacent ones. Used by [AnimationTree].
AnimationNodeBlendTree: A sub-tree of blend type [AnimationNode]s used for complex animations. Used by [AnimationTree].
AnimationNodeOneShot: Plays an animation once in an [AnimationNodeBlendTree].
AnimationNodeOutput: The animation output node of an [AnimationNodeBlendTree].
AnimationNodeStateMachine: A state machine with multiple [AnimationRootNode]s, used by [AnimationTree].
AnimationNodeStateMachinePlayback: Provides playback control for [AnimationNodeStateMachine].
AnimationNodeStateMachineTransition: A transition within an [AnimationNodeStateMachine] connecting two [AnimationRootNode]s.
AnimationNodeSync: Base class for [AnimationNode]s with more than two input ports that must be synchronized.
AnimationNodeTimeScale: A time-seeking animation node used in [AnimationTree].
AnimationNodeTimeSeek: A time-scaling animation node used in [AnimationTree].
AnimationNodeTransition: A transition within an [AnimationTree] connecting two [AnimationNode]s.
AnimationPlayer: A node used for animation playback.
AnimationRootNode: Base class for [AnimationNode]s used by [AnimationTree] to store one or multiple composite animations.
AnimationTree: A node used for advanced animation transitions in an [AnimationPlayer].
Bone2D: A joint used with [Skeleton2D] to control and animate other nodes.
BoneAttachment3D: А node that copies the 3D transform of a bone in its parent [Skeleton3D].
BoneMap: Describes a mapping of bone names for retargeting [Skeleton3D] into common names defined by a [SkeletonProfile].
PhysicalBone2D: A [RigidBody2D]-derived node used to make [Bone2D]s in a [Skeleton2D] react to physics.
PhysicalBone3D: A physics body used to make bones in a [Skeleton3D] react to physics.
Skeleton2D: The parent of a hierarchy of [Bone2D]s, used to create a 2D skeletal animation.
Skeleton3D: A node containing a bone hierarchy, used by [MeshInstance3D] to create a 3D skeletal animation.
SkeletonIK3D: A node used to rotate all bones of a [Skeleton3D] bone chain a way that places the end bone at a desired 3D position.
SkeletonModification2D: Base class for resources that operates on [Bone2D]s in a [Skeleton2D].
SkeletonModification2DTwoBoneIK: A modification that rotates two bones using the law of cosines to reach the target.
SkeletonProfile: Base class for a profile of a virtual skeleton used as a target for retargeting.
Tween: A lightweight object for animating from scripts, assigning each animation to a [Tweener].
Tweener: Abstract base class for all tweeners used by [Tween].
Thanks a ton to Lyuma who helped with and reviewed some of these changes in advance.