public StreamSceneOCController(OCParam param) { OcclusionRunningState.HasPVSData = true; OcclusionRunningState.OcclusionEnabled = SharedConfig.EnableCustomOC; _param = param as StreamOCParam; _scene = new MultiScene(String.Empty, _param.TerrainNamePattern, _param.TerrainDimension, _param.TerrainSize, _param.OCData); _param.LevelManager.AfterGoLoaded += OnGoLoad; _param.LevelManager.BeforeGoUnloaded += OnGoUnload; _pvsStats = new PVSStat[_param.TerrainDimension, _param.TerrainDimension]; for (int i = 0; i < _param.TerrainDimension; ++i) { for (int j = 0; j < _param.TerrainDimension; ++j) { var stat = new PVSStat() { Center = new Vector2(i + 0.5f, j + 0.5f), SceneName = String.Format(_param.TerrainNamePattern, i, j), Status = PVSStatus.UnLoaded }; _pvsStats[i, j] = stat; } } UpdatePVSCache(_param.InitPosition, true); }
public FixedSceneOCController(OCParam param) { OcclusionRunningState.HasPVSData = true; OcclusionRunningState.OcclusionEnabled = SharedConfig.EnableCustomOC; _param = param as FixedOCParam; _scene = new SingleScene(String.Empty, _param.SceneName, Index.InValidIndex); _scene.Load(_param.OCData, false); }
public InitOcclusionCullingControllerSystem(ISessionState sessionState, Contexts contexts) { _contexts = contexts; _sessionState = sessionState; _sessionState.CreateExitCondition(typeof(InitOcclusionCullingControllerSystem)); var mapDesc = SingletonManager.Get <MapsDescription>(); _levelType = mapDesc.CurrentLevelType; switch (_levelType) { case LevelType.SmallMap: _ocDataAssetInfo = new AssetInfo(OCDataAssetBundleName, mapDesc.SmallMapParameters.AssetName + "_oc"); _ocParam = new FixedOCParam() { OCData = null, SceneName = mapDesc.SmallMapParameters.AssetName, }; break; case LevelType.BigMap: _ocDataAssetInfo = new AssetInfo(OCDataAssetBundleName, String.Format(mapDesc.BigMapParameters.TerrainNamePattern, "oc", "oc") + "_oc"); var initPosition = _contexts.session.commonSession.InitPosition; _ocParam = new StreamOCParam() { OCData = null, InitPosition = initPosition, TerrainMin = mapDesc.BigMapParameters.TerrainMin, TerrainDimension = mapDesc.BigMapParameters.TerrainDimension, TerrainSize = mapDesc.BigMapParameters.TerrainSize, TerrainNamePattern = mapDesc.BigMapParameters.TerrainNamePattern, UnloadRadiusInGrid = 2f, LoadRadiusInGrid = 1.5f, LevelManager = _contexts.session.commonSession.LevelManager, }; break; default: _ocDataAssetInfo = AssetInfo.EmptyInstance; break; } }
public static IOcclusionCullingController CreateController(LevelType levelType, OCParam param) { if (param.OCData != null) { switch (levelType) { case LevelType.SmallMap: return(new FixedSceneOCController(param)); case LevelType.BigMap: return(new StreamSceneOCController(param)); } } return(new DummyOCController()); }