protected void _syncPlayState(bool forceReplay = false) { this.layer = this.m_layer; bool flag = this.m_animatorObj != null; if (flag) { foreach (string current in this.m_mtrlMap.Keys) { this.setMaterial(current, this.m_mtrlMap[current]); } foreach (string current2 in this.m_activeMap.Keys) { Transform transform = this.m_animatorObj.transform.Find(current2); bool flag2 = transform != null; if (flag2) { transform.gameObject.SetActive(this.m_activeMap[current2]); } } } bool flag3 = this.m_animator != null; if (flag3) { bool flag4 = this.m_curAnimName != "" && this.m_playing && (!this.m_animator.IsPlaying(this.m_curAnimName) | forceReplay); if (flag4) { bool isReady = this.m_animMap[this.m_curAnimName].isReady; if (isReady) { AssetSkAnimationImpl assetSkAnimationImpl = this.m_animMap[this.m_curAnimName] as AssetSkAnimationImpl; bool flag5 = this.m_animator.GetClip(this.m_curAnimName) == null; if (flag5) { this.m_animator.AddClip(assetSkAnimationImpl.anim, this.m_curAnimName); } this.m_animator.GetClip(this.m_curAnimName).wrapMode = this.m_wrapMode; this.m_animator[this.m_curAnimName].speed = this.m_curSpeed; this._playerAnimator(this.m_curAnimName); } } } }
public override void onPreRender() { bool flag = this.m_u3dObj == null; if (!flag) { bool flag2 = this.m_assetLoading.Count == 0; if (!flag2) { bool flag3 = this.m_tmpList.Count > 0; if (flag3) { this.m_tmpList.Clear(); } foreach (IAsset current in this.m_assetLoading.Keys) { bool isReady = current.isReady; if (isReady) { bool flag4 = current == this.m_asset; if (flag4) { try { this.m_animatorObj = (UnityEngine.Object.Instantiate(this.m_asset.assetObj) as GameObject); } catch (Exception var_9_B0) { DebugTrace.add(Define.DebugTrace.DTT_ERR, "The GameObject is null"); } bool flag5 = this.m_animatorObj == null; if (flag5) { return; } SkAniMeshBehaviour skAniMeshBehaviour = this.m_animatorObj.AddComponent <SkAniMeshBehaviour>(); skAniMeshBehaviour.obj = this; this.m_animator = this.m_animatorObj.GetComponent <Animation>(); bool flag6 = this.m_animator == null; if (flag6) { this.m_animator = this.m_animatorObj.AddComponent <Animation>(); } this.m_animator.cullingType = AnimationCullingType.AlwaysAnimate; osImpl.linkU3dObj(this.m_u3dObj, this.m_animatorObj); this._syncPlayState(false); Dictionary <IGraphObject3D, string> dictionary = new Dictionary <IGraphObject3D, string>(this.m_attach); foreach (IGraphObject3D current2 in dictionary.Keys) { this.attachObject(this.m_attach[current2], current2); } this.m_tmpList.Add(current); } else { bool flag7 = current is IAssetSkAnimation; if (flag7) { bool flag8 = this.m_animator != null; if (flag8) { AssetSkAnimationImpl assetSkAnimationImpl = current as AssetSkAnimationImpl; this._syncPlayState(false); this.m_tmpList.Add(current); } } else { bool flag9 = current is IAssetSkAniMesh; if (flag9) { bool flag10 = this.m_animatorObj != null; if (flag10) { AssetSkAniMeshImpl assetSkAniMeshImpl = current as AssetSkAniMeshImpl; List <string> list = new List <string>(); foreach (string current3 in this.m_skinMap.Keys) { bool flag11 = current3.IndexOf(assetSkAniMeshImpl.path) == 0 && this.m_skinMap[current3] == null; if (flag11) { list.Add(current3); } } foreach (string current4 in list) { bool flag12 = current4.IndexOf(assetSkAniMeshImpl.path) == 0 && this.m_skinMap[current4] == null; if (flag12) { ShaderImpl shaderImpl = this.m_skinMtrlMap.ContainsKey(current4) ? this.m_skinMtrlMap[current4] : null; Transform transform = null; string name = current4.Substring(current4.IndexOf('$') + 1); try { transform = assetSkAniMeshImpl.assetObj.transform.FindChild(name); } catch (Exception var_30_347) { } bool flag13 = transform; if (flag13) { GameObject gameObject = transform.gameObject; GameObject gameObject2 = UnityEngine.Object.Instantiate(gameObject) as GameObject; osImpl.linkU3dObj(this.m_animatorObj, gameObject2); this.m_skinMap[current4] = gameObject2; bool flag14 = gameObject.transform.GetComponent <SkinnedMeshRenderer>() != null; SkinnedMeshRenderer[] array; SkinnedMeshRenderer[] array2; if (flag14) { array = new SkinnedMeshRenderer[] { gameObject.transform.GetComponent <SkinnedMeshRenderer>() }; array2 = new SkinnedMeshRenderer[] { gameObject2.transform.GetComponent <SkinnedMeshRenderer>() }; } else { array = gameObject.transform.GetComponentsInChildren <SkinnedMeshRenderer>(); array2 = gameObject2.transform.GetComponentsInChildren <SkinnedMeshRenderer>(); } for (int i = 0; i < array.Length; i++) { SkinnedMeshRenderer skinnedMeshRenderer = array[i]; SkinnedMeshRenderer skinnedMeshRenderer2 = array2[i]; bool flag15 = shaderImpl != null; if (flag15) { bool flag16 = shaderImpl.u3dMaterial != null; if (flag16) { skinnedMeshRenderer2.material = shaderImpl.u3dMaterial; } else { shaderImpl.apply(skinnedMeshRenderer2.material); } } bool flag17 = skinnedMeshRenderer.rootBone != null; if (flag17) { bool flag18 = this._getBone(skinnedMeshRenderer.rootBone.name) != null; if (flag18) { skinnedMeshRenderer2.rootBone = this._getBone(skinnedMeshRenderer.rootBone.name).transform; } } List <Transform> list2 = new List <Transform>(); Transform[] componentsInChildren = base.u3dObject.GetComponentsInChildren <Transform>(); for (int j = 0; j < skinnedMeshRenderer.bones.Length; j++) { for (int k = 0; k < componentsInChildren.Length; k++) { bool flag19 = componentsInChildren[k].name == skinnedMeshRenderer.bones[j].name; if (flag19) { list2.Add(componentsInChildren[k]); break; } } } skinnedMeshRenderer2.bones = list2.ToArray(); } } } } } this.m_tmpList.Add(current); } } } } } bool flag20 = this.m_tmpList.Count > 0; if (flag20) { foreach (IAsset current5 in this.m_tmpList) { this.m_assetLoading.Remove(current5); } } } } }
private void play_AnimClip(string anim, int loop) { bool flag = this.m_animator == null; if (!flag) { float fadeLength = 0.1f; bool flag2 = this.m_animator.GetClip(anim) == null; if (flag2) { bool flag3 = !this.m_animMap.ContainsKey(anim); if (flag3) { bool flag4 = !this.m_animPath.ContainsKey(anim); if (!flag4) { IAssetSkAnimation asset = os.asset.getAsset <IAssetSkAnimation>(this.m_animPath[anim]); this.addAnim(anim, asset); this.m_strCurPlayAnim = anim; this.m_nCurPlayLoop = loop; } } else { bool isReady = this.m_animMap[anim].isReady; if (isReady) { AssetSkAnimationImpl assetSkAnimationImpl = this.m_animMap[anim] as AssetSkAnimationImpl; this.m_animator.AddClip(assetSkAnimationImpl.anim, anim); bool flag5 = this.m_curAnimName == anim; if (flag5) { this.m_animator[this.m_curAnimName].normalizedTime = 0f; } else { this.m_animator.CrossFade(anim, fadeLength); this.m_curAnimName = anim; } this.m_strCurPlayAnim = null; bool flag6 = loop > 0; if (flag6) { this.m_PlayingActLoop = loop; this.m_bPlayingActAction = anim; this.m_nAnimPlayLevel = 1; } } } } else { bool flag7 = this.m_curAnimName == anim; if (flag7) { this.m_animator[this.m_curAnimName].normalizedTime = 0f; } else { this.m_animator.CrossFade(anim, fadeLength); this.m_curAnimName = anim; } this.m_strCurPlayAnim = null; bool flag8 = loop > 0; if (flag8) { this.m_PlayingActLoop = loop; this.m_bPlayingActAction = anim; this.m_nAnimPlayLevel = 1; } } } }