/** 设置配置 */ 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(); }
/** 场景进入场景 */ 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); }
/** 开始载入场景(第一阶段) */ public void startLoad(Action overFunc) { _overFunc = overFunc; _partOneComplete = false; _firstSet = new IntSet(); _firstSet.addAll(MarkResourceConfig.firstSceneLoadList); SceneMapConfig config = _scene.getMapConfig(); _firstSet.add(config.sourceT); _firstSet.add(config.musicT); if (CommonSetting.clientNeedScenePlaceEditor) { string scenePlaceEditorConfigPath = BaseC.config.getSplitConfigPath(CommonSetting.scenePlaceEditor, _scene.getConfig().id); _firstSet.add(LoadControl.getResourceIDByName(scenePlaceEditorConfigPath)); } if (CommonSetting.clientMapNeedGrid) { string splitConfigPath = BaseC.config.getSplitConfigPath(CommonSetting.mapInfo, config.id); _firstSet.add(LoadControl.getResourceIDByName(splitConfigPath)); } foreach (int v in config.sourceExListT) { _firstSet.add(v); } makeListEx(); doLoadOne(); }
/** 写合并项 */ private void writeMapCombine() { if (_sceneList == null) { return; } Ctrl.print("writeCombine"); BytesWriteStream stream = new BytesWriteStream(); IntObjectMap <SceneMapConfig> dic = SceneMapConfig.getDic(); stream.writeLen(dic.size()); foreach (int k in dic.getSortedKeyList()) { SceneMapConfig config = dic.get(k); stream.writeInt(config.id); if (CommonSetting.serverMapNeedGrid || CommonSetting.clientMapNeedGrid) { string path = getMapGridFilePath(config.id); byte[] bytes = FileUtils.readFileForBytes(path); if (bytes != null) { stream.writeLen(bytes.Length); stream.writeByteArr(bytes); } else { stream.writeLen(0); } if (CommonSetting.clientMapNeedGrid) { BytesWriteStream clientStream = new BytesWriteStream(); BaseC.config.writeConfigVersion(clientStream); clientStream.writeInt(config.id); if (bytes != null) { clientStream.writeLen(bytes.Length); clientStream.writeByteArr(bytes); } else { clientStream.writeLen(0); } byte[] buf = clientStream.getBuf(); int len = clientStream.length(); if (CommonSetting.configNeedCompress) { clientStream.compress(); } BytesReadStream rs = new BytesReadStream(clientStream.getBuf(), 0, clientStream.length()); rs.unCompress(); byte[] rBuf = rs.getBuf(); int rLen = rs.length(); if (len == rLen) { bool isSame = true; for (int i = 0; i < len; i++) { if (buf[i] != rBuf[i]) { isSame = false; break; } } } FileUtils.writeFileForBytesWriteStream(ShineToolGlobal.sourceCommonConfigDirPath + "/mapInfo/" + config.id + ".bin", clientStream); } } if (CommonSetting.serverMapNeedRecast) { string path = getMapNavFilePath(config.id); byte[] bytes = FileUtils.readFileForBytes(path); if (bytes != null) { stream.writeLen(bytes.Length); stream.writeByteArr(bytes); } else { stream.writeLen(0); } } } //写出服务器端配置 FileUtils.writeFileForBytesWriteStream(ShineToolGlobal.serverSavePath + "/config/mapInfo.bin", stream); //调用configExport ToolFileUtils.executeServerTool("configExport"); }