Beispiel #1
0
        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);
                    }
                }
            }
        }
Beispiel #2
0
        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);
                        }
                    }
                }
            }
        }
Beispiel #3
0
        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;
                    }
                }
            }
        }