Creating a feature

To create an avatar feature, you need to create a class that inherits from AvatarFeature A Feature must have the following attributes:

  • AvatarReadyName to define the name of the feature for the avatar ready inspector

  • AvatarReadySupportedProvider to define the providers that support this feature

One or many AvatarReadyConstOption / AvatarReadyObjectOptionAttribute / AvatarReadyReflectionOptionAttribute to add parameters to the feature that can be edited in the avatar ready inspector.

Example of attributes for the Hide Avatar If IK Mismatch Feature
[AvatarReadyName("Hide Avatar if IK Mismatch",
    "Hide the body of the avatar when there is a mismatch between user's position and avatar's position, eg. when teleporting")]
[AvatarReadySupportedProvider(typeof(AvatarProvider), false)]
[AvatarReadySupportedSystem(typeof(IKAnimationSystem))]
[AvatarReadyConstOption(0, "Tolerance Distance", "toleranceDistance", typeof(float), 0.25f)]
public class HideAvatarIfIKMismatchFeature : AvatarFeature
{
    ...
}

Features can implement two functions inherited from AvatarFeature, InitFeature and ResetFeature if some setup and clean up are needed for the feature

public abstract class AvatarFeature : MonoBehaviour
{
    public virtual void InitFeature(AvatarReady avatar = null) { }

    public virtual void ResetFeature() { }
}

A feature is a Unity Component (MonoBehaviour) that is added to the avatar.