Пример #1
0
        void UpdatePlayingEffect(EffectLocalObjectPool pool, IEnumerable <ClientEffectEmitter> playingEffects)
        {
            waitReusableList.Clear();
            foreach (ClientEffectEmitter effect in playingEffects)
            {
                switch (effect.StageType)
                {
                case EEffectStageType.WaitCreate:
                    if (!effect.IsValid)
                    {
                        effect.StageType = EEffectStageType.WaitFinish;
                    }
                    else if (effect.CanPlayRightNow)
                    {
                        effect.DoRealPlay();
                    }
                    else
                    {
                        if (effect.IsPreload)
                        {
                            assetManager.LoadAssetAsync(effect.Asset.AssetName, effect.Asset, effect.OnPreLoadSucess, new AssetLoadOption(true));
                        }
                        else
                        {
                            assetManager.LoadAssetAsync(effect.Asset.AssetName, effect.Asset, effect.OnLoadSucess, new AssetLoadOption(true));
                        }
                        effect.StageType = EEffectStageType.AsynLoading;
                    }

                    break;

                case EEffectStageType.AsynLoading:

                    if (Time.time > effect.LoadAsyncTimestamp + GlobalConst.MaxLoadAsyncWaitTime)
                    {
                        effect.StageType = EEffectStageType.WaitFinish;
                    }

                    break;

                case EEffectStageType.WaitFinish:
                    waitReusableList.Add(effect);
                    break;

                case EEffectStageType.Playing:
                    effect.DoFrameUpdate();
                    break;
                }
            }

            foreach (var value in waitReusableList)
            {
                pool.Reusable(value);
            }
        }
Пример #2
0
        private void LoadOne(int subId)
        {
            if (subId >= _terrains.Length)
            {
                return;
            }
            if (_terrains[subId] != null)
            {
                return;
            }

            AssetInfo assetInfo = GetAssetInfo(_mapName, subId);

            int[] para = { (int)EAssetType.BYTES, subId };
            _assetManager.LoadAssetAsync(para, assetInfo, OnLoadSucc);
        }
Пример #3
0
 public LocalizeSessionSystem(ISessionState sessionState, IUnityAssetManager assetManager)
 {
     _sessionState = sessionState;
     _assetManager = assetManager;
     sessionState.CreateExitCondition(typeof(LocalizeSessionSystem));
     assetManager.LoadAssetAsync("", new AssetInfo(ASSETBUNDLENAME, ASSETNAME), OnLoadSucc);
 }
Пример #4
0
        public override void OnLoadResources(IUnityAssetManager assetManager)
        {
            base.OnLoadResources(assetManager);
            foreach (var entity in _player.GetEntities())
            {
                if (entity.hasAppearanceInterface)
                {
                    var loadRequests = entity.appearanceInterface.Appearance.GetLoadRequests();
                    foreach (var request in loadRequests)
                    {
                        var intercept = _interceptPool.Get();
                        intercept.SetParam(entity, request.GetHandler <PlayerEntity>());
                        assetManager.LoadAssetAsync(entity, request.AssetInfo, intercept.Call);
                    }

                    var recycleRequests = entity.appearanceInterface.Appearance.GetRecycleRequests();
                    foreach (var request in recycleRequests)
                    {
                        entity.RemoveAsset(request);
                        assetManager.Recycle(request);
                    }

                    entity.appearanceInterface.Appearance.ClearRequests();
                }
            }
        }
Пример #5
0
        public void LoadAsync(AssetInfo assetInfo, Action <UnityEngine.Object> callback, GameObject parent = null, Type objectType = null)
        {
            if (string.IsNullOrEmpty(assetInfo.BundleName) || string.IsNullOrEmpty(assetInfo.AssetName))
            {
                Debug.LogError("asset error." + assetInfo.BundleName + "," + assetInfo.AssetName);
                return;
            }

            _assetManager.LoadAssetAsync("UiResourceLoader", assetInfo, (source, unityObj) => {
                try
                {
                    if (callback != null)
                    {
                        callback(unityObj);
                    }
                    else
                    {
                        AddToGameObjectPool(unityObj);
                    }
                }
                catch (Exception e)
                {
                    Logger.ErrorFormat("ui resource loaded failed: {0} {1}", e, assetInfo);
                }
            }, new AssetLoadOption(parent: _uiLoaderRoot, recyclable: true, objectType: objectType));
        }
Пример #6
0
 public void Load(IUnityAssetManager assetManager)
 {
     foreach (var assetInfo in _assetInfos)
     {
         assetManager.LoadAssetAsync("BatchLoadHandler", assetInfo, OnLoadSucc, new AssetLoadOption(dontAutoActive: true));
     }
 }
        private void ProcessCommonResources(TEntity entity, ICommonResourceComponent res, IUnityAssetManager loadRequestManager)
        {
            var time           = (int)(MyGameTime.time * 1000);
            var resourceLength = res.Resources.Length;

            for (var i = 0; i < resourceLength; i++)
            {
                var asset   = res.Resources[i];
                var actions = GetActions(i);
                if (asset == null || actions == null)
                {
                    continue;
                }
                if (asset.Status == EAssetLoadStatus.UnLoad)
                {
                    asset.Status          = EAssetLoadStatus.Loading;
                    asset.LastRequestTime = time;
                    loadRequestManager.LoadAssetAsync(
                        new AssetRequestSource(GetEntityKey(entity), res.GetComponentId(), asset.ResIndex, asset.LastRequestTime),
                        asset.AssetInfo, OnLoadSucc, _assetLoadOption);
                }
                else if (asset.Status == EAssetLoadStatus.UnInit)
                {
                    if (actions.CanInit(entity, asset))
                    {
                        actions.Init(entity, asset);
                        asset.Status = EAssetLoadStatus.Loaded;
                    }
                }
            }
        }
Пример #8
0
        public void LoadAllGlobalEffect(IUnityAssetManager assetManager, Action allLoadSucc)
        {
            foreach (var kv in _assetBundles)
            {
                assetManager.LoadAssetAsync(kv.Key, kv.Value, OnLoadSucc);
            }

            _allLoadSucc = allLoadSucc;
        }
        public ClientSessionStateProgress(IContexts contexts)
        {
            _contexts = contexts as Contexts;

            UiCommon.InitUI(UiRootName);

            _assetManager = _contexts.session.commonSession.AssetManager;

            _assetManager.LoadAssetAsync(GetType().ToString(), new AssetInfo(LoadingUiBundleName, LoadingUiAssetName), OnLoadSucc);
        }
Пример #10
0
 public void OnLoadResources(IUnityAssetManager assetManager)
 {
     if (Reload)
     {
         foreach (var cfg in _configs)
         {
             assetManager.LoadAssetAsync("ConfigReloadSystem", new AssetInfo("tables", cfg.Asset), OnLoadSucc);
         }
         Reload = false;
     }
 }
Пример #11
0
        protected bool AddLoadRequest(AssetInfo asset)
        {
            if (!_assetSet.Contains(asset))
            {
                _loadingAsset.Add(asset);
                _assetManager.LoadAssetAsync(GetType().ToString(), asset, OnLoadSucc);
                _assetSet.Add(asset);
                return(true);
            }

            return(false);
        }
Пример #12
0
        public void LoadAsset(AssetInfo asset)
        {
#if !UnitTest
            if (Logger.IsDebugEnabled)
            {
                Logger.DebugFormat("LoadAsset {0}", asset);
            }
#endif
            if (!_loadKeys.ContainsKey(asset))
            {
                var loadKey = new LoadKey();
                _loadKeys[asset] = loadKey;
                _assetManager.LoadAssetAsync("WeaponModelLoader", asset, OnLoadSucc);
            }
        }
Пример #13
0
        private void RequestForResource(IUnityAssetManager assetManager)
        {
            _levelManager.GetRequests(_sceneRequests, _goRequests);

            foreach (var request in _sceneRequests)
            {
                assetManager.LoadSceneAsync(request, true);
            }

            foreach (var request in _goRequests)
            {
                assetManager.LoadAssetAsync("InitialSceneLoadingSystem", request, _levelManager.GoLoadedWrapper);
            }

            _sceneRequests.Clear();
            _goRequests.Clear();
        }
Пример #14
0
        public void Execute()
        {
            if (SingletonManager.Get <T>().IsInitialized)
            {
                IsDone = true;
            }
            else if (!_isLoding)
            {
                _isLoding = true;
                _assetManager.LoadAssetAsync(typeof(T).ToString(), _assetInfo, OnLoadSucc);
            }

            if (IsDone && !_isExit)
            {
                _sessionState.FullfillExitCondition(GetConditionId());
                _isExit = true;
                Logger.InfoFormat("Exit  {0}", GetConditionId());
            }
        }
        /// <summary>
        /// 加载环境特效
        /// </summary>
        /// <param name="assetManager"></param>
        public override void LoadMapAmbient(IUnityAssetManager assetManager)
        {
            _logger.Info("Req Load Map Amb ");
            MapAmbInfo ambInfo;

            Wwise_IDs.GetMapAmb(mapId, out ambInfo);
            if (ambInfo.Id > 0 && !string.IsNullOrEmpty(ambInfo.EnvironmentAmb))
            {
                GameAudioMedia.LoadSimpleBank(string.Format("Map_{0}", mapId), AudioBank_LoadMode.Aync, (akresult) =>
                {
                    if (akresult.Sucess())
                    {
                        _logger.Info("try Load Map Amb " + ambInfo.EnvironmentAmb);
                        assetManager.LoadAssetAsync(entity, new AssetInfo(MapAmbInfo.AssetName, ambInfo.EnvironmentAmb),
                                                    OnLoadMapAmbientSucess);
                    }
                });
            }
        }
Пример #16
0
        public void OnLoadResources(IUnityAssetManager assetManager)
        {
            _terrainRenderer.GetTerrainDataNames(_terrainName);
            if (_terrainName.Count > 0)
            {
                for (int i = 0; i < _terrainName.Count; ++i)
                {
                    AssetInfo addr = new AssetInfo("tablesfrombuilding", _terrainName[i]);

                    _logger.InfoFormat("´òËãÔØÈë _terrainName£¬BundleName={0}, AssetName={1}", addr.BundleName, addr.AssetName);

                    assetManager.LoadAssetAsync((UnityEngine.Object)null, addr, _terrainRenderer.LoadedTerrainData);
                }

                _terrainName.Clear();
            }

            if (_sessionState != null)
            {
                if (_levelManager.NotFinishedRequests <= 0 &&
                    _terrainRenderer.IsLoadingEnd)
                {
                    _sessionState.FullfillExitCondition(typeof(TerrainDataLoadSystem));
                }
                else
                {
                    if ((System.DateTime.Now - _lastPrintTime).TotalMilliseconds > _logInterval)
                    {
                        _lastPrintTime = System.DateTime.Now;

                        _logger.InfoFormat("NotFinishedRequests =={0}, IsLoadingEnd =={1}", _levelManager.NotFinishedRequests, _terrainRenderer.IsLoadingEnd);
                        _logger.InfoFormat(_levelManager.GetRequestString());

                        //if (_logInterval < 60000)
                        //    _logInterval *= 2;
                    }
                }
            }
        }
Пример #17
0
        public void OnLoadResources(IUnityAssetManager assetManager)
        {
            _terrainRenderer.GetTerrainDataNames(_terrainName);
            if (_terrainName.Count > 0)
            {
                for (int i = 0; i < _terrainName.Count; ++i)
                {
                    AssetInfo addr = new AssetInfo("tablesfrombuilding", _terrainName[i]);
                    assetManager.LoadAssetAsync((UnityEngine.Object)null, addr, _terrainRenderer.LoadedTerrainData);
                }

                _terrainName.Clear();
            }

            if (_sessionState != null)
            {
                if (_levelManager.NotFinishedRequests <= 0 &&
                    _terrainRenderer.IsLoadingEnd)
                {
                    _sessionState.FullfillExitCondition(typeof(TerrainDataLoadSystem));
                }
            }
        }
Пример #18
0
        public void OnLoadResources(IUnityAssetManager assetManager)
        {
            if (!_isLoading)
            {
                _assetManager = assetManager;

                var assetInfos = _assetInfoProvider.AssetInfos;
                foreach (var assetInfo in assetInfos)
                {
                    _assetManager.LoadAssetAsync("PreLoadSystem", assetInfo, OnLoadSucc);
                }

                _loadingCount = assetInfos.Count;
                _isLoading    = true;

                if (_loadingCount == 0)
                {
                    _sessionState.FullfillExitCondition(typeof(PreLoadSystem));
                }

                _logger.InfoFormat("Loading count {0}", _loadingCount);
            }
        }
Пример #19
0
        public void LoadAsync(AssetInfo assetInfo, Action <UnityEngine.Object> callback, GameObject parent = null, Type objectType = null)
        {
            if (string.IsNullOrEmpty(assetInfo.BundleName) || string.IsNullOrEmpty(assetInfo.AssetName))
            {
                //Debug.LogError("asset error." + assetInfo.BundleName + "," + assetInfo.AssetName);
                return;
            }

            if (parent == null)
            {
                parent = _uiLoaderRoot;
            }
            _assetManager.LoadAssetAsync("UiResourceLoader", assetInfo, (source, unityObj) =>
            {
                if (callback != null)
                {
                    callback(unityObj);
                }
                else
                {
                    AddToGameObjectPool(unityObj);
                }
            }, new AssetLoadOption(parent: parent, recyclable: true, objectType: objectType));
        }
 /// <summary>
 /// 客户端加载
 /// </summary>
 /// <param name="manager"></param>
 public void OnInitModule(IUnityAssetManager assetManager)
 {
     assetManager.LoadAssetAsync(GetType().ToString(), AssetConfig.GetAnimationConfigAssetInfo(), OnLoadSucc);
 }
Пример #21
0
            public void OnLoadSucc(PlayerEntity player, UnityObject unityObj)
            {
                GameObject go = unityObj;

                RemoveRagdollOnServerSide(go);

                HandleLoadedModel(player, go);

                player.AddAsset(unityObj);

                player.AddThirdPersonModel(go);

                go.name = go.name.Replace("(Clone)", "");
                go.transform.SetParent(player.RootGo().transform);
                go.transform.localPosition = Vector3.zero;
                go.transform.localRotation = Quaternion.identity;
                go.transform.localScale    = Vector3.one;
                _logger.InfoFormat("P3 loaded: {0}", player.entityKey);

                BoneTool.CacheTransform(go);

                if (!player.hasBones)
                {
                    player.AddBones(null, null, null);
                }

                player.bones.Head  = BoneMount.FindChildBoneFromCache(go, BoneName.CharacterHeadBoneName);
                player.bones.Spine = BoneMount.FindChildBoneFromCache(go, BoneName.CharacterSpineName);

                player.AddThirdPersonAnimator(go.GetComponent <Animator>());

                var ik = go.AddComponent <PlayerIK>();

                ik.SetAnimator(AvatarIKGoal.LeftHand, player.thirdPersonAnimator.UnityAnimator);
                ik.SetIKLayer(AvatarIKGoal.LeftHand, NetworkAnimatorLayer.ThirdPersonIKPassLayer);
                ik.SetAnimator(AvatarIKGoal.RightHand, player.thirdPersonAnimator.UnityAnimator);
                ik.SetIKLayer(AvatarIKGoal.RightHand, NetworkAnimatorLayer.ThirdPersonIKPassLayer);

                if (player.isFlagSelf)
                {
                    var animationEvent = go.AddComponent <AnimationClipEvent>();
                    animationEvent.Player = player;
                    player.animatorClip.ClipManager.SetAnimationCleanEventCallback(animationEvent.InterruptAnimationEventFunc);
                    // 设置大厅传入的roleId和avatarId
                    player.appearanceInterface.Appearance.SetRoleModelIdAndInitAvatar(player.playerInfo.RoleModelId, player.playerInfo.AvatarIds);
                }
                else
                {
                    go.AddComponent <ThirdPersonAnimationClipEvent>();
                }

                player.characterControllerInterface.CharacterController.SetCharacterRoot(player.characterContoller.Value.gameObject);
                player.appearanceInterface.Appearance.SetThirdPersonCharacter(go);
                player.thirdPersonAnimator.UnityAnimator.Update(0);

                player.characterBoneInterface.CharacterBone.SetCharacterRoot(player.characterContoller.Value.gameObject);
                player.characterBoneInterface.CharacterBone.SetThirdPersonCharacter(go);
                player.characterBoneInterface.CharacterBone.SetStablePelvisRotation();

                player.appearanceInterface.Appearance.SetAnimatorP3(player.thirdPersonAnimator.UnityAnimator);

                player.appearanceInterface.Appearance.PlayerReborn();
                player.characterControllerInterface.CharacterController.PlayerReborn();

                // 实际应该使用SharedConfig.IsServer,但离线模式中其值为false
                if (!player.hasNetworkAnimator)
                {
                    player.AddNetworkAnimator(NetworkAnimatorUtil.CreateAnimatorLayers(player.thirdPersonAnimator.UnityAnimator),
                                              NetworkAnimatorUtil.GetAnimatorParams(player.thirdPersonAnimator.UnityAnimator));

                    player.networkAnimator.SetEntityName(player.entityKey.ToString());
                }

                if (!player.hasOverrideNetworkAnimator)
                {
                    player.AddOverrideNetworkAnimator();
                }

                if (SharedConfig.IsServer)
                {
                    player.AddNetworkAnimatiorServerTime(0);
                }

                // 禁用非可见状态下的动画更新,在获取Stable状态之后
                if (SharedConfig.IsServer || !player.isFlagSelf)
                {
                    player.thirdPersonAnimator.UnityAnimator.cullingMode = AnimatorCullingMode.CullUpdateTransforms;
                }
                else
                {
                    player.thirdPersonAnimator.UnityAnimator.cullingMode = AnimatorCullingMode.AlwaysAnimate;
                }

                _assetManager.LoadAssetAsync(player, AssetConfig.GetCharacterHitboxAssetInfo(player.playerInfo.ModelName), new HitboxLoadResponseHandler().OnLoadSucc);
            }
Пример #22
0
        private void LoadSimpleItem(SceneObjectEntity sceneObjectEntity)
        {
            var category = sceneObjectEntity.simpleItem.Category;
            var id       = sceneObjectEntity.simpleItem.Id;

            if (id < 1)
            {
                Logger.ErrorFormat("itemid is illegal for item {0}", sceneObjectEntity.entityKey);
                return;
            }

            switch ((ECategory)category)
            {
            case ECategory.Avatar:
                var avatarCfg = SingletonManager.Get <RoleAvatarConfigManager>().GetConfigById(id);
                if (null != avatarCfg)
                {
                    if (null != _playerContext.flagSelfEntity && _playerContext.flagSelfEntity.hasPlayerInfo)
                    {
                        LoadAvatar(sceneObjectEntity, _playerContext.flagSelfEntity, avatarCfg);
                    }
                }
                break;

            case ECategory.WeaponPart:
                var partId    = SingletonManager.Get <WeaponPartSurvivalConfigManager>().GetDefaultPartBySetId(id);
                var partCfg   = SingletonManager.Get <WeaponPartsConfigManager>().GetConfigById(partId);
                var partAsset = new AssetInfo(partCfg.Bundle, partCfg.Res);
                if (string.IsNullOrEmpty(partAsset.AssetName) || string.IsNullOrEmpty(partAsset.BundleName))
                {
                    break;
                }

                var partSize = SingletonManager.Get <WeaponPartSurvivalConfigManager>().GetSizeById(id);
                if (partSize != 1)
                {
                    sceneObjectEntity.AddSize(partSize);
                }

                _assetManager.LoadAssetAsync(sceneObjectEntity, partAsset,
                                             simpleLoadHandler.OnLoadUnityObjectSucess);

                sceneObjectEntity.effects.AddGlobalEffect(GlobalEffectManager.GlobalGroundPropFlash);

                break;

            case ECategory.GameItem:
                var itemSsset = SingletonManager.Get <GameItemConfigManager>().GetAssetById(id);
                if (string.IsNullOrEmpty(itemSsset.AssetName) || string.IsNullOrEmpty(itemSsset.BundleName))
                {
#if UNITY_EDITOR
                    UnityEngine.Debug.LogError(string.Format("item is not config for id {0}", id));
#else
                    Logger.ErrorFormat("item is not config for id {0}", id);
#endif
                    return;
                }

                var itemSize = SingletonManager.Get <GameItemConfigManager>().GetSizeById(id);
                if (itemSize != 1)
                {
                    sceneObjectEntity.AddSize(itemSize);
                }

                _assetManager.LoadAssetAsync(sceneObjectEntity, itemSsset,
                                             simpleLoadHandler.OnLoadUnityObjectSucess);
                sceneObjectEntity.effects.AddGlobalEffect(GlobalEffectManager.GlobalGroundPropFlash);
                break;
            }
        }
        private void OnLoadSucc(string source, UnityObject unityObj)
        {
            var obj = unityObj.AsGameObject;

            if (obj != null)
            {
                _loadingUi = obj;
                var rect = _loadingUi.GetComponent <RectTransform>();
                rect.anchorMin = Vector2.zero;
                rect.anchorMax = new Vector2(1, 1);
                rect.offsetMin = Vector2.zero;
                rect.offsetMax = Vector2.zero;

                FillField();
//                _loadingSlider = _loadingUi.GetComponentInChildren<Slider>();

                var bgBundle = SingletonManager.Get <MapConfigManager>().MapIconBundle;
                var bgAsset  = SingletonManager.Get <MapConfigManager>().MapIconAsset;
                if (string.IsNullOrEmpty(bgBundle) || string.IsNullOrEmpty(bgAsset))
                {
                    bgBundle = AssetBundleConstant.Icon_Map;
                    bgAsset  = MapIconAssetName;
                }
                _assetManager.LoadAssetAsync(GetType().ToString(), new AssetInfo(bgBundle, bgAsset),
                                             (sour, data) =>
                {
                    if (data.AsObject is Texture2D)
                    {
                        var tex = data.As <Texture2D>();
                        if (_bg != null)
                        {
                            _bg.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero);
                        }
                        if (_bgRawImg != null)
                        {
                            _bgRawImg.texture = tex;
                        }
                    }
                    else
                    {
                        if (_bg != null)
                        {
                            _bg.sprite = data.As <Sprite>();
                        }
                    }
                    if (_bg != null)
                    {
                        _bg.color = Color.white;
                    }
                    if (_bgRawImg != null)
                    {
                        _bgRawImg.color = Color.white;
                    }
                });


                var root = UiCommon.UIManager.UIRoot;
                if (root == null)
                {
                    _logger.ErrorFormat("The client ui root does not exist!");
                }
                else
                {
                    _loadingUi.transform.SetParent(root.transform, false);
                    _loadingUi.SetActive(true);
                }
            }
        }
Пример #24
0
 public void LoadResource(string name, IUnityAssetManager assetManager, AssetInfo request)
 {
     assetManager.LoadAssetAsync(name, request, GoLoadedWrapper, _assetLoadOption);
 }
 public void OnInitModule(IUnityAssetManager assetManager)
 {
     assetManager.LoadAssetAsync("InitOcclusionCullingControllerSystem", _ocDataAssetInfo, OnOCDataLoaded);
 }
Пример #26
0
 public void OnInitModule(IUnityAssetManager assetManager)
 {
     assetManager.LoadAssetAsync(GetType().ToString(), new AssetInfo("tables", "input"), OnLoadSucc);
 }