diff --git a/02-Note/DAWA/ASoul/导播操作笔记.md b/02-Note/DAWA/ASoul/导播操作笔记.md
index aea6961..0f5a141 100644
--- a/02-Note/DAWA/ASoul/导播操作笔记.md
+++ b/02-Note/DAWA/ASoul/导播操作笔记.md
@@ -362,6 +362,7 @@ public:
 1. DirectorCam:与24个镜头相关。
 2. Editor:RuntimeEditor相关。
 3. LiveDirector:
+	1. [ ] Character/TsIdolActor.ts:[[角色流程#TsIdolActor.ts]]
 4. Camera
 5. Characrer:
 6. Danma:弹幕相关,View以及控制。
diff --git a/02-Note/DAWA/ASoul/流程笔记/角色流程.md b/02-Note/DAWA/ASoul/流程笔记/角色流程.md
index db258dd..749be28 100644
--- a/02-Note/DAWA/ASoul/流程笔记/角色流程.md
+++ b/02-Note/DAWA/ASoul/流程笔记/角色流程.md
@@ -2,7 +2,30 @@
 继承关系:BP_XXX_Base -> BP_Idol_Base -> TsIdolActor -> AVCharacter -> ACharacter 。
 主要逻辑位于TsIdolActor中,文件路径为`Script/LiveDirector/Character/TsIdolActor.ts`
 
-# 角色判断逻辑
-PropTags: UE.GameplayTagContainer
+# AVCharacter
+主要实现了`virtual void OnRep_AttachmentReplication() override;`,声明了若干BlueprintNativeEvent:
+- bool CanSyncRelativeTransform();  
+- void BeforeAttachToNewParent();  
+- void AfterAttachToNewParent();
+	
+## OnRep_AttachmentReplication()
+注释:
+>// 动捕模式下,CanSync=false. 各端自行计算Actor Location, client无需使用Server计算结果  
+  // 自由行走模式下, CanSync=true,client需要同步server的transform信息
 
-通过Tag判断。
\ No newline at end of file
+# TsIdolActor.ts
+## VirtualOverrider
+
+```typescript
+CanSyncRelativeTransform(): boolean {
+	if (Utils.HasTag(this.PropTags, new UE.GameplayTag("Idol.AIACao"))) {
+		return false;
+	}
+	if(this.MovementComp && this.MovementComp.ManulMovement){
+		return false
+	}
+	var animInstance = this.Mesh.GetAnimInstance() as UE.IdolAnimInstance
+	let fullbodyNode = Reflect.get(animInstance, 'AnimGraphNode_Fullbody') as UE.AnimNode_FullBody
+	return !(fullbodyNode && fullbodyNode.bGetMotionData)
+}
+```
\ No newline at end of file