Hi, yeah the suggested fix that you had with the null check on the mesh asset is the right way to go here. We should be dealing with this in the same way that we do in InitAnim since both of those can be called from BP at the moment. Similarly, InitializeAnimScriptInstance needs to handle the possibility that the parallel animation evaluation tasks are running when it’s called (like InitAnim does). The fixed-up function should look something like:
bool USkeletalMeshComponent::InitializeAnimScriptInstance(bool bForceReinit, bool bInDeferRootNodeInitialization)
{
bool bInitializedMainInstance = false;
bool bInitializedPostInstance = false;
USkeletalMesh* SkelMesh = GetSkeletalMeshAsset();
if (SkelMesh && IsRegistered())
{
// We may be doing parallel evaluation on the current anim instance
// Calling this here with true will block this init till that thread completes
// and it is safe to continue
const bool bBlockOnTask = true; // wait on evaluation task so it is safe to continue with Init
const bool bPerformPostAnimEvaluation = true; // That will swap buffer back to ComponentTransform, and finish evaluate. This is required - otherwise, we won't have a buffer.
HandleExistingParallelEvaluationTask(bBlockOnTask, bPerformPostAnimEvaluation);
if (NeedToSpawnAnimScriptInstance())
{