From 603df6c37707f1bce77a44158042ebed9d346a11 Mon Sep 17 00:00:00 2001 From: Martin Felis Date: Mon, 12 Jan 2026 22:03:22 +0100 Subject: [PATCH] Some documentation extensions. --- README.md | 31 +++++++++++++++++++++++++++++-- doc/design.md | 15 ++++++++------- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0e18e6f..380b590 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,30 @@ -# Synced Animation Graphs for Godot +# Blendalot - A Magical Animation System for Godot -This is a very much work in progress repository. Very rough drafts of the design and API can be found in the doc folder. \ No newline at end of file +**Status**: This is a very much work in progress repository. Very rough drafts of the design and API can be found in the +doc folder. + +Blendalot is an experimental animation system for Godot that is currently in development. + +Stay tuned for more... + +## License + +Copyright (c) 2025-2026 Martin Felis + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/doc/design.md b/doc/design.md index c132c78..4ae8c5f 100644 --- a/doc/design.md +++ b/doc/design.md @@ -104,9 +104,9 @@ Some nodes have special names in the Blend Tree: parent of both AnimationA and TimeScale. Conversely, AnimationA and TimeScale are child nodes of the Blend2 node. -## Blend Tree Evaluation Process +### Blend Tree Evaluation Process -### Ownership of evaluation data (inputs and outputs) +#### Ownership of evaluation data (inputs and outputs) Except for the output node of a Blend Tree the following properties hold: @@ -123,15 +123,16 @@ Disadvantages: * Data has to be managed by the Blend Tree => additional bookkeeping there. -### Evaluation +#### Evaluation Evaluation of the Blend Tree happens in multiple phases to ensure we have syncing dependent timing information available before performing the actual evaluation. Essentially the Blend Tree has to call the following function on all nodes: -1. `ActivateInputs(Vector inputs)`: right to left (i.e. from the root node via depth first to the leaf nodes) -2. `CalculateSyncTracks(Vector inputs)`: left to right (leaf nodes to root node) -3. UpdateTime(): right to left -4. Evaluate(): left to right +1. `ActivateInputs(const Vector &input_nodes)`: right to left (i.e. from the root node via depth + first to the leaf nodes) +2. `CalculateSyncTracks(const Vector &input_nodes)`: left to right (leaf nodes to root node) +3. `UpdateTime(delta)`: right to left +4. `Evaluate(const Vector &input_data, AnimationData& output)`: left to right ## State Machines