140 Commits
Author SHA1 Message Date
doloro 2c3b670ab9 Add animation store for pre-made clips
aac.AnimationStore(folder) seeds a clip from an existing .anim asset and
returns a normal ClipBuilder, so pre-made clips work anywhere generated
clips do and can still be edited (looping, keyframes, toggles, blend
shapes). The Unity side clones the asset into the container and applies
the script's changes to the clone, leaving the original untouched.

- ClipData gains optional source; looping becomes Option<bool> so an
  untouched store clip keeps the asset's own looping setting.
- Add rust/examples/animation_store.rhai, a worked store example.
2026-09-18 14:52:02 +01:00
doloro 42a1234e7f shity basic one shot 2026-09-18 14:01:10 +01:00
doloro 5851077659 new read me 2026-09-18 13:06:03 +01:00
Haï~ ea45f7ef1a Remove UPM installation instructions:
The installation instructions incorrectly assumed that the state of the main branch is in a usable state, but this is a false assumption as all repositories in hai-vr are only tested to be working on release tags.
Redirect to the documentation website instead.
2026-01-31 15:18:07 +01:00
Haï~ 836adc8b60 V1.3.0-alpha.1 Add Modification API, named blend trees overload 2025-08-16 05:32:12 +02:00
Haï~ e16115d9a9 Add Modification API:
- The Modification API is designed specifically for the creation and distribution of modular prefabs, where a developer generates assets on their machine and distributes those generated assets to their users.
  - Add AacFlModification class.
  - Add (AacFlBase).Modification() which returns a AacFlModification.
2025-08-16 05:32:12 +02:00
Haï~ 399b721f4a Add named overload for NewBlendTree() and NewBlendTreeAsRaw():
- Add overload for NewBlendTree() which accepts a name.
- Add overload for NewBlendTreeAsRaw() which accepts a name.
- Addresses #56.
2025-07-11 01:51:45 +02:00
Haï~ 84f7f1d089 V1.2.0 Asset container provider & Final breaking changes 2025-06-23 17:34:24 +02:00
Haï~ 2abc34b61d V1.2.0-beta.2 Safeguard case where AssetContainer is null 2025-06-23 13:47:35 +02:00
Haï~ cfc6c5a9d6 Safeguard case where AssetContainer is null:
- Safeguard a case where AssetContainer is null.
- This covers a known case in Vixen where clips are generated in Edit mode for previews.
2025-06-23 13:46:45 +02:00
yewnyx c87904fbbb Add git url installation note for Unity projects to README (#52). 2025-06-02 02:19:38 +02:00
Tayou 114bea608b Include LICENSE.meta for installing through git url (#55):
- When installing AAC through git url in the Unity package manager (as opposed .unitypackage and ALCOM), the LICENSE file contained within the Packages/ folder would cause errors because files cannot be written there.
- This commit adds the meta file for that LICENSE file, and removes it and other meta files from the exclusion list.
- Original PR comments:

* include LICENSE.meta

generally all meta files should be included. For immutable packages like package registries (e.g. OpenUPM) this is required, as unity can't write a new meta file into the immutable directory. Therefore any files without a meta file will break. Luckily this is just the LICENSE file, no code. but unity still complains

* also include README.md.meta

there is no readme in the package directory. But if there was, its meta file should definitely not be excluded either.
2025-06-02 02:18:31 +02:00
Haï~ 6c16ef567a V1.2.0-beta.1 Asset container provider & Final breaking changes:
- Description for newly introduced code:
  - Add support for third-party asset container management.
    - In preparation for the introduction of [IAssetSaver in NDMF 1.6.0](https://github.com/bdunderscore/ndmf/releases/tag/1.6.0),
      add the ability to delegate the management of the asset container to a third party.
      - No new dependencies are added.
      - By default, the behaviour of Animator As Code is the same as V1.1.0.
    - Add new optional field `AacConfiguration.AssetContainerProvider` to specify an asset container provider.
    - Add new interface `IAacAssetContainerProvider` to abstract asset container management.
  - The above changes have been contributed by **[kb10uy (KOBAYASHI Yū)](https://github.com/kb10uy)** (first contribution).
- (BREAKING) As specified in the changelog for the official release of Animator As Code V1, breaking changes had been planned, and will be applied starting this version:
  - (BREAKING) AacFlSettingKeyframes constructor is now private.
    - For compatibility reasons, it was public for the duration of V1.1.x, and was already marked as obsolete in V1.1.x.
  - (BREAKING) The methods AacFlBase.InternalConfiguration and AacFlBase.InternalDoCreateLayer are now private.
    - For compatibility reasons, it was public for the duration of V1.1.x, and was already marked as obsolete in V1.1.x.
    - The class AacAccessorForExtensions replaced them.
  - These breaking changes are meant to be the last breaking changes for the lifetime of Animator As Code V1.
2024-11-29 12:06:32 +01:00
Haï~ ff681e6d96 (BREAKING) Apply planned breaking changes as specified in the AAC V1 release:
- As specified in the changelog for the official release of Animator As Code V1, breaking changes had been planned, and will be applied starting this version:
  - (BREAKING) AacFlSettingKeyframes constructor is now private.
    - For compatibility reasons, it was public for the duration of V1.1.x, and was already marked as obsolete in V1.1.x.
  - (BREAKING) The methods AacFlBase.InternalConfiguration and AacFlBase.InternalDoCreateLayer are now private.
    - For compatibility reasons, it was public for the duration of V1.1.x, and was already marked as obsolete in V1.1.x.
    - The class AacAccessorForExtensions replaced them.
2024-11-29 11:58:25 +01:00
Yū KOBAYASHI e445ba8321 Use AacSimpleAssetContainerProvider 2024-11-29 11:53:00 +01:00
Yū KOBAYASHI 061b5397df Add IAacAssetContainerProvider and AacSimpleAssetContainerProvider 2024-11-29 11:53:00 +01:00
Haï~ 735afd669f Update README.md 2024-08-21 04:42:34 +02:00
Haï~ 31383e79db V1.1.0 Public API release:
- Compatibility notes: https://docs.hai-vr.dev/updates/2024/08/21/p0
  - Alternatively, see or find: https://github.com/hai-vr/documentation/blob/main/updates/2024-08-21-p0.md
- Migration guide: https://docs.hai-vr.dev/docs/products/animator-as-code/migrating-v0-to-v1
- What's new: https://docs.hai-vr.dev/docs/products/animator-as-code/v1.1-whats-new
- Planned future breaking changes:
  - The AacFlSettingKeyframes constructor will be made private/internal in V1.2.0.
  - The methods AacFlBase.InternalConfiguration and AacFlBase.InternalDoCreateLayer will be made private/internal in V1.2.0.
  - For compatibility reasons they remain public for the duration of V1.1.x.
- There are no other breaking changes to be expected for the lifetime of V1.
2024-08-21 04:09:21 +02:00
Haï~ 1f4bf4ec83 V1.1.0-beta.9 Expose accessors 2024-08-19 10:52:48 +02:00
Haï~ 705f25df3b Add AacAccessorForExtensions:
- Add static class AacAccessorForExtensions:
  - Provides methods for use by extension functions, exposing methods departing from normal fluent interface usage.
- Prepare to make methods marked "Not for public use" private starting from V1.2.0.
- Due to their active use in other packages, it is not immediately private.
2024-08-19 07:26:56 +02:00
Haï~ d7d240a7c3 V1.1.0-beta.8 Functional fixes 2024-08-19 03:26:07 +02:00
Haï~ 5df8f375ad Fix calling Or() after TransitionsFromEntry().When(...) no longer fails:
- Calling Or() after TransitionsFromEntry().When(...) used to fail due to an unexpected internal state.
- This was due to the implicit conversion operator, which converted a null AnimationState to a AacTransitionEndpoint containing null in it.
- Fix this by returning null in the implicit conversion operators.
2024-08-19 03:22:35 +02:00
Haï~ cca33c83da Make sure State and SSM names don't contain a period '.':
- If the name of a state contains a period ".", it can cause the animator to misbehave, so sanitize it.
  - Transitions would not work properly during the runtime execution of the animator.
  - Apparently this is because sub state machines internally use the dot as a separator.
  - Sanitize the name so that menu state names such as "J. Inner" don't mess things up.
2024-08-19 01:49:37 +02:00
Haï~ 01724155b0 Fix Any state transitions will be created from SSMs:
- Due to an implementation error, creating Any state transitions previously did not have any effect in the graph.
- This now creates Any state from the root machine.
- Sub-state machines "cannot" have Any state transitions created directly from them.
- Internally, Any always comes from the root state machine, but visually in the graph, it will come from the sub-state machine.
2024-08-19 01:40:08 +02:00
Haï~ 4c50d8876e V1.1.0-beta.7 Keep AacFlSettingKeyframes public until V1.2.0 2024-08-18 20:01:18 +02:00
Haï~ d9d2d74c97 Keep AacFlSettingKeyframes public until V1.2.0:
- Keep AacFlSettingKeyframes public until V1.2.0, where it will be made internal.
- AacFlSettingKeyframes is still used in CGE, but CGE already accepts AAC V1.1.x.
2024-08-18 20:00:47 +02:00
Haï~ cb6ccce349 V1.1.0-beta.6 Fix error across packages 2024-08-18 19:43:40 +02:00
Haï~ c9c73155b9 Fix Animator Removal constructor actually needs to be public:
- Animator Removal is used exclusively by destructive workflow extensions.
2024-08-18 19:42:49 +02:00
Haï~ 27e4936445 V1.1.0-beta.5 Fix inconsistencies 2024-08-18 18:34:53 +02:00
Haï~ 68e20a0ffb (BREAKING) Make constructors non-public:
- Fix inconsistency where constructors were public.
2024-08-18 07:02:01 +02:00
Haï~ 0bddfdd7a3 (BREAKING) Replace public readonly fields with properties:
- Fix inconsistency by replacing public readonly fields with getter-only properties.
- Add PublicAPI annotation where it was missing.
2024-08-18 04:23:51 +02:00
Haï~ 98190a47d9 V1.1.0-beta.4 Fix inconsistency 2024-08-17 15:23:14 +02:00
Haï~ be1b4c3447 (BREAKING) Rename AacFlSettingObjectReferenceKeyframes to AacFlSettingKeyframesObjectReference:
- Breaking changes:
  - Rename AacFlSettingObjectReferenceKeyframes to AacFlSettingKeyframesObjectReference.
- This makes it more in line with AacFlSettingKeyframesColor.
- AacFlSettingObjectReferenceKeyframes was introduced specifically for Vixen, and it is meant to be used as a lambda expression, so the breaking damage should be limited.
2024-08-17 13:12:30 +02:00
Haï~ b58b1afd4d V1.1.0-beta.3 Fix more inconsistencies 2024-08-17 08:13:23 +02:00
Haï~ bddad26c0f Rename AacFlSettingCurveColor.WithKeyframes(...) to WithUnit(...):
- Fix inconsistency by renaming AacFlSettingCurveColor.WithKeyframes(...) to WithUnit(...).
- The previous method is obsoleted, but remains.
2024-08-17 08:03:28 +02:00
Haï~ 207ffffb65 Code cleanup, no functional changes. 2024-08-15 10:47:48 +02:00
Haï~ 00e20cda51 Make Component[] null-element safe and add missing multi-component:
- Make Component[] null-element safe.
- Add missing multi-component variations of existing APIs.
- Inline documentation pass.
2024-08-15 06:50:58 +02:00
Haï~ c47e49d516 Work towards correcting inconsistencies in the API:
- Rename *Percent to *Normalized.
- Update inline documentation.
- Add additional single-valued and array overloads.
- Add AacFlSettingCurveObjectReference.WithUnit to be on-par with AacFlSettingCurve.
2024-07-05 02:30:01 +02:00
Haï~ 52c64d97f9 Add AacFlState.WithMotionTime to replace AacFlState.MotionTime:
- Add AacFlState.WithMotionTime(...) to replace AacFlState.MotionTime()
- This is more in line with the function naming convention.
2024-07-03 12:56:40 +02:00
Haï~ 4858f8025b V1.1.0-beta.2 Make public field readonly, update inline docs 2024-07-02 02:16:47 +02:00
Haï~ c607eb938d Fix AacFlState.WithCycleOffset(AacFlFloatParameter floatParam) now correctly enables the parameter 2024-07-01 23:21:18 +02:00
Haï~ 3ecefd7f4a (BREAKING) Make AacFlController.AnimatorController read-only:
- Breaking changes:
  - Make AacFlController.AnimatorController read-only.
2024-07-01 23:21:18 +02:00
Haï~ 0afabd9fd6 Update LICENSE:
- Add galister for major contributions.
2024-07-01 23:21:17 +02:00
Haï~ e50ea684a5 Do a pass on the documentation:
- Add and update inline documentation.
- Mark some inconsistencies.
- Not everything is reviewed yet.
2024-07-01 23:16:51 +02:00
Haï~ c54c377202 Update README.md 2024-06-30 14:14:35 +02:00
Haï~ e17d1d2828 V1.1.0-beta.1 Accomodate new VRCAnimatorPlayAudio requirements 2024-06-30 14:05:25 +02:00
Haï~ 582b109a82 Accomodate new VRCAnimatorPlayAudio requirements:
- Nodes need to know the Animator Root, so that relative paths can be resolved during the creation of State behaviours (i.e. Relative path of an AudioSource).
- Nodes need to have the ability to create a New Behaviour, even if one already exists.
2024-06-30 13:58:54 +02:00
Haï~ a9e1b62818 V1.0.9940 Prepare for ToeTra Rig Creator 2024-03-18 01:27:15 +01:00
Haï~ 689080e032 Change the zAutogenerated asset prefix to directory-like:
- Change the zAutogenerated__ prefix to zAutogenerated/
- This allows the zAutogenerated/ assets to display in a dedicated menu in the animation editor when the animator is selected.
- For legacy compatibility, the old prefix is still matched for the invocation of ClearPreviousAssets() in addition to the new.
2024-02-04 04:23:10 +01:00
Haï~ 89f176a6d2 Add AacFlLayer.WithBlendingMode 2024-01-24 18:13:44 +01:00