rhodonite
    Preparing search index...

    Class AnimationComponent

    A component that manages animation data and applies animation transformations to entities. This component handles various types of animations including transform, blend shape, material, light, camera, and Effekseer particle system animations.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    • The constructor of the Component class. When creating a Component, use the createComponent method of the ComponentRepository class instead of directly calling this constructor.

      Parameters

      • engine: Engine

        The engine instance

      • entityUid: number

        Unique ID of the corresponding entity

      • componentSid: number

        Scoped ID of the Component

      • entityRepository: EntityRepository

        The instance of the EntityRepository class (Dependency Injection)

      • isReUse: boolean

        Whether this component is being reused from a pool

      Returns AnimationComponent

    Properties

    __currentProcessStage: ProcessStageEnum = ProcessStage.Load
    __engine: Engine
    __entityRepository: EntityRepository

    the instance of EntityRepository

    __entityUid: number

    the entity unique Id which this component belongs to

    __isReUse: boolean = false
    __memoryManager: MemoryManager

    the instance of MemoryManager

    _isAlive: boolean = true
    _tags: RnTags = {}

    Collection of tags associated with this object

    isLoop: boolean = true
    time: number = 0
    useGlobalTime: boolean = true
    _processStages: ProcessStageEnum[] = ...
    currentMaxObjectCount: number = 0

    Current maximum object count for UID generation

    Event: { ChangeAnimationInfo: symbol; PlayEnd: symbol } = ...
    InvalidObjectUID: -1

    Invalid object UID constant

    Accessors

    • get _componentMemoryRegistry(): ComponentMemoryRegistry

      Gets the ComponentMemoryRegistry for this component's engine.

      Returns ComponentMemoryRegistry

    • get componentSID(): number

      Gets the Scoped ID of this Component instance. The SID is unique within the component type and represents the instance index.

      Returns number

      The component scoped ID

    • get entityUID(): number

      Gets the unique ID of the entity that owns this component.

      Returns number

      The entity unique ID

    • get objectUID(): number

      Gets the unique object identifier

      Returns number

      The object's UID

    • get uniqueName(): string

      Gets the unique name of this object

      Returns string

      The unique name string

    Methods

    • Component logic lifecycle method. Applies animation if animation is enabled.

      When multiple VRM models share the same skeleton (joint entities), animation calculations only need to be performed once per frame. This optimization works by checking if the SkeletalComponent's skinning cache will be used for this entity.

      The optimization flow:

      1. SkeletalComponent tracks which joint EntityUIDs had skinning cache hits
      2. Joints belonging to "leader" SkeletalComponents (those that compute skinning) are excluded from this tracking
      3. AnimationComponent checks if its entity is in the cached list
      4. If cached, early return skips animation calculation (skinning result will be reused)

      This significantly reduces CPU overhead when many VRM models share the same skeleton.

      Returns void

    • Adds a keyframe to the specified animation track at the given frame.

      Parameters

      • trackName: string

        The name of the animation track

      • pathName: AnimationPathName

        The name of the animation path

      • frameToInsert: number

        The frame number where to insert the keyframe

      • fps: number

        The frames per second rate

      Returns boolean

      True if the keyframe was successfully added, false otherwise

    • Adds a keyframe with a specific value to the specified animation track at the given frame.

      Parameters

      • trackName: string

        The name of the animation track

      • pathName: AnimationPathName

        The name of the animation path

      • frameToInsert: number

        The frame number where to insert the keyframe

      • output: number[]

        The array of output values for the keyframe

      • fps: number

        The frames per second rate

      Returns boolean

      True if the keyframe was successfully added, false otherwise

    • Deletes keyframes at the specified frame for the given animation track and path.

      Parameters

      • trackName: string

        The name of the animation track

      • pathName: AnimationPathName

        The name of the animation path

      • frameToDelete: number

        The frame number where to delete keyframes

      • fps: number

        The frames per second rate

      Returns boolean

      True if keyframes were successfully deleted, false otherwise

    • Gets the end input time value for the specified animation track.

      Parameters

      • animationTrackName: string

        The name of the animation track

      Returns number

      The maximum end input time value

    • Gets the start input time value for the specified animation track.

      Parameters

      • animationTrackName: string

        The name of the animation track

      Returns number

      The minimum start input time value

    • Retrieves a complete tag object (name and value) for the specified tag name

      Parameters

      • tagName: string

        The name of the tag to retrieve

      Returns Tag

      A Tag object containing the name and value

    • Retrieves the value associated with a specific tag name

      Parameters

      • tagName: string

        The name of the tag whose value to retrieve

      Returns any

      The tag value, or undefined if the tag doesn't exist

    • Checks if keyframes exist at the specified frame for the given animation track and path.

      Parameters

      • trackName: string

        The name of the animation track

      • pathName: AnimationPathName

        The name of the animation path

      • frame: number

        The frame number to check

      • fps: number

        The frames per second rate

      Returns boolean

      True if keyframes exist at the frame, false otherwise

    • Checks whether this object has a tag with the specified name

      Parameters

      • tagName: string

        The name of the tag to check for

      Returns boolean

      True if the tag exists (value is not null/undefined), false otherwise

    • Checks if this object has a tag with the specified name and value

      Parameters

      • tagName: string

        The tag name to match

      • tagValue: string

        The tag value to match

      Returns boolean

      True if the object has a matching tag, false otherwise

    • Checks if this object has all the specified tags with exactly matching values

      Parameters

      • tags: RnTags

        Object containing tag names as keys and expected values

      Returns boolean

      True if all specified tags exist with matching values, false otherwise

    • Checks if the object's combined tag string contains all the provided search strings. This allows for flexible searching within tag names and values.

      Parameters

      • stringArray: string[]

        Array of strings that must all be present in the combined tag string

      Returns boolean

      True if all strings are found in the combined tag string, false otherwise

    • Registers a dependency relationship with another component. This method is intended for future use in managing component dependencies.

      Parameters

      Returns void

      This method is not used yet and needs implementation

    • Sets an animation channel for the specified path. If a channel already exists for the path, it merges the new animation data with the existing one.

      Parameters

      • pathName: AnimationPathName

        The name of the animation path (e.g., 'translate', 'rotate', 'scale')

      • animatedValueArg: IAnimatedValue

        The animated value containing animation data

      Returns void

    • Sets the second active animation track for blending purposes.

      Parameters

      • animationTrackName: string

        The name of the second animation track to activate

      Returns void

    • Allocates memory for all member fields of this component instance. This method is called during component initialization to set up memory layout and allocate space for the specified number of entities.

      Parameters

      • componentCountPerBufferView: number

        The number of components per buffer view

      • isReUse: boolean

        Whether to reuse existing memory allocations

      Returns void

    • Attempts to set a tag on this object. If the tag already exists, it will be replaced.

      Parameters

      • tag: Tag

        The tag object containing the name and value to set

      Returns boolean

      True if the tag was successfully set, false if the tag name contains invalid characters

    • Attempts to set a unique name for this object

      Parameters

      • name: string

        The desired unique name

      • toAddNameIfConflict: boolean

        If true, appends UID to make name unique when conflicts occur; if false, fails on conflict

      Returns boolean

      True if the name was successfully set, false if there was a conflict and toAddNameIfConflict was false

    • Validates that a tag string contains only allowed characters (alphanumeric and underscore)

      Parameters

      • val: string

        The string to validate

      Returns boolean

      True if the string contains only valid characters, false if it contains invalid characters

    • Gets the pixel location offset in the buffer for a specific member of a component type. This is useful for GPU texture-based data access where locations are measured in pixels.

      Parameters

      • engine: Engine

        The engine instance

      • componentType: typeof Component

        The component class type

      • memberName: string

        The name of the member field

      Returns number[]

      The pixel location offset in the buffer

    • Retrieves an RnObject instance by its unique identifier

      Parameters

      • objectUid: number

        The unique identifier of the object to retrieve

      Returns RnObject | undefined

      The RnObject instance or undefined if not found or garbage collected

    • Processes all components of a given type for a specific process stage. This method iterates through all components of the specified type and calls their corresponding process stage method if they are in that stage.

      Parameters

      Returns void

    • Registers a member field of the component class for memory allocation. This method defines the memory layout and characteristics of component data members.

      Parameters

      • this: typeof Component
      • bufferUse: {
            arrayLength?: number;
            bufferUse: EnumIO;
            componentSID?: number;
            componentType: ComponentTypeEnum;
            compositionType: CompositionTypeEnum;
            convertToBool?: boolean;
            dataClassType: DataClassType;
            initValues: number[] | VectorN;
            memberName: string;
            shaderType: EnumIO;
        }

        The intended purpose/type of buffer use

      Returns void

    • Searches for the first object that has a specific tag with the given value

      Parameters

      • tag: string

        The tag name to search for

      • value: string

        The tag value to match

      Returns WeakRef<RnObject> | undefined

      WeakRef to the first matching object, or undefined if not found