CubismUpdateController

Updated: 09/29/2026

Summary

By adding the CubismUpdateControllerComponent to an actor, you can control the execution order of each component in the Cubism SDK for Unreal Engine.

Since the order of execution of each component is important in the OW method, it is essential to use CubismUpdateController to follow the specification.
If you do not use CubismUpdateController, for example, because you do not need to control the order of execution, functions such as Expression may not be processed correctly depending on the order of execution because the order in which components are executed is determined by Unreal Engine.

To control the order of execution of user-created components, implement ICubismUpdatableInterface in the components.

Implementation of CubismUpdatableInterface

The ICubismUpdatableInterface interface is inherited by the component that controls the execution order.

Code

  • GetExecutionOrder()

    Returns the order of execution of its components.
    The component with the smaller value is called first.
    The execution order of each component in the Cubism SDK for Unreal Engine is defined in CubismUpdateExecutionOrder.
     If the user has added a component that controls the order of execution, refer to the definition of CubismUpdateExecutionOrder and note when it is called by the value returned here.
    Example (if you want to call your own component at a time between CubismLookController and CubismPhysicsController):
    CubismLookController is set to 700 and CubismPhysicsController is set to 800, so set your own component to return 750.

    constexpr int32 CUBISM_EXECUTION_ORDER_MOTION = 100;
    constexpr int32 CUBISM_EXECUTION_ORDER_RAYCAST = 110;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_POSE = 200;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_EXPRESSION = 300;
    constexpr int32 CUBISM_EXECUTION_ORDER_EYEBLINK = 400;
    constexpr int32 CUBISM_EXECUTION_ORDER_LIPSYNC = 500;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_PHYSICS = 600;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_MODEL = 900;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_RENDERER = 1000;
  • OnCubismUpdate()

    This function is called as part of the update process when the execution order is controlled by CubismUpdateController.
    Describe the update process to be performed by that component.

    void UCubismRendererComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
    {
    	Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
    	if (IsControlledByUpdateController())
    	{
    		// If CubismUpdateController is not enabled, process from its own TickComponent. 
    		return;
    	}
    	OnCubismUpdate(DeltaTime);
    }
    void UCubismRendererComponent::OnCubismUpdate(float DeltaTime)
    {
    	// Implement Tick processing
    }
    int32 UCubismRendererComponent::GetExecutionOrder() const
    {
    	return CUBISM_EXECUTION_ORDER_RENDERER;
    }
    
    Caution When Adding or Removing Components during Execution
    The component that controls the order of execution by CubismUpdateController does so at the timing of OnEnable(). If all components are already attached to the actor, there is no problem; however, if you dynamically add or remove components while the scene is running, you must explicitly call CubismUpdateControllerComponent.RefreshUpdatables() to reimport them.
  • IsControlledByUpdateController()

    This function controls whether updates are performed by CubismUpdateController.
    If true, updates via Tick will not occur.

Was this article helpful?
YesNo
Please let us know what you think about this article.