Пример #1
0
 public SceneActor(SceneConfig sceneConfig, KnownPaths knownPaths)
 {
     foreach (var sceneAction in sceneConfig.Actions)
     {
         Context.ActorOf(ActionActor.Props(sceneAction, knownPaths), $"{sceneAction.Name}-{Salt.Gen()}");
     }
 }
Пример #2
0
    public void LoadScene(uint fromSceneId, uint sceneId, bool showLoading = true, uint taskPreloadSceneId = 0, string loadingTips = "")
    {
#if UNITY_ANDROID && !UNITY_EDITOR
        //Network.NetChnlDebug.Instance.Debug();
        // Network.NetChnlDebug.Instance.Clear();
#endif
        //Messenger.Broadcast<uint>(MSG_DEFINE.MSG_SCENE_LOAD_START, sceneId);
        if (mIsLoading == true)
        {
            StopCurrent();
        }

        mIsLoading = true;
        mSceneId   = sceneId;
        mTaskNeedPreloadSceneId = taskPreloadSceneId;

        //如果有需要,可以加载场景相关配置(TO DO)
        mSceneConfig      = GameKernel.GetDataCenter().GetResBinData().GetSceneConfByID(sceneId);
        mCurrentSceneName = mSceneConfig.name;

        if (mSceneConfig != null)
        {
            mCurrentScene = mSceneConfig.sceneName;
        }

        ConnectProcess(showLoading, loadingTips);
        StartProcess();    //数据齐全 开始进程
    }
Пример #3
0
    //全部texture和mat放进各自的list里面
    void LoadAsset(string asset, string occid)
    {
        var depends = assetsDependDic[asset];

        for (int i = 0; i < depends.Count; i++)
        {
            //剔除shader
            if (!depends[i].Contains("shader") && !depends[i].Contains("FBX"))
            {
                var url = SceneConfig.GetInstance().prefix + depends[i].Substring(0, depends[i].IndexOf(".")).ToLower() + SceneConfig.GetInstance().suffix;
                if (!assetWaitingList.Contains(url))
                {
                    assetWaitingList.Add(url);
                    totalAssetNum++;
                    //根据assetName将url放进对应的list
                    if (FuncUtil.GetInstance().IsAssetTexture(depends[i]))
                    {
                        textureWaitingList.Add(url);
                    }
                    if (depends[i].Contains(".mat"))
                    {
                        matWaitingList.Add(url);
                    }
                    if (depends[i] == asset)
                    {
                        prefabWaitingList.Add(url);
                        mainAsseturlDict.Add(asset, url);
                    }
                }
            }
        }
    }
Пример #4
0
        private static Image GetPreview(int id)
        {
            SceneConfig sceneConfig = ConfigData.GetSceneConfig(id);

            ControlPlus.TipImage tipData = new ControlPlus.TipImage();
            tipData.AddTextNewLine(sceneConfig.Name, "Lime", 20);
            tipData.AddTextNewLine(string.Format("地图等级: {0}", sceneConfig.Level), sceneConfig.Level > UserProfile.InfoBasic.Level?"Red": "White");

            string[] icons = SceneBook.GetNPCIconsOnMap(id);
            if (icons.Length > 0)
            {
                tipData.AddTextNewLine("设施", "Green");
                foreach (string icon in icons)
                {
                    tipData.AddImage(HSIcons.GetIconsByEName(icon));
                }
            }

            if (sceneConfig.Func != "")
            {
                tipData.AddTextNewLine("特色", "Pink");
                string[] funcs = sceneConfig.Func.Split(';');
                foreach (string fun in funcs)
                {
                    tipData.AddImage(HSIcons.GetIconsByEName(string.Format("npc{0}", fun.ToLower())));
                }
            }
            return(tipData.Image);
        }
Пример #5
0
    static void GetSceneFenBaoAsset()
    {
        _levelConfigArray = LoadConfigFile <LevelConfigArray>("L_Resources/DataConfig/dataconfig_levelconfig");
        _sceneFenBaoArray = LoadConfigFile <SceneFenBaoArray>("L_Resources/DataConfig/dataconfig_scenefenbao");

        for (int i = 0; i < _sceneFenBaoArray.items.Count; i++)
        {
            SceneFenBao sceneFenBao  = _sceneFenBaoArray.items[i];
            uint        sceneId      = sceneFenBao.ID;
            uint        packageIndex = sceneFenBao.Pakage;

            if (sceneFenBao.Version != _fenBaoVersion)
            {
                continue;
            }

            SceneConfig sceneConfig = GetSceneConfig(sceneId);

            for (int j = 0; j < sceneConfig.Objects.Count; j++)
            {
                string abName = GetAssetOfABNameByPath(sceneConfig.Objects[j].Path);
                string abPath = _sourcePath + "/" + abName;
                BuildResPackageInfo("GetSceneFenBaoAsset", abPath, packageIndex);
            }
        }
    }
Пример #6
0
    /** 场景进入场景 */
    private void enterScene(SceneConfig config)
    {
        if (_currentSceneData != null)
        {
            exitScene();
        }

        SceneEditorData sData = _sceneDic.get(config.id);

        if (sData == null)
        {
            sData        = new SceneEditorData();
            sData.config = config;
            sData.read();

            _sceneDic.put(config.id, sData);
        }

        _currentSceneData = sData;

        _elementInstanceID = -1;

        SceneMapConfig mapConfig = SceneMapConfig.get(config.mapID);

        _originPos.setByIArr(mapConfig.origin);
        _sizePos.setByIArr(mapConfig.size);

        EditorSceneManager.sceneLoaded += onSceneLoaded;
        EditorSceneManager.LoadScene(ShineToolGlobal.assetSourceStr + "/" + mapConfig.source);
    }
Пример #7
0
    private IEnumerable DoCheckSceneConfig(string prefabName, SceneConfig config)
    {
        string shortName = System.IO.Path.GetFileNameWithoutExtension(prefabName);

        int count = 0;
        int total = config._RegionIdGroup.Count;

        for (int regionId = 0; regionId < config._RegionIdGroup.Count; ++regionId)
        {
            var regionConfig = config._RegionIdGroup[regionId];

            ++count;

            GameDataCheckMan.Instance.SetDesc(string.Format("{0} 检查Region Config: {1}", shortName, regionId));
            GameDataCheckMan.Instance.SetPartProgress((float)count / total);
            yield return(null);

            int[] idArray = new int[] { regionConfig.DayID, regionConfig.DuskID, regionConfig.MorningID, regionConfig.NightID };

            foreach (int id in idArray)
            {
                var data = GetEffectByID(id);
                if (data == null)
                {
                    continue;
                }

                var asset = AssetBundleCheck.Instance.LoadAsset(data._SkyBoxMatPath);
                if (asset == null)
                {
                    continue;
                }

                Material mat = GameObject.Instantiate(asset) as Material;
                if (mat == null)
                {
                    continue;
                }

                Shader shader = mat.shader;
                if (shader == null)
                {
                    continue;
                }

                AddSceneShader(shader.name, mat.shaderKeywords);

                //
                CheckShader_Standard(shader.name, mat.name, asset.name, prefabName);
                CheckShader_NoUsed_GrabPass(shader.name, mat.name, asset.name, prefabName);
                CheckShader_KriptoFXParticle(shader.name, mat.name, asset.name, prefabName, mat.shaderKeywords);
                CheckShader_Distortion(shader.name, mat.name, asset.name, prefabName, false);
                CheckShader_DepthTexture(shader.name, mat.name, asset.name, prefabName);
                CheckShader_CutoutBorder(shader.name, mat.name, asset.name, prefabName);
                CheckShader_NoOutput(shader.name, mat.name, asset.name, prefabName);
            }
        }

        yield return(null);
    }
Пример #8
0
    /** 设置配置 */
    public virtual void initSceneID(int id)
    {
        _config      = SceneConfig.get(id);
        _mapConfig   = SceneMapConfig.get(_config.mapID);
        _placeConfig = ScenePlaceConfig.getSync(id);

        //绑定驱动类型
        if (_config.instanceType == SceneInstanceType.ClientDriveSinglePlayerBattle)
        {
            driveType = SceneDriveType.ClientDriveAll;
        }
        else
        {
            driveType = CommonSetting.sceneDriveType;
        }

        originPos.setByIArr(_mapConfig.origin);
        sizePos.setByIArr(_mapConfig.size);
        endPos.x = originPos.x + sizePos.x;
        endPos.y = originPos.y + sizePos.y;
        endPos.z = originPos.z + sizePos.z;

        method.onSetConfig();

        preInit();
    }
Пример #9
0
    public void Init(SceneConfig cfg)
    {
        Clear();

        if (cfg == null)
        {
            return;
        }

        _Config       = cfg;
        _CurSceneGuid = _CurSceneGuid + 1;

        _BlocksRootTran = _Config.transform.Find("BlockObjects");
        if (null == _BlocksRootTran)
        {
            _BlocksRootTran = _Config.transform;
        }

        LightmapSettings.lightmapsMode = cfg._LightmapConfig._LightmapMode;

        var lightmapCount = cfg._TexCount;


        _SceneLightmapDatas = new LightmapData[lightmapCount];
        for (int i = 0; i < lightmapCount; i++)
        {
            _LightmapIdx2RefCountDic.Add(i, 0);
            _SceneLightmapDatas[i] = new LightmapData();
        }

        LoadAssetWithPlayerLight(cfg._LightmapConfig);
    }
        public OptionConfigurationInitModule(ISessionCondition sessionState, IUnityAssetManager assetManager)
        {
            _assetManager = assetManager;
            var allMaps = SingletonManager.Get <MapsDescription>();

            if (allMaps.CurrentLevelType != LevelType.BigMap)
            {
                return;
            }
            SceneConfig               config         = allMaps.BigMapParameters;
            string                    preStr         = config.PreMapName;
            int                       gridNum        = config.TerrainDimension;
            StreamingLevelStructure   streamingLevel = SingletonManager.Get <StreamingLevelStructure>();
            ScenesLightmapStructure   lightmap       = SingletonManager.Get <ScenesLightmapStructure>();
            ScenesIndoorCullStructure indoor         = SingletonManager.Get <ScenesIndoorCullStructure>();

            streamingLevel.Clear();
            lightmap.Clear();
            indoor.Clear();
            for (int i = 0; i < gridNum; i++)
            {
                for (int j = 0; j < gridNum; j++)
                {
                    string preName = preStr + "_" + preStr + " " + i + "x" + j;
                    AddConfigSystem <StreamingLevelStructure>(sessionState, preName + StreamingConfig.DataXMLName, StreamingConfig.StreamingABPath + preStr + StreamingConfig.StreamingDataABName, streamingLevel);
                    AddConfigSystem <ScenesLightmapStructure>(sessionState, preName + StreamingConfig.LightXMLName, StreamingConfig.StreamingABPath + preStr + StreamingConfig.StreamingLightDataABName, lightmap);
                    AddConfigSystem <ScenesIndoorCullStructure>(sessionState, preName + StreamingConfig.InDoorXMLName, StreamingConfig.StreamingABPath + preStr + StreamingConfig.StreamingInDoorABName, indoor);
                }
            }

            _sessionState = sessionState;
        }
Пример #11
0
        public SceneConfig GetSceneConfByID(uint ID)
        {
            if (m_sceneConfList == null)
            {
                m_sceneConfList = ProtobufDataConfigMgr.ReadOneDataConfig <SceneConfigArray>("dataconfig_sceneconfig");
            }

            if (dicSceneConfig.ContainsKey((int)ID))
            {
                return(dicSceneConfig[(int)ID]);
            }

            SceneConfig ret = null;

            for (int i = 0; i < m_sceneConfList.items.Count; ++i)
            {
                SceneConfig item = m_sceneConfList.items[i];
                if (item.id == ID)
                {
                    ret = item;
                    dicSceneConfig.Add((int)ID, ret);
                    break;
                }
            }

            return(ret);
        }
Пример #12
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.tag == "Player")
     {
         SceneConfig.KillPlayer();
     }
 }
Пример #13
0
 // Start is called before the first frame update
 private void OnCollisionEnter2D(Collision2D collision)
 {
     if (collision.collider.tag == "Player")
     {
         SceneConfig.KillPlayer();
     }
 }
Пример #14
0
        public void Initialize(AdditiveSceneComponent component)
        {
            if (config != null)
            {
                return;
            }

            config = Resources.Load <SceneManagerConfig>("SceneManagerConfig");
            if (config == null)
            {
                throw new Exception($"{this} Cant load scene manager config from Resources/SceneManagerConfig");
            }

            string parentSceneName = component.Config.SceneParent.Name;

            SceneConfig scene = config.Scenes.FirstOrDefault(x => x.Name.ToLowerInvariant() == parentSceneName.ToLowerInvariant());

            if (scene == null)
            {
                throw new Exception($"{this} no configuration for the current scene: {parentSceneName}");
            }

            if (scene.Async)
            {
                SceneManagement.LoadSceneAsync(scene.Name, UnityEngine.SceneManagement.LoadSceneMode.Single);
            }
            else
            {
                SceneManagement.LoadScene(scene.Name);
            }
        }
Пример #15
0
    void LoadSceneInfo(string sceneId)
    {
        SceneConfig sceneConfig = null;

        if (sceneDataCollection.sceneDic.TryGetValue(sceneId, out sceneConfig))
        {
            int size = sceneConfig.height;
            CreateCubes(size);

            strSceneSize = size.ToString();
            string[] data   = sceneConfig.textureData.Split(',');
            string[] rotate = sceneConfig.rotateData.Split(',');

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    var go = parent.transform.Find(i + "_" + j);
                    try
                    {
                        go.transform.localEulerAngles = new Vector3(0, 0, float.Parse(rotate[i * size + j]));
                    }
                    catch (Exception)
                    {
                    }
                    var tex = Resources.Load <Texture>("Textures/" + data[i * size + j]);
                    go.GetComponent <Renderer>().sharedMaterial.mainTexture = tex;
                }
            }
        }
    }
Пример #16
0
    public void FadeInWin(string name, SceneConfig config, DelegateType.FadeInBlackCallback callback)
    {
//         _loadingSceneName = name;
//         _loadingSceneConfig = config;
//        _callbackFadeIn = callback;
        UIManager.CreateWinByAction(UIName.LOADING_WIN);
    }
Пример #17
0
        private IEnumerator Load_Async(SceneLoaderRequest rLoadRequest)
        {
            var rSceneRequest = AssetLoadManager.Instance.LoadScene(rLoadRequest.sceneABPath, rLoadRequest.sceneAssetName);

            yield return(rSceneRequest.Coroutine);

            string rSceneName        = Path.GetFileNameWithoutExtension(rSceneRequest.assetName);
            var    rSceneLoadRequest = SceneManager.LoadSceneAsync(rSceneName, rLoadRequest.sceneLoadMode);

            yield return(rSceneLoadRequest);

            rSceneRequest.scene = SceneManager.GetSceneByName(rSceneName);
            SceneManager.SetActiveScene(rSceneRequest.scene);

            GameObject rSceneConfigGo = GameObject.Find(rSceneRequest.scene.name + "_Config");

            if (rSceneConfigGo != null)
            {
                SceneConfig rSceneConfig = rSceneConfigGo.GetComponent <SceneConfig>();
                Camera      rMainCamera  = Camera.main;
                rMainCamera.transform.position    = rSceneConfig.CameraPos;
                rMainCamera.transform.eulerAngles = rSceneConfig.CameraRotate;
                rMainCamera.backgroundColor       = rSceneConfig.CameraBGColor;
                rMainCamera.fieldOfView           = rSceneConfig.CameraFOV;
                rMainCamera.farClipPlane          = rSceneConfig.CameraFar;
                rMainCamera.nearClipPlane         = rSceneConfig.CameraNear;
            }
            AssetLoadManager.Instance.UnloadAsset(rLoadRequest.sceneABPath);
        }
Пример #18
0
    void Start()
    {
        wwwReady.Add(new WWW(shaderUrl));

        InitGameScene();
        MapUtil.GetInstance().LoadMapDataFromXML(SceneConfig.GetInstance().mapDataPath);
    }
Пример #19
0
    /** 请求进入场景 */
    public void applyEnterScene(int id, int lineID, int posID)
    {
        if (_isSwitching)
        {
            return;
        }

        SceneConfig config = SceneConfig.get(id);

        if (!GameC.player.role.checkRoleConditions(config.enterConditions, true))
        {
            Ctrl.warnLog("场景进入条件未达成");
            return;
        }

        //客户端单人副本
        if (config.instanceType == SceneInstanceType.ClientDriveSinglePlayerBattle)
        {
            preEnterScene(id, -1);
        }
        else
        {
            if (!BaseC.constlist.sceneInstance_canClientApplyEnter(config.instanceType))
            {
                Ctrl.warnLog("申请进入场景时,不可进入的场景");
                return;
            }

            ApplyEnterSceneRequest.create(id, lineID, posID).send();
        }
    }
Пример #20
0
 public override void Run()
 {
     foreach (StartConfig startConfig in StartConfigComponent.Instance.StartConfig.List)
     {
         SceneConfig sceneConfig = startConfig.GetComponent <SceneConfig>();
         SceneFactory.Create(Game.Scene, startConfig.Id, sceneConfig.Name, sceneConfig.SceneType);
     }
 }
 public void OnEnable()
 {
     mScript = target as SceneConfig;
     if (mScript.mInfo == null)
     {
         mScript.mInfo = new SceneConfigObject();
     }
 }
 public async ETVoid RunInner()
 {
     foreach (StartConfig startConfig in StartConfigComponent.Instance.StartConfig.List)
     {
         SceneConfig sceneConfig = startConfig.GetComponent <SceneConfig>();
         await SceneFactory.Create(Game.Scene, startConfig.Id, sceneConfig.Name, sceneConfig.SceneType);
     }
 }
Пример #23
0
 public static SceneConfig GetInstance()
 {
     if (instance == null)
     {
         instance = new SceneConfig();
     }
     return(instance);
 }
Пример #24
0
        /// <summary>
        /// 检查初始场景
        /// </summary>
        /// <returns></returns>
        public void checkFirstScene()
        {
            var first = DeployConfig.FirstScene;

            if (!SceneConfig.isStarted(sceneType) && sceneType != first)
            {
                sceneSys.gotoScene(first);
            }
        }
Пример #25
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        float fallSpeed = GetComponent <Rigidbody2D>().velocity.y;

        if (collision.collider.tag == "Player" && fallSpeed < -1)
        {
            SceneConfig.KillPlayer();
        }
    }
Пример #26
0
 public SceneRequest(SceneConfig sc, Reason reason, Action?onQueue = null, Action?onLoad = null,
                     Action?onFinish = null)
 {
     scene       = sc;
     onQueued    = onQueue;
     onLoaded    = onLoad;
     onFinished  = onFinish;
     this.reason = reason;
 }
Пример #27
0
 void LoadConfig(string fileName)
 {
     Clear();
     if (string.IsNullOrEmpty(fileName))
     {
         return;
     }
     m_Config = new SceneConfig();
     LoadOk   = m_Config.LoadFromFile(fileName);
 }
Пример #28
0
 void OnDestroy()
 {
     if (_SetLightMap)
     {
         LightmapSettings.lightmaps = null;
         _SetLightMap = false;
     }
     _LightMapAsset = null;
     _Config        = null;
     _LightMapDatas = null;
 }
        protected override void Execute(List <GameStateEntity> entities)
        {
            int sceneId = Contexts.sharedInstance.gameState.nextSceneId.Value;

            SceneConfig config = SceneConfigProvider.Instance.GetSceneConfig(sceneId);

            if (null != config)
            {
                Services.Instance.SceneService.LoadSceneAsync(config.Id, config.Name);
            }
        }
Пример #30
0
 void Awake()
 {
     // singleton pattern
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         Destroy(gameObject);
     }
 }