Exemple #1
0
    IEnumerator UpdateModelIterator()
    {
        waitingToCloneModel = true;
        if (null != viewCmpt)
        {
            _meshControllers = viewCmpt.GetComponentsInChildren <WhiteCat.CreationController>();

            if (null != _meshControllers)
            {
                for (int i = 0; i < _meshControllers.Length; i++)
                {
                    if (_meshControllers[i] != null && !_meshControllers[i].isBuildFinished)
                    {
                        //lz-2016.09.07 如果有ISO,并且每创建完成,就等待创建完成
                        yield return(null);

                        i--;
                    }
                }
            }
            _meshControllers = null;
            //lz-2016.09.14 克隆前需要等一帧,克隆后不需要等了
            yield return(null);

            //lz-2016.09.07 克隆新模型,刷新SkinnedMeshRenderer
            _newViewModel = PeViewStudio.CloneCharacterViewModel(viewCmpt);
            if (_newViewModel)
            {
                _newViewModel.transform.position = new Vector3(0, -1000, 0);
                var renderer = _newViewModel.GetComponent <SkinnedMeshRenderer>();
                renderer.updateWhenOffscreen = true;
            }
        }
        if (_newViewModel)
        {
            if (_viewModel != null)
            {
                Destroy(_viewModel);
            }
            _viewModel = _newViewModel;
            _viewController.SetTarget(_viewModel.transform);
            mEqTex.GetComponent <WhiteCat.UIViewController>().Init(_viewController);
            mEqTex.mainTexture = _viewController.RenderTex;
            mEqTex.enabled     = true;
            _newViewModel      = null;
        }
        waitingToCloneModel = false;
    }
    void UpdateBodyCamera()
    {
        if (m_RefNpc == null || NpcEquipment == null || m_NpcCmpt == null)
        {
            m_NpcTex.enabled = false;
            return;
        }

        if (_viewModel != null)
        {
            Destroy(_viewModel);
        }
        _viewModel = PeViewStudio.CloneCharacterViewModel(m_ViewCmpt);
        if (_viewModel != null)
        {
            _viewController.SetTarget(_viewModel.transform);
        }

        m_NpcTex.mainTexture = _viewController.RenderTex;
        m_NpcTex.GetComponent <WhiteCat.UIViewController>().Init(_viewController);

        m_NpcTex.enabled = true;
    }
    /// <summary>
    /// 在 update 中调用.
    /// 检查到需要更新时, 先判断角色装备是否创建完整, 在创建完成后复制模型, 然后延迟一帧应用模型
    /// </summary>
    void UpdateModel()
    {
        if (waitingToCloneModel)
        {
            if (!_newViewModel)
            {
                if (_meshControllers != null)
                {
                    for (int i = 0; i < _meshControllers.Length; i++)
                    {
                        if (_meshControllers[i] != null && !_meshControllers[i].isBuildFinished)
                        {
                            return;
                        }
                    }
                    _meshControllers = null;
                }

                if (_delay == 0)
                {
                    _newViewModel = PeViewStudio.CloneCharacterViewModel(viewCmpt);
                    //lz-2016.10.11 有可能为空【错误 #3973】
                    if (null != _newViewModel)
                    {
                        _newViewModel.transform.position = new Vector3(0, -1000, 0);
                        var renderer = _newViewModel.GetComponent <SkinnedMeshRenderer>();
                        renderer.updateWhenOffscreen = true;
                        _delay = 0;
                    }
                }
                else
                {
                    _delay--;
                    return;
                }
            }

            if (_newViewModel)
            {
                if (_delay == 0)
                {
                    if (_viewModel != null)
                    {
                        Destroy(_viewModel);
                    }
                    _viewModel = _newViewModel;
                    _viewController.SetTarget(_viewModel.transform);

                    mEqTex.GetComponent <WhiteCat.UIViewController>().Init(_viewController);
                    bone2DObjects.Init(_viewController, _viewModel, playerArmorCmpt);

                    mEqTex.mainTexture = _viewController.RenderTex;

                    _newViewModel = null;
                    StopRefreshEquipment();
                }
                else
                {
                    _delay--;
                    return;
                }
            }
        }
    }